2008-07-23 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * verify.c (do_cast): Do boxing for generic arguments as well.
4
5         * class.c (is_nesting_type): Drop generic instantiations before
6         checking for nesting.
7
8         * class.c (can_access_instantiation): Allow access to generic
9         arguments.
10
11 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
12
13         * verify.c (verify_class_for_overlapping_reference_fields):
14         On some cases, the field size might be zero, guard against that.
15         Fix the explicit layout check to work as expected.
16
17 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
18
19         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
20         mono_thread_resume () during shutdown, since the thread we want to abort
21         might be suspended.
22
23 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
24
25         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
26         warning.
27
28         * debug-mono-symfile.c: Fix a warning.
29
30         * mono-perfcounters.c (get_cpu_times): Fix a warning.
31
32         * object.c (mono_class_vtable): Check if exception_type is set, and return
33         NULL as defined by the function comments.
34
35 2008-07-22  Mark Probst  <mark.probst@gmail.com>
36
37         * mempool.c: Use malloc for every single mempool allocation if the
38         configure option is set.  This makes it easier to track mempool
39         allocations with tools like Valgrind.
40
41 2008-07-22  Jb Evain  <jbevain@novell.com>
42
43         * reflection.c (create_dynamic_mono_image): emit the same
44         metadata version that SL2 does when creating a SL2 image.
45
46 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
47
48         * icall-def.h:
49         * icall.c: New icall System.Enum:get_hashcode. This function
50         avoids the overhead of boxing the enum to the underlying type.
51
52 2008-07-21  Mark Probst  <mark.probst@gmail.com>
53
54         * reflection.c (mono_method_get_object): Don't let static RGCTX
55         invoke wrappers get into MonoReflectionMethods.
56
57 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
58
59         * object-internals.h:
60         * object.c: New mono_runtime_class_init_full function
61         that makes throwing the exception optinal.
62
63         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
64         for the case where the exception object is supplied.
65
66 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
67
68         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
69         old ld versions.
70
71         Contributed under MIT/X11 license.
72
73 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
74
75         * string-icalls.c (ves_icall_System_String_InternalSplit):
76         Optimize array allocation by caching the MonoClass of the
77         array type.
78
79         * icall.c (ves_icall_Type_GetMethodsByName): Same.
80
81         * reflection.c (mono_param_get_objects): Same.
82
83 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * icall-def.h:
86         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
87         It inflates the given type using the class context.
88
89 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
90
91         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
92         the vtable if it already exists.
93
94         * object-internals.h: Add mono_class_try_get_vtable as part of the
95         internal API.
96
97         * reflection.c (mono_type_get_object): Use the MonoObject from the
98         vtable when possible. Reduces locking contention on reflection heavy
99         code.
100
101 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
102
103         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
104         g_bit_nth_msf () since that macro is not implemented in eglib.
105
106 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
107
108         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
109         on platforms which do not support it.
110
111 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
112
113         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
114
115 2008-07-11  Martin Baulig  <martin@ximian.com>
116
117         * mono-debug-debugger.h
118         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
119
120         * mono-debug-debugger.c
121         (_mono_debugger_interruption_request): New global volatile variable.
122         (mono_debugger_check_interruption): New public function.
123
124         * threads.c
125         (mono_thread_current_check_pending_interrupt): Call
126         mono_debugger_check_interruption().
127         (mono_thread_interruption_checkpoint_request): Likewise.
128
129 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
130
131         * verify.c: Add more type checks for loaded types. Verify the result
132         handle from ldtoken.
133
134 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
135
136         * loader.c (field_from_memberref): Don't crash if the field
137         wasn't found.
138
139 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * verify.c: Verify if type and method instantiations
142         don't have invalid VAR or MVAR arguments.
143
144 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
145
146         * verify.c: Fix double free of function pointer list.
147
148 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
149
150         * object.c (mono_string_to_utf8): Comment the new code as it
151         breaks under eglib.
152
153 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
154
155         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
156
157 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
158
159         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
160           is not throw too many times.
161
162         Code is contributed under MIT/X11 license.
163
164 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
165
166         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
167         debugging is turned off.
168
169 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
170
171         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
172
173 2008-07-04  Mark Probst  <mark.probst@gmail.com>
174
175         * class-internals.h, class.c: Added new generic sharing option:
176         Share only stuff in System.Collections.Generic, which is now the
177         default.
178
179 2008-07-04  Mark Probst  <mark.probst@gmail.com>
180
181         * generic-sharing.c, class-internals.h: New function for getting a
182         generic method in a generic class given the corresponding method
183         for a different instantiation of the class.  Partly refactored
184         from mini-trampolines.c.
185
186         * class.c: Make sure generic methods have a class_inst if they are
187         part of a generic class.
188
189         * metadata.c (mono_type_stack_size_internal): Handle type
190         variables.
191
192 2008-07-04  Mark Probst  <mark.probst@gmail.com>
193
194         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
195         Signifies whether information on the this/vtable/mrgctx variable
196         is available.
197
198 2008-07-04  Mark Probst  <mark.probst@gmail.com>
199
200         * object.c, object-internals.h, icall.c: New function
201         mono_delegate_ctor_with_method(), which does the same as
202         mono_delegate_ctor(), but takes an explicit method argument
203         instead of taking the method from the jit info.
204
205         * marshal.c: When creating a delegate with an inflated method take
206         the "this" argument as the target class for the castclass.
207
208 2008-07-03  Mark Probst  <mark.probst@gmail.com>
209
210         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
211         mono_jit_info_table_find() to perform very badly in some cases.
212
213 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
214
215         * icall.c (type_from_typename): Handle 'string'.
216
217         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
218         wrappers into the wrapper_hash, since the key is not a MonoMethod.
219
220 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
221
222         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
223
224         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
225         number of available managed allocator types.
226
227         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
228         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
229
230 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
231
232         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
233         which is a low level lock protecting just the 'jit_code_hash' hash table.
234
235         * domain.c: Initialize+cleanup jit_code_hash_lock.
236         
237 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
238
239         * coree.c (mono_load_coree): Set coree_module_handle global variable only
240         after initialization.
241
242         * coree.h: Make MonoFixupExe internal.
243
244         Contributed under MIT/X11 license.
245
246 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
247
248         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
249         because that is platform independent. Check NumberOfRvaAndSizes in PE32
250         as well.
251         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
252         image being loaded is a CLI image and _CorValidateImage gets called.
253
254         * coree.h: Add MonoLoadImage.
255
256         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
257         instead of LoadLibrary.
258
259         Contributed under MIT/X11 license.
260
261 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
264         for any primitive type.
265
266 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
267
268         * object.c (mono_array_new_specific): Optimize this and the other allocation
269         functions a bit.
270         
271         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
272         domains too if mono_dont_free_domains is set.
273
274         * domain-internals.h (mono_dont_free_domains): New internal option controlling
275         whenever to free appdomain data after it has been unloaded.
276
277         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
278         
279 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
280
281         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
282         (mono_method_get_equivalent_method): Fix a warning.
283
284         * object.c (mono_message_init): Avoid looking up array types for each call.
285
286 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
287
288         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
289         call.
290
291         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
292         even more.
293
294         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
295         each iteration.
296
297         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
298         fields of an enum.
299
300 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
301
302         * object.c (mono_value_box): Fix boxing of nullables.
303
304 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
305
306         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
307         mono_module_handle that is defined by the linker; no initialization required.
308         * coree.h: Remove mono_module_handle, add __ImageBase, update
309         mono_image_open_from_module_handle.
310         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
311         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
312         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
313         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
314         to 4 GB away from image base address. IA64 version is not tested but was very
315         easy to implement and should work if we ever need it.
316         * domain.c (mono_init_internal): Avoid system error message boxes.
317         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
318         with has_entry_point. Handle do_mono_image_load fauilre correctly.
319         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
320         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
321         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
322
323         Contributed under MIT/X11 license.
324
325 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
328         as part of the private mono API.
329         
330         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
331         Do proper argument checking for methods that belong to generic classes.
332         Do proper type resolution for GMFH/2.
333         Fixes #377324.
334         
335 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
336
337         * verify.c (do_switch): Fix a memory corruption bug with
338         the jump index is out of bound.
339
340 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * verify.c: Disable debug code.
343
344 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
345
346         * reflection.c (mono_image_get_methodbuilder_token): Use
347         mono_image_get_methodspec_token_for_generic_method_definition
348         instead of mono_image_get_memberref_token. We cache more memberef
349         entries now.
350
351 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * verify.c: Inflate exception clause types.
354         Fixes #402606.
355         
356 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
357
358         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
359         name.
360
361         * reflection.c (mono_image_get_ctorbuilder_token): Same.
362
363         * reflection.c (mono_image_create_method_token): Same.
364
365 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
366
367         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
368         It does the same as mono_image_get_methodref_token but works on
369         MethodBuilder.
370
371         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
372         and always generate a methodspec. This follows the old behavior and fixes
373         the regressions in System.Core. 
374
375 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
376
377         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
378         don't event mono_class_get () succeeds. Fixes #402182.
379
380 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * metadata-internals.h: Added MonoDynamicImage::methodspec
383         hashtable to store methodspec tokens created for MethodBuilders.
384
385         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
386         MethodBuilders as open instantiations if a methodspec was requested.
387
388         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
389
390         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
391
392         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
393
394         Fixes bug #349190.
395
396 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
397
398         * loader.c (method_from_methodspec): Avoid crashing if the
399         method lookup fails.
400
401 2008-06-20  Dick Porter  <dick@ximian.com>
402
403         * socket-io.c (get_socket_assembly): Cope with Moonlight network
404         classes being in a different assembly.  Fixes bug 399184.
405
406 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
407
408         * loader.c (mono_loader_init): Make this callable multiple times.
409         (mono_dllmap_insert): Call mono_loader_init () so this works even before
410         the runtime is initialized. Fixes #401755.
411
412 2008-06-19  Dick Porter  <dick@ximian.com>
413
414         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
415         Fixes bug 349688.
416
417 2008-06-19  Dick Porter  <dick@ximian.com>
418
419         * socket-io.c:
420         * icall-def.h: Implement Socket generic Send() and Receive()
421         methods.  Fixes bug 395168.
422
423 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
424
425         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
426
427         Contributed under MIT/X11 license.
428
429 2008-06-18  Martin Baulig  <martin@ximian.com>
430
431         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
432         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
433         set to 80.0.  The debugger <-> runtime interface is now frozen as
434         well.   
435
436         * mono-debug.c
437         (mono_debug_debugger_version): Bump to 4.
438
439 2008-06-18  Martin Baulig  <martin@ximian.com>
440
441         * debug-mono-symfile.c
442         (load_symfile): Don't check the minor version.
443
444         * debug-mono-symfile.h: Bump the version number to 50.0.
445
446 2008-06-18  Martin Baulig  <martin@ximian.com>
447
448         * debug-mono-symfile.c
449         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
450         minimum required version.
451
452 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
453
454         * reflection.c (mono_custom_attrs_from_property): Fix support for
455         retriveving cattrs of dynamic inflated generic types.
456
457         * reflection.c (mono_custom_attrs_from_event): Same.
458
459         * reflection.c (mono_custom_attrs_from_field): Same;
460
461         * reflection.c (typebuilder_setup_events): Same cattrs of events.
462
463         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
464         Moved to metadata.c.
465
466         * metadata.c: New functions to retrive the equivalent field, event
467         of property from the generic type definition.
468
469         * metadata-internals.h: Added new functions from metadata.c.
470
471 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
472
473         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
474         to cached in a mempool is used.
475
476         * metadata.c (free_generic_class): In some situations field generic_info type
477         is not properly dup'ed and leads to double free'ing.
478
479         Fixes #400643.
480
481 2008-06-17  Mark Probst  <mark.probst@gmail.com>
482
483         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
484         this arguments (will be needed later for generic methods).
485         Collect stats.
486
487 2008-06-17  Mark Probst  <mark.probst@gmail.com>
488
489         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
490         Create a static RGCTX invoke wrapper for methods which require it.
491
492 2008-06-17  Mark Probst  <mark.probst@gmail.com>
493
494         * object.c, class-internals.h: New function for checking whether
495         an individual field is special static.
496
497 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
498
499         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
500         linear search since the table is sorted.
501
502         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
503         Fixes #324180.
504
505 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
506
507         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
508         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
509
510         * gc.c (mono_domain_finalize): Allow an infinite timeout.
511
512         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
513         
514         * threads.c (mono_thread_request_interruption): Get rid of locking, use
515         InterlockedCompareExchange to query and modify 
516         thread->interruption_requested.
517
518         * object-internals.h (struct _MonoThread): Change interruption_requested
519         to a gint32 so it can be modified by atomic operations. Add 
520         'critical_region_level' from the managed side, change small_id to a guint32,
521         add new set of 'unused' fields.
522
523         * appdomain.c: Bump corlib version.
524
525 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
526
527         * class.c (mono_class_from_name): Search modules as well. Fixes
528         #322332.
529
530 2008-06-13  Mark Probst  <mark.probst@gmail.com>
531
532         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
533         templates.  Templates are generalized with an additional type_argc
534         argument.  RGCTX templates have type_argc==0, MRGCTX templates
535         have type_argc>0.
536
537         * domain-internals.h, domain.c: New hash table for looking up
538         MRGCTXs.
539
540         * metadata.c, metadata-internals.h: Rename hash and equal
541         functions for MonoGenericInst's and make them public.
542
543         * class-internals.h: New data structures for the MRGCTX.  Macros
544         for distinguishing slots in the RGCTX and the MRGCTX.
545
546 2008-06-13  Mark Probst  <mark.probst@gmail.com>
547
548         * object.c (mono_method_get_imt_slot): Put the same methods of
549         different instantiations of the same generic interface in the same
550         IMT slots, to make generic sharing simpler.
551
552 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
553
554         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
555
556         * metadata.c (mono_metadata_field_info_with_mempool): Added.
557         This function works just like mono_metadata_field_info, but
558         accept a mempool as argument to be used allocating memory.
559
560         * marshal.c (mono_marshal_load_type_info): Use new function
561         to load marshal data into image mempool.
562
563 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
564
565         * class.c (mono_class_inflate_generic_type_with_mempool):
566         This function allows to inflate a generic type using
567         a mempool.
568
569         * class.c (inflate_generic_type): Take a mempool as argument
570         and use it to do type dup'ing.
571
572         * class.c (mono_class_setup_fields): Field type for generic
573         generic classes are allocated from the image mempool.
574
575         * metadata.c (free_generic_class): Inflated field type is
576         now allocated in the image mempool.
577
578 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * threads.c (thread_cleanup): Free MonoThread::name.
581
582 2008-06-12  Marek Habersack  <mhabersack@novell.com>
583
584         * appdomain.c (ensure_directory_exists): avoid unnecessary
585         mkdir(2) calls when the shadow directory already exists.
586         (mono_make_shadow_copy): copy also satellite assemblies from the
587         private bin directories.
588
589 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
590
591         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
592         
593         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
594         a page boundary. Fixes #396219.
595
596 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
599         due to double-checked locking.
600
601 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
602
603         * assembly.c (build_assembly_name): Release memory on failure.
604
605         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
606
607 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
608
609         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
610         memory on failure.
611
612 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
613
614         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
615         memory on failure.
616
617 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * loader.c (field_from_memberref): Check if field signature type is equal
620         to the non-inflated type of the field. Fixes #398980.
621
622 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
623
624         * assembly.c (mono_assembly_load_from_full): Call 
625         mono_assembly_load_friends () outside the assemblies lock, since it can
626         acquire the loader lock. Fixes #323696.
627
628         * reflection.c (resolve_object): Inflate the inst with the context for
629         FieldOnTypeBuilderInst. Fixes #399010.
630
631 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
632
633         * reflection.c (mono_image_get_field_on_inst_token): Don't
634         inflate the field to encode it's signature. If it's a
635         VAR or MVAR it should stay that way in the signature.
636         Fixes #399047.
637
638 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
639
640         * reflection.c (resolve_object): Release memory of inflated types.
641
642 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * loader.c (mono_method_get_signature_full): Remove assert about
645         loading a methodspec to a generic method. We have such methods, such as
646         System.Threading.Interlocked::CompareExchange<T>.
647         This assert was removed since it crashes the verifier when it checks
648         methods calling CompareExchange<T>.
649
650 2008-06-10  Marek Safar  <marek.safar@gmail.com>
651
652         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
653         of Type array and not MonoType.
654
655 2008-06-10  Marek Habersack  <mhabersack@novell.com>
656
657         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
658         <lupus@ximian.com>
659
660 2008-06-10  Martin Baulig  <martin@ximian.com>
661
662         * debug-mono-symfile.h
663         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
664         changes to the file format, but we were generating incorrect
665         source file indices in the line number table due to a bug, which
666         made backtraces report an incorrect source file.
667
668 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
669
670         * mono-debug.c: Moved mono_debug_free_method_jit_info from
671         mini/debug-mini.c to here.
672
673         * mono-debug.c (il_offset_from_address): Free memory from find_method.
674
675         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
676         use it to release structs returned by mono_debug_find_method.
677
678 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
679
680         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
681         since it needs to set method->slot for all interface methods.
682
683 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
684
685         * class-internals.h: Forgot to add.
686
687 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
688
689         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
690
691         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
692         Lookup the custom attributes from property_hash.
693
694         * reflection.c (mono_save_custom_attrs): Save the custom attributes
695         in property_hash. Allocate all data using the image mempool.
696
697         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
698         for dynamic_custom_attrs to checks if the image is dynamic.
699
700 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
701
702         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
703         assemblies array.
704         
705         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
706         runtime functions while holding the domain assemblies lock.
707
708 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
709
710         * verify.c: Reapplied the last bit of the reverted changes.
711
712 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
713
714         * verify.c: Reapplied more of the reverted changes.
715
716 2008-06-09  Martin Baulig  <martin@ximian.com>
717
718         * debug-mono-symfile.c (load_symfile): Check the major version
719         first; if it's wrong, don't print the minor version in the error message.
720
721 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
722
723         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
724         lock instead of the domain lock to avoid deadlocks, since the thread might
725         already hold the loader lock.
726
727         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
728         (mono_thread_attach): Ditto.
729
730         * monitor.c: Use a TLS variable for holding the current thread id instead
731         of calling pthread_self ().
732         (mono_monitor_init_tls): New internal function to initialize the TLS
733         variable.
734         (mono_monitor_try_enter_internal): Put the owner == id check after the
735         owner == 0 check.
736
737         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
738         missed optimizations when using gcc-4.3.
739
740 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
741
742         * reflection.c (mono_dynamic_image_free): Free the memory
743         used by MonoGenericParam in MonoDynamicImage::gen_param.
744
745         * reflection.c (mono_reflection_setup_generic_class): Allocate
746         container from mempool.
747
748         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
749         container from mempool.
750
751 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
752
753         * threads.c (mono_set_pending_exception): New internal function to set the
754         pending exception of the current thread.
755         (mono_thread_get_and_clear_pending_exception): Check for 
756         thread->pending_exception as well.
757
758         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
759
760         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
761         it can trigger a collection.
762
763 2008-06-06  Martin Baulig  <martin@ximian.com>
764
765         Merged the `debugger-kahalo' branch.
766
767         * mono-debug.h
768         (MONO_DEBUGGER_VERSION): Bumped to 72.
769
770         * debug-mono-symfile.h
771         (MonoSymbolFileMethodIndexEntry): Removed.
772         (MonoSymbolFileMethodEntry): New public typedef.
773         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
774         (MonoSymbolFileSourceEntry): Remove everything except `index' and
775         `data_offset'.
776         (MonoSymbolFileMethodEntry): Removed.
777         (MonoSymbolFileLexicalBlockEntry): Removed.
778         (MonoSymbolFileLineNumberEntry): Removed.
779         (MonoDebugLexicalBlockEntry): Removed.
780         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
781         removed `num_il_offsets' and `il_offsets'.
782         (MonoSymbolFile): Replace `version' with `major_version' and
783         `minor_version'.
784         (MONO_SYMBOL_FILE_VERSION): Replace with
785         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
786         `MONO_SYMBOL_FILE_MINOR_VERSION'.
787
788         * debug-mono-symfile.c
789         (mono_debug_symfile_lookup_location): Add support for the new line
790         number table format.
791
792 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
793
794         * metadata.c (free_generic_class): Release the inflated
795         MonoClass of dynamic generic classes if it's not a generic
796         type definition.
797
798 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
799
800         * verify.c: Reapplied more of the reverted changes.
801
802 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
803
804         * reflection.c (lookup_custom_attr): Clean the cached flag or
805         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
806         for SRE types.
807
808 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
809
810         * verify.c: Reapplied a small part of the reverted changes.
811
812 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
813
814         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
815
816         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
817         previously in managed code.
818         (mono_monitor_exit): Ditto.
819         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
820
821         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
822         the managed definition.
823
824 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
825
826         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
827
828 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
829
830         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
831         
832         * monitor.c: Add some micro optimizations.
833
834         * icall.c (type_from_typename): Handle 'bool'.
835
836 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
837
838         * verify.c: Implement constructor verification per P III 1.8.1.4.
839         Fixes #396716.
840
841 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
842
843         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
844         holding the assemblies lock here too.
845
846 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
847
848         * verify.c: Kill stack_top function.
849
850 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
851
852         * verify.c: Kill stack_get function.
853
854 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
855
856         * verify.c (mono_method_verify): Last change broke the build. Fixed.
857
858 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
859
860         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
861         more reliable.
862
863         * verify.c (mono_method_verify): Inflate params and locals to avoid
864         mismatch when checking for compatibility.
865
866 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
867
868         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
869         Length prefix should be size in bytes. Fix bug #339530.
870         
871         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
872         Length prefix should be size in bytes. Fix bug #339530.
873
874         Code is contributed under MIT/X11 license.
875
876 2008-06-05  Bill Holmes <billholmes54@gmail.com>
877
878         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
879
880         Contributed under MIT/X11 license.
881
882 2008-06-05  Martin Baulig  <martin@ximian.com>
883
884         * mono-debug-debugger.c
885         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
886
887 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
888
889         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
890         while holding the assemblies lock to prevent deadlocks. Handle the case
891         where the search hook returns NULL but the assembly was still loaded.
892         Fixes #323696.
893
894         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
895         modify domain state.
896
897 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
898
899         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
900         * Makefile.am (pedump_LDADD): Post-process object files and
901         add dtrace-generated object file, if necessary.
902
903         Code is contributed under MIT/X11 license.
904
905 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
908
909 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
910
911         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
912
913 2008-06-04  Mark Probst  <mark.probst@gmail.com>
914
915         * threads.c: Try to free everything from the delayed free table
916         when shutting down threads, and set the variable to NULL after the
917         table is freed so that calling
918         mono_thread_hazardous_try_free_all() when shutting down the root
919         domain doesn't crash.
920
921 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
922
923         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
924         the caller if resulting type was inflated.
925
926         * class.c (mono_class_create_from_typespec): Free the MonoType if it
927         was inflated.
928
929         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
930
931
932 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
933
934         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
935         class library tests.
936
937         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
938         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
939         #396989.
940
941 2008-06-04  Mark Probst  <mark.probst@gmail.com>
942
943         * domain.c, domain-internals.h: The JIT infos are now freed by the
944         JIT info table code.  They are freed immediately if there only a
945         single JIT info table in circulation.  If there is more, the free
946         is delayed via a queue.
947
948         * threads.c, threads-types.h: New hazard pointer function for
949         freeing all freeable delayed items in one sitting.
950
951 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
952
953         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
954
955         * reflection.c (typebuilder_setup_properties): Same.
956
957         * reflection.c (typebuilder_setup_events): Same.
958
959 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
960
961         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
962         and use it for allocating memory.
963
964         * reflection.c (mono_marshal_spec_from_builder): Same.
965
966         * reflection.c: Change code to use new signatures.
967
968         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
969
970 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
971
972         * decimal.c (rescale128): Put back one line which was accidently commented
973         out.
974         
975         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
976         to cause crashes.
977
978 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
979
980         * reflection.c (mono_reflection_generic_class_initialize): Name must
981         be always malloc'ed so we can free it later on. Do this for field, property
982         and event.
983
984         * metadata.c (free_generic_class): Free field, property and event names.
985
986 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
987
988         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
989         instead of g_memdup.
990
991         * reflection.c (typebuilder_setup_fields): Same.
992
993 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
994
995         * decimal.c (rescale128): Optimize this function a bit more.
996
997 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
998
999         * metadata.c (free_generic_class): Release some memory from
1000         SRE generic classes.
1001
1002 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1003
1004         * reflection.c (mono_image_get_generic_field_token): No reference
1005         to name is kept, free it.
1006
1007         * reflection.c (mono_reflection_generic_class_initialize): Free
1008         more memory of the inflated field.
1009
1010 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
1013         code.
1014
1015 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1016
1017         * reflection.c (mono_dynamic_image_free): Release memory used by
1018         MonoDynamicImage::array_methods elements.
1019
1020         * reflection.c (assembly_add_win32_resources): Release memory after
1021         encoding.
1022
1023 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1024
1025         * decimal.c (log2_32): Use an optimized version for this function too.
1026         
1027         * decimal.c (log2_64): Fix this on 32 bit machines.
1028
1029 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1030
1031         * class.c (mono_dup_array_type): Implement allocation using a mempool.
1032
1033         * class.c (mono_metadata_signature_deep_dup): Same.
1034
1035         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
1036         a mempool.
1037
1038         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
1039
1040         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
1041
1042         * metadata-internals.h: Added mono_metadata_signature_dup_full.
1043
1044         * class-internals.h: Update signatures to take a MonoMemPool.
1045
1046 2008-06-02  Dick Porter  <dick@ximian.com>
1047
1048         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
1049         * icall-def.h: Add
1050         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
1051         FormatMessage API to get the error text.  Fixes bug 321827.
1052
1053 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * decimal.c: Add some micro optimizations to make decimal operations faster.
1056
1057 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1058
1059         * reflection.c (method_encode_clauses): Take a mempool
1060         as parameter and use it to allocate the clause array.
1061
1062         * reflection.c (mono_image_get_field_on_inst_token): Free
1063         the inflated type after encoding it.
1064
1065         * reflection.c (mono_dynamic_image_free): Free each element
1066         of MonoDynamicImage::gen_params.
1067
1068         * reflection.c (reflection_methodbuilder_to_mono_method):
1069         Allocate the generic param array from the mempool.
1070         Allocate signature params from the mempool.
1071
1072         * reflection.c (mono_reflection_generic_class_initialize):
1073         Free inflated fields after been used.
1074
1075 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * icall.c: Reapply the memory leak fixes as they no
1078         longer make mono crash.
1079
1080 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1081
1082         * reflection.c (mono_type_get_object): Don't store the suplied
1083         MonoType with type_hash. A caller which pass a type that
1084         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
1085         might end with a pointer to freed memory.
1086         The solution is to use byval_arg or this_arg from the associated
1087         MonoClass of the supplied type.
1088
1089 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * icall.c: Revert the rest of the last change as it breaks the build too.
1092
1093 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1094
1095         * icall.c: Revert a leak fix as it's breaking the build.
1096
1097 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1098
1099         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
1100
1101 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1102
1103         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
1104
1105 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1106
1107         * icall.c: Fix some memory leaks.
1108
1109 2008-05-29  Dick Porter  <dick@ximian.com>
1110
1111         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
1112         async socket operations from the pending list when a socket
1113         closes.  Leaving it until the threadpool services the event
1114         exposes a race condition when a socket descriptor is reused.
1115         Fixes bug 377589.
1116
1117 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1118
1119         * object.c: Fix negative index check for array alocation.
1120
1121 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1122
1123         * icall.c, marshal.c: Delegate wrappers should skip visibility.
1124         This check is performed by the verifier for IL created delegates
1125         and by Delegate::CreateDelegate for programatically created ones.
1126         Fixes #372406.
1127
1128 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
1131         Fix code to use mono_array_size_t instead of int.
1132
1133         Based on patch by Luis F. Ortiz.
1134         Contributed under X11 license.
1135         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1136
1137 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1138
1139         * icall.c: Added ves_icall_System_Array_GetLongLength and
1140         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
1141         arrays.
1142
1143         * icall.h: Export both new functions.
1144
1145         Based on patch by Luis F. Ortiz.
1146         Contributed under X11 license.
1147         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1148
1149 2008-05-28  Martin Baulig  <martin@ximian.com>
1150
1151         The debugger now requires exactly r103463.
1152
1153         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
1154         This version is not supported by the debugger, wait for 72.
1155
1156 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1157
1158         * object.h: Changed array related functions to use
1159         mono_array_size_t instead of guint32. Forgot to commit this file.
1160
1161         Patch by Luis F. Ortiz.
1162         Contributed under X11 license.
1163         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1164
1165
1166 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1167
1168         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
1169         don't define it. Use the number literal instead.
1170
1171 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1172
1173         * icall.c: Changed array related functions to use
1174         mono_array_size_t instead of guint32.
1175
1176         * icall.c (ves_icall_System_Array_GetLength): Check for length
1177         overflow under MONO_BIG_ARRAYS.
1178
1179         Based on patch by Luis F. Ortiz.
1180         Contributed under X11 license.
1181         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1182
1183 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
1186
1187         Based on patch by Luis F. Ortiz.
1188         Contributed under X11 license.
1189         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1190
1191 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * object.c, object.h: Changed array related functions to use
1194         mono_array_size_t instead of guint32.
1195
1196         Patch by Luis F. Ortiz.
1197         Contributed under X11 license.
1198         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1199
1200 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * object.h: Introduced mono_array_size_t typedef. This must be used
1203         in all places an array length is expected. This is 64bits wide if
1204         MONO_BIG_ARRAYS is enabled.
1205
1206         Patch by Luis F. Ortiz.
1207         Contributed under X11 license.
1208         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1209
1210 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * security-manager.c class.c: Set the class exception info by calling
1213         mono_class_set_failure ().
1214
1215         * class.c (mono_class_get_exception_data): New accessor function.
1216         (mono_class_set_failure): Store exception_data in the property hash.
1217
1218         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
1219         the struct as a property.
1220
1221         * loader.c (mono_get_method_full): Store the lookup result for method
1222         tokens in method_cache, the others in methodref_cache to decrease the memory
1223         usage of hash tables.
1224
1225         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
1226         (mono_image_init): method_cache is lazy inited now.
1227
1228         * metadata-internals.h (struct _MonoImage): Change method_cache to
1229         a MonoValueHashTable, add a separate methodref_cache.
1230
1231 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
1232
1233         * number-formatter.h: Fix tables to avoid arithemtic overflow in
1234           Double.ToString as exposed by Bug #383531.
1235
1236 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * number-formatter.h: Make some tables static.
1239
1240         * class.c (mono_method_set_generic_container): New accessor function.
1241         (mono_method_get_generic_container): Ditto.
1242
1243         * class-internals.h (struct _MonoMethod): Remove rarely used 
1244         'generic_container' field, store it in the property hash instead. Add 
1245         'is_generic' boolean field instead.
1246
1247         * image.c (mono_image_init): Initialize property_hash.
1248         (mono_image_close): Destroy property_hash.
1249
1250         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
1251         hold rarely used fields of runtime structures belonging to this image.
1252
1253         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
1254         to get/set method->generic_container.
1255
1256         * loader.c (mono_get_method_from_token): Avoid loading the method header for
1257         generic methods.
1258
1259 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * class.c (mono_class_inflate_generic_method_full): Don't increase
1262         mono_stats.inflated_method_count for methods found in the cache.
1263
1264         * threads.c (mono_thread_request_interruption): Add a comment about 
1265         QueueUserAPC ().
1266
1267 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
1270         interface_offsets_packed table.
1271         
1272         * class.c (mono_class_init): Remove some dead code.
1273
1274         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
1275         mono_class_setup_vtable () when CAS is active to detect security problems.
1276
1277 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
1280
1281         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
1282         parameters as it's irrelevant for delegate checking.
1283
1284 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
1287
1288         * class.c (mono_class_init): Control the creation of a generic vtable using
1289         a global which is true by default, but set to false by the runtime startup code.
1290         
1291         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
1292         Disabled for now since it breaks the embedding API.
1293         Move the setup of class->methods for arrays to mono_class_setup_methods ().
1294         (mono_class_setup_methods): Add a memory barrier.
1295
1296         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
1297         when mono_class_init () doesn't compute the generic vtable.
1298         
1299 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
1300         * profiler.c: Added mono_profiler_install_statistical_call_chain,
1301         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
1302         to support call chains (backtrace) in the stat profiler.
1303         * profiler.c, profiler-private.h: Likewise.
1304
1305 2008-05-22  Mark Probst  <mark.probst@gmail.com>
1306
1307         * generic-sharing.c: Init generic class when a method of it is
1308         requested via a runtime generic context.
1309
1310 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
1313
1314         * reflection.c (mono_type_get_object): Add a FIXME.
1315
1316         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
1317
1318         * class.c (mono_class_get_method_by_index): New helper function, returning an
1319         entry in the class->methods array.
1320
1321 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * class.c (mono_class_init): Only do the array optimization for szarrays. 
1324         Avoid creating a generic vtable for generic instances as well.
1325         (mono_class_get_method_from_name_flags): Don't search in the metadata for
1326         generic instances.
1327
1328 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * loader.c (mono_get_method_constrained): Inflate the signature
1331         with class context. Fix #325283.
1332
1333 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * object.c (mono_class_create_runtime_vtable): Add a comment.
1336
1337         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
1338         where needed.
1339         (setup_interface_offsets): Handle the case when this is called twice for arrays.
1340         (mono_class_setup_vtable_general): Add an assert.
1341         (mono_class_init): Avoid creating a generic vtable for arrays.
1342
1343         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
1344         here, let mono_class_init () do that.
1345
1346         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
1347         interfaces in mscorlib.
1348
1349         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
1350         interfaces. Add some comments.
1351         (mono_class_init): Call mono_class_setup_methods () here since it is no
1352         longer called by mono_class_setup_vtable ().
1353
1354         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
1355         not set in class->vtable.
1356         (mono_class_create_runtime_vtable): Reenable the disabled code.
1357
1358         * object.c (mono_class_create_runtime_vtable): Disable the last change for
1359         now as it causes some test failures.
1360
1361         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
1362         if using the vtable trampoline. Also remove some strange code which put the
1363         generic methods themselves into the vtable slots. Remove the AOT init_vtable
1364         stuff as it is no longer needed.
1365
1366 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1367
1368         * pedump.c: Give make --verify all option check code as well.
1369         Using --verify code won't check for metadata now.
1370
1371 2008-05-19  Martin Baulig  <martin@ximian.com>
1372
1373         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
1374
1375         * mono-debug.c
1376         (_mono_debug_using_mono_debugger): New global variable; it's set
1377         directly by the debugger, so mono_debug_using_mono_debugger() also
1378         works after attaching.
1379
1380 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * object.c (mono_class_create_runtime_vtable): Use memory barriers
1383         as we do double checked locking on MonoClass::runtime_info and
1384         MonoClassRuntimeInfo::domain_vtables.
1385
1386 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * debug-helpers.c (print_field_value): Fix a warning.
1389
1390 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
1393         set in the AOT case.
1394
1395 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * class.c (mono_class_setup_vtable_general): Use memory barriers
1398         as we do double checked locking on MonoClass::vtable.
1399
1400 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1401
1402         * reflection.c (resolve_object): Inflate only if the generic context
1403         is not null. Fixes #389886.
1404
1405 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
1406
1407         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
1408         instead of g_free.
1409
1410         Code is contributed under MIT/X11 license.
1411
1412 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1413
1414         * class.c: Revert unrelated change.
1415
1416 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1417
1418         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
1419         a generic instantiation, use mono_class_from_mono_type instead of playing
1420         with MonoType directly.
1421
1422 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1423
1424         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
1425         checks must ignore generic instantiations, so mono_class_has_parent is not
1426         suitable. Fixes #390128.
1427
1428 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
1431         it to avoid registering tokens during metadata generation. Fixes #390023.
1432
1433 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1434
1435         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
1436         consistent.
1437
1438         Contributed under MIT/X11 license.
1439
1440 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1441
1442         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
1443         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
1444         to fixup the EXE image.
1445         (mono_cleanup): Use mono_close_exe_image.
1446         (mono_close_exe_image): New function.
1447         * image.c: Include "marshal.h".
1448         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
1449         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
1450         counting when the image is loaded outside of mono_image_open_full. Set status
1451         based on GetLastError.
1452         * coree.c: Include required headers. Add init_from_coree.
1453         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
1454         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
1455         (_CorExeMain): Set init_from_coree.
1456         (CorExitProcess): Only call ExitProcess for now.
1457         (CorBindToRuntimeEx): New stub implementation.
1458         (CorBindToRuntime): New function.
1459         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
1460         (MonoFixupExe): ILONLY executables require no fixups.
1461         (mono_set_act_ctx): New function to set activation context.
1462         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
1463         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
1464         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
1465         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
1466         as MONO_INTERNAL.
1467         * domain-internals.h: Add mono_close_exe_image.
1468
1469         Contributed under MIT/X11 license.
1470
1471 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1472
1473         * metadata.c (mono_metadata_compute_size): Correctly calculate field
1474         size for generic param and event tables. Fixes #388977.
1475
1476 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * loader.c (mono_method_signature): Use memory barriers because of the double
1479         checked locking pattern.
1480
1481         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
1482         aborting or aborted as well. Fixes #376391.
1483         
1484         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
1485         existing runtime state in the Suspend handler during shutdown.
1486
1487 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
1490
1491         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
1492         which are starting up or shutting down.
1493
1494         * threads.c (mono_threads_set_shutting_down): Don't return a value since
1495         this function never returns if the runtime is already shutting down.
1496
1497         * icall.c (ves_icall_System_Environment_Exit): Update after 
1498         mono_threads_set_shutting_down () signature change.
1499         
1500 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
1501
1502         * class.c: Added can_access_instantiation to verify if the instantiation
1503         is visible. Fix access check for nested types as they returned TRUE
1504         before doing type and generic instantiation visibility checks.
1505
1506 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1507
1508         * reflection.c (mono_reflection_create_generic_class): The created type
1509         must have a different container from its TypeBuilder. Otherwise they
1510         will end sharing generic arguments, which is wrong.
1511
1512         Due to the sharing, making a generic instance of the created type using
1513         the TypeBuider generic arguments resulted in the generic type definition
1514         been returned, which is wrong as well.
1515
1516         As a bonus the code was leaking the type_params array. This memory should
1517         be allocated from the image mempool.
1518
1519         This fixes bug #354047.
1520
1521 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1522
1523         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
1524         to here         as they are now used in assembly.c new code.
1525         Added a skipverification flag to MonoAssembly.
1526         New internal function mono_assembly_has_skip_verification.
1527
1528         * assembly.c: New function mono_assembly_has_skip_verification. It checks
1529         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
1530         part of #387274.
1531
1532 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1533
1534         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
1535         needed. Fixes #387034.
1536
1537         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
1538
1539 2008-05-06  Miguel de Icaza  <miguel@novell.com>
1540
1541         * assembly.c (mono_assembly_load_reference): Prevent crash while
1542         disassembling Silverlight 2.0 executables while we still do not
1543         have GACed libraries.
1544
1545 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1546
1547         * reflection.c: Special case generic type definitions as well. Fixes #383444.
1548
1549 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
1552         of the dynamic case. Fixes #387404.
1553
1554 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1555
1556         *verify.c (mono_verifier_is_class_full_trust): If under
1557         verify_all and the verifier mode was not set, only
1558         gac and corlib types are fulltrust. This makes --verify-all
1559         usable to detect unverifiable code, which is the expected
1560         use case.
1561
1562 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1563
1564         * verify.h: Ops, commited the header with debug
1565         enabled.
1566
1567 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1568
1569         * verify.c (merge_stack): Use the new value on unverifiable
1570         stack merges.
1571
1572         * verify.c (verify_type_compatibility_full): Comparison
1573         of nullable types can't use mono_class_is_assignable_from.
1574
1575         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
1576         that makes all verification errors be reported.
1577
1578         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
1579         mono_method_verify.
1580
1581 2008-05-05  Robert Jordan  <robertj@gmx.net>
1582
1583         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
1584         support for value types. See #386415.
1585
1586         * object.c: comments.
1587
1588         Code is contributed under MIT/X11 license.
1589
1590 2008-05-05  Martin Baulig  <martin@ximian.com>
1591
1592         * debug-mono-symfile.h
1593         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
1594         for old pre-terrania symbol files.
1595
1596 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1597
1598         * mono-config.c: Add ppc64 architecture.
1599
1600         Code is contributed under MIT/X11 license.
1601
1602 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1603
1604         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
1605           PPC64 uses function descriptors as well.
1606
1607         Code is contributed under MIT/X11 license.
1608
1609 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * object.c (compute_class_bitmap): Ignore literal static fields.
1612
1613         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
1614         var has an invalid format.
1615         (describe_ptr): Add some sanity checks for the vtable.
1616         (add_nursery_frag): Clear unused nursery fragments.
1617         (major_collection): Clear all remaining nursery fragments.
1618
1619 2008-05-03  Robert Jordan  <robertj@gmx.net>
1620
1621         * image.c, metadata-internals.h: add thunk_invoke_cache.
1622
1623         * marshal.c, marshal.h: implement
1624         mono_marshal_get_thunk_invoke_wrapper ().
1625
1626         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
1627
1628         Code is contributed under MIT/X11 license.
1629
1630 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * verify.c (do_leave): Empty the stack.
1633
1634 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1635
1636         * class.c (mono_class_is_assignable_from): Variance
1637         doesn't work between reference and value types. For example,
1638         given type C<T+>, C<int32> is not assignable to C<object>.
1639         Break the argument checking loop on first error. 
1640
1641 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
1642
1643         * icall.c : base64_to_byte_array() needs some more strict
1644           check for sequence of '=' characters. Patch by Santa
1645           Marta (http://deee.g.hatena.ne.jp/santamarta).
1646
1647           Contributed under MIT/X11 license.
1648           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
1649
1650 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
1651
1652         * domain.c: Disable LoadLibrary support to fix Win32 build.
1653
1654         Code is contributed under MIT/X11 license.
1655
1656 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
1659         to help with cache behaviour.
1660
1661 2008-05-01  Miguel de Icaza  <miguel@novell.com>
1662
1663         * appdomain.c (mono_domain_from_appdomain): Add new accessor
1664         method. 
1665
1666 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
1669
1670 2008-05-01  Dick Porter  <dick@ximian.com>
1671
1672         * process.c (process_get_fileversion): Only pass 16 bits of
1673         language ID to VerLanguageName.  Fixes bug 381204.
1674
1675 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1676
1677         * verify.c (mono_method_verify): Fix the comparison
1678         operator for code bounds check.
1679
1680 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         * verify.c (mono_method_verify): Check the bounds of
1683         all access of the code array.
1684
1685 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
1686
1687         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
1688
1689 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * image.c (mono_image_strong_name_position): Fix return value when the rva is
1692         not valid.
1693
1694 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
1695
1696         * loader.c (mono_get_method_from_token, mono_method_signature): Add
1697         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
1698         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
1699         fixup main EXE images when using mono.exe for mixed-mode assembly support.
1700         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
1701         mono_runtime_load.
1702         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
1703         runtime initialization from metadata.
1704         * assembly.c: Remove obsolete ceGetModuleFileNameA.
1705         (mono_set_rootdir): Use mono_get_module_file_name.
1706         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
1707         handles.
1708         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
1709         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
1710         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
1711         MonoCLIImageInfo. Add support for module handles.
1712         (load_cli_header): Update mono_cli_rva_image_map signature.
1713         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
1714         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
1715         (mono_image_rva_map): Add support for module handles.
1716         (mono_image_ensure_section_idx): Add support for module handles.
1717         (mono_image_close): Add support for module handles.
1718         (do_load_header): Add support for module handles.
1719         (mono_image_open_from_module_handle): New function for internal use.
1720         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
1721         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
1722         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
1723         handles.
1724         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
1725         * image.h: Add mono_image_fixup_vtable.
1726         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
1727         support.
1728         * coree.h: New file.
1729         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
1730         unsupported native code.
1731         (mono_marshal_set_callconv_from_modopt): New function splitted from
1732         mono_marshal_get_managed_wrapper.
1733         (mono_marshal_get_managed_wrapper): Use
1734         mono_marshal_set_callconv_from_modopt.
1735         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
1736         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
1737         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
1738         that results in a deadlock when the runtime is loaded in _CorDllMain.
1739         * Makefile.am: Add coree.c and coree.h.
1740
1741         Contributed under MIT/X11 license.
1742
1743 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1744
1745         * generic-sharing.c: Search for type arguments in array element
1746         types as well.
1747
1748 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1749
1750         * class-internals.h, generic-sharing.c: New, small runtime generic context.
1751
1752         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
1753
1754         * object.c: Don't setup the RGCTX when the vtable is created,
1755         because we're setting it up lazily now.
1756
1757 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
1760         64 bit support.
1761
1762 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1763
1764         * verify.c (verify_class_for_overlapping_reference_fields): 
1765         If class is under fulltrust allow reference types to overllap
1766         if they have the same RVA.
1767
1768 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1769
1770         * pedump.c: Added new flag valid-only, that makes the verifier
1771         behaves just like --security=validil. It won't fail type load
1772         due to unverifiable restrictions.
1773
1774 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1775
1776         * class-internals.h (struct MonoMethod): Added a verification_success
1777         field to cache verifier executions. Reduced MonoMethod:slot size by
1778         one bit.
1779
1780 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
1783         instead of a 'vt' argument to save an indirection and to allow these to be used
1784         for valuetypes.
1785         (scan_vtype): New helper function to scan an area using a gc descriptor.
1786         (mono_gc_wbarrier_value_copy): Implement this.
1787         (handle_remset): Add support for REMSET_VTYPE.
1788         (find_in_remset_loc): Ditto.
1789         (mono_gc_base_init): Allow some debugging options to be controlled through the
1790         use of the MONO_GC_DEBUG env variable.
1791         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
1792         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
1793
1794 2008-04-23  Martin Baulig  <martin@ximian.com>
1795
1796         * domain.c (mono_domain_create): Move the call to
1797         mono_debug_domain_create() down, after allocating the domain id.
1798
1799 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         verify.c (verify_class_for_overlapping_reference_fields): Skip
1802         static fields while verifying for overlapping fields as they
1803         don't matter at all.
1804
1805 2008-04-23  Marek Habersack  <mhabersack@novell.com>
1806
1807         * domain-internals.h: added a declaration of
1808         mono_make_shadow_copy.
1809
1810         * assembly.c (mono_assembly_open_full): shadow copying of
1811         assemblies moved to here, so that all the assemblies within the
1812         application domain's private binary directories can be
1813         processed. Fixes bug #380546
1814
1815         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
1816         mono_make_shadow_copy and made non-static. The decision whether
1817         to shadow-copy an assembly is made based on its location - it's
1818         copied if it's in one of the private application domain binary
1819         directories and its different to the target file in the shadow
1820         directory. Fixes bug #380546
1821
1822 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
1825
1826         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
1827         types.
1828
1829         * reflection.c (mono_image_create_token): Handle 
1830         Method/ConstructorOnTypeBuilderInst.
1831         (resolve_object): Ditto.
1832         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
1833         so it can be called from resolve_object. Also handle the case when the inflated
1834         class already has its methods setup.
1835
1836 2008-04-21  Martin Baulig  <martin@ximian.com>
1837
1838         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
1839
1840 2008-04-20  Geoff Norton  <gnorton@novell.com>
1841
1842         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
1843         pointer dereference.
1844
1845 2008-04-15  Marek Habersack  <mhabersack@novell.com>
1846
1847         * appdomain.c (try_load_from): if IOMAP is in effect, call the
1848         portability API to look up the assembly file. Fixes behavior in
1849         situations when the application has a bin/ directory, but the
1850         assembly search patch refers to Bin/ (and thus the requested file
1851         name is Bin/SomeLibrary.dll). Fixes bug #379888
1852
1853 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1854
1855         verify.c (mono_type_is_generic_argument): Extracted this check
1856         from a dozen places to here.
1857
1858         verify.c: Fixed all issues related to boxing generic arguments
1859         and their constraints.
1860
1861 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1862
1863         verify.c (mono_class_interface_implements_interface): Fix win32 build.
1864
1865 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
1866
1867         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
1868         isn't finished yet. Fixes #363447.
1869
1870 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
1873         Fixes #346419.
1874
1875 2008-04-13  Jb Evain  <jbevain@novell.com>
1876
1877         * domain.c: update the 2.1 profile versions.
1878         Merged from the Moonlight 2 branch.
1879
1880 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
1881
1882         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
1883         mscorlibs for the non-refonly case as well.
1884
1885         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
1886         in mono_assembly_load_from_full (). Fixes #378924.
1887
1888 2008-04-11  Geoff Norton  <gnorton@novell.com>
1889
1890         * icall.c: The global extern environ doesn't exist on Mac.  We
1891         need to call NSGetEnviron instead.
1892
1893 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         verify.c: Add generic method constraint verification.
1896
1897 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1898
1899         class.c (mono_class_inflate_generic_method_full): Add a long
1900         explanation to the is_mb_open hack. Remove the FIXME.
1901
1902 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1903
1904         * verify.c (mono_method_verify): Mark all unknown opcodes
1905         as invalid. Mark jmp as unverifiable.
1906
1907 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         * verify.c: Add code to do type constraint verification on class instances.
1910
1911         * verify.c (mono_verifier_verify_class): Use the type constraint 
1912         verification code.
1913
1914 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1915
1916         * class.c (mono_class_get_field_default_value): Don't pass cindex
1917         as hint to mono_metadata_get_constant_index. The local is not initialized
1918         and should contain garbage most of the time. This could only work
1919         with a lot of luck.
1920
1921 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1922
1923         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
1924
1925 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1926
1927         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
1928
1929         * class.c (mono_class_from_generic_parameter): Save the token of the
1930         generic param in MonoClass::sizes.generic_param_token.
1931
1932         * reflection.c (mono_custom_attrs_from_class): If the class type is
1933         VAR or MVAR retrieve the attributes of the generic param.
1934
1935 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1936
1937         * class.c (mono_class_init): Do class verification if the verifier
1938         is enabled.
1939
1940 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1941
1942         * verify-internal.h: Added mono_verifier_verify_class.
1943
1944         * verify.c: Added mono_verifier_verify_class. It checks for
1945         classes with explicit layout that have overlapping reference fields.
1946
1947         * pedump.c: Init the verifier state prior to verification. Fixed
1948         command line arguments.
1949
1950 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1951
1952         * Makefile.am: Added verify-internals.h, hopefully fix the build.
1953
1954 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
1955
1956         * verify-internals.h: Fix a warning.
1957
1958 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * verify-internals.h: New header with the verifier configuration
1961         extracted from mini.c.
1962
1963         * verify.c: Implemented the new functions exported by verify-internals.h.
1964
1965 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1966
1967         * verify.c: Add proper verification of ckfinite.
1968
1969 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1970
1971         * verify.c (do_conversion): Improved error message to something
1972         more meanfull.
1973
1974         * verify.c (check_is_valid_type_for_field_ops): Fix to work
1975         with primitive types.
1976
1977 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1978
1979         * verify.c: Added tail prefix checking. Marked icall
1980         as unverifible.
1981
1982 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1983
1984         * verify.c: Fix the detection of branches to the middle
1985         of an instruction.
1986
1987 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1988
1989         * verify.c: Implemented verification of volatile. and
1990         unaligned. prefix. Check if a type is valid after retrieving it.
1991
1992 2008-04-01  Dick Porter  <dick@ximian.com>
1993
1994         * process.c (process_get_fileversion): If there's no string block,
1995         set the file language to en_US.  Fixes the other new part of bug
1996         374600.
1997
1998 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
1999
2000         * class.c: New functions mono_method_can_access_field_full and
2001         mono_method_can_access_method_full. They perform type visibility
2002         and type site check.
2003
2004         * class-internal.h: Added exported functions.
2005
2006         * verify.c: Use new functions to implement proper visibility checks.
2007
2008 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
2009
2010         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
2011
2012 2008-03-28  Dick Porter  <dick@ximian.com>
2013
2014         * process.c (process_get_fileversion): Use the first language ID
2015         we see, rather than insisting on an invariant language.  Fixes bug
2016         374600.
2017
2018 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
2021         the streams to fix reading of invalid memory later.
2022
2023         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
2024         to ease debugging.
2025
2026 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
2027
2028         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
2029         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
2030
2031 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
2032         * threads.h: Added MonoThreadManageCallback type and
2033         mono_thread_set_manage_callback prototype
2034         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
2035         (used to store the mono_thread_manage callback).
2036         * threads.c: Added mono_thread_set_manage_callback, and handle
2037         "MonoThread->manage_callback" in build_wait_tids.
2038
2039 2008-03-26  Dick Porter  <dick@ximian.com>
2040
2041         * process.c (process_get_fileversion): Set FileVersionInfo strings
2042         to Empty when the resource doesn't have the particular info.
2043         Fixes bug 355717.
2044
2045 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
2046
2047         * verify.c (mono_method_verify): Proper prefix validation.
2048
2049 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
2052         itself in a separate argument instead of throwing them. Fixes #373448.
2053
2054         * appdomain.c: Bump corlib version.
2055
2056 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
2057
2058         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
2059
2060 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
2061
2062         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
2063         version macros.
2064
2065 2008-03-20  Mark Probst  <mark.probst@gmail.com>
2066
2067         * generic-sharing.c, class-internals.h: Code for putting
2068         reflection types into the runtime generic context.
2069
2070 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2071
2072         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
2073         Fixes #340662. 
2074
2075
2076 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
2077
2078         * verify.c (VerifyContext): Added instruction prefix data to the struct.
2079
2080         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
2081
2082         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
2083
2084         * verify.c (do_cast): Let the result value keep the boxed status.
2085
2086         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
2087
2088 2008-03-17  Jb Evain  <jbevain@novell.com>
2089
2090         * reflection.c: when running on a 2.0 runtime, emit
2091         unconditionally the #~ header version as 2.0, and the
2092         CLI header version as 2.5, for symmetry's sake with csc.
2093
2094 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * class.c: Remove the unused cache_interface_offsets stuff.
2097
2098         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
2099         profiler.c: Fix warnings.
2100
2101 2008-03-16  Mark Probst  <mark.probst@gmail.com>
2102
2103         * generic-sharing.c, class-internals.h: Support for putting
2104         methods into the runtime generic context.
2105
2106 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * class.c (mono_class_setup_fields): Ignore calls made to this function for
2109         classes which are generic instances of not-yet finished typebuilders. Fixes
2110         #351172.
2111
2112         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
2113
2114 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
2117
2118         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
2119         field, replace it with a hash table in MonoDynamicImage.
2120
2121         * reflection.c (inflate_mono_method): Access the generic definition object from
2122         image->generic_def_objects instead of imethod->reflection_info.
2123
2124         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
2125
2126         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
2127         
2128         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
2129         function in reflection.c so it is easier to keep in sync with the dynamic image
2130         creation code.
2131
2132         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
2133         mono_image_close ().
2134
2135 2008-03-15  Mark Probst  <mark.probst@gmail.com>
2136
2137         * class.c (mono_class_generic_sharing_enabled): Disable generic
2138         sharing for all architectures except AMD64 and x86 to fix build.
2139
2140 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * verify.c: Use the generic definition MonoGenericContext when available.
2143         Remove code for checking generics instance compatibility in favor of
2144         mono_class_is_assignable_from.
2145
2146 2008-03-14  Mark Probst  <mark.probst@gmail.com>
2147
2148         * marshal.c, marshal.h, metadata-internals.h, image.c,
2149         wrapper-types.h: New wrapper for invoking a shared static method
2150         without having to pass the runtime generic context argument.
2151
2152 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
2155
2156 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
2159         
2160         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
2161         create a token from a FieldOnTypeBuilderInst.
2162         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
2163         (resolve_object): Ditto.
2164
2165         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
2166         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
2167
2168 2008-03-14  Martin Baulig  <martin@ximian.com>
2169
2170         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
2171
2172         * debug-mono-symfile.h
2173         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
2174         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
2175
2176 2008-03-10  Martin Baulig  <martin@ximian.com>
2177
2178         * debug-mono-symfile.h
2179         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
2180         `lexical_block_table_offset'.
2181         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
2182         `lexical_blocks'.
2183         (MonoSymbolFile): Added `version'.
2184
2185         * mono-debug.h
2186         (MonoDebugLexicalBlockEntry): Removed.
2187         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
2188         `lexical_blocks'.
2189
2190         * mono-debug.c (mono_debug_add_method): Don't compute lexical
2191         blocks here; the debugger now does this internally.
2192
2193 2008-02-27  Martin Baulig  <martin@ximian.com>
2194
2195         * object.c (mono_runtime_exec_main): Call
2196         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
2197         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
2198
2199 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * verify.c (verify_type_compatibility_full): Allow native int to be converted
2202         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
2203
2204 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2205
2206         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
2207         ldftn with a virtual method.
2208
2209 2008-03-13  Geoff Norton  <gnorton@novell.com>
2210
2211         * decimal.c:  Only include memory.h if the platform has it.
2212
2213 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
2214
2215         * assembly.c, class.c, metadata-internals.h: make sure public key
2216         tokesns are compared in a case-insensitive way. Also, all
2217         the lookups in the GAC use a lowercase public key token
2218         (gaacutil already does the lowercasing on install). Fixes
2219         bug #369541.
2220
2221 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
2222
2223         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
2224         and return value.
2225
2226 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
2227
2228         * image.c: when someone loads a mscorlib from a file, return the
2229         currently loaded mscorlib (fixes bug #369253).
2230
2231 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2232
2233         * class.c: handle types with no parents by forcing them to have
2234         System.Object as a parent and marking them as broken (this currently
2235         allows the first part of bug #369173 to work as well, likely because
2236         we don't check for typeload exceptions everywhere yet).
2237
2238 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
2239
2240         * class.c: more complete check that types belong to corlib
2241         (fixes second part of bug #369173).
2242
2243 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
2244
2245         * generic-sharing.c:  Including glib.h for the MSVC builds to define
2246           "inline" to "__inline" before including mono-membar.h.
2247           
2248         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
2249           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
2250           MSVC builds.
2251
2252         Contributed under MIT/X11 license.
2253
2254 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2255
2256         * verify.c (do_invoke_method): Remove return type validation.
2257
2258         * verify.c (do_ret): Do return type validation at return site instead of
2259         call site.
2260
2261 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2262
2263         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
2264
2265         * verify.c: Some todos cleaned and improved a few error messages.
2266
2267 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
2270
2271 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
2274         system types correctly.
2275
2276         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
2277         function.
2278
2279 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2280
2281         * assembly.c (build_assembly_name): Fix a warning.
2282
2283 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2284
2285         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
2286         the called function takes an object type argument. Fixes storing or
2287         valuetypes across remoting as well as reducing memory usage.
2288         * image.c, metadata-internals.h: remove now unused ldfld_remote and
2289         stfld_remote wrapper caches.
2290
2291 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
2294         is not found.
2295
2296         * reflection.c (mono_image_register_token): New helper function to save
2297         a token->object mapping.        
2298
2299         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
2300         managed code.
2301
2302         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
2303         one dimension arrays. Fixes #367670.
2304         (mono_reflection_get_type_internal): Ditto.
2305
2306 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
2307
2308         * marshal.c: mono_load_remote_field_new() always returns object.
2309         so use the proper signature (fixes bug #366445).
2310
2311 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2312         
2313         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
2314         add an 'inline_failure' flag instead.
2315
2316 2008-03-04  Mark Probst  <mark.probst@gmail.com>
2317
2318         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
2319         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
2320         contains the location of "this", used for exception handling.
2321
2322 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
2325         their size on all platforms for perf reasons.
2326
2327 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2328
2329         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
2330         object-internal.h
2331
2332         * object-internal.h: Same.
2333
2334 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2335
2336         * reflection.h: Fix the build I just broke.
2337
2338 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2339
2340         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
2341         Test if a token is valid, this remove explicit usage of 
2342         MonoDynamicImage::tokens from the verifier code.
2343
2344         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
2345
2346         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
2347         instead of direct access to MonoDynamicImage::tokens.
2348
2349 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2350
2351         * verify.c (token_bounds_check): Fix the build I just broke.
2352
2353 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2354
2355         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
2356
2357         * verify.c (verifier_load_method): Fixed the errors message.
2358
2359         * verify.c (mono_method_verify): Fixed a debug message.
2360
2361 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
2362
2363         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
2364         mono-perfcounters.h, class-internals.h: support for predefined
2365         writable counters, query of categories and counters, bugfixes.
2366
2367 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2368
2369         * verify.c (do_refanytype): Verify the refanytype opcode.
2370
2371         * verify.c (mono_method_verify): Use do_refanytype.
2372
2373 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2374
2375         * verify.c (do_mkrefany): Verify the mkrefany opcode.
2376
2377         * verify.c (mono_method_verify): Use do_mkrefany.
2378
2379 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
2380
2381         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
2382         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
2383         implementation.
2384
2385 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
2388         the type load exception.
2389
2390 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
2391
2392         * verify.c: Added a few FIXME for method signatures
2393
2394         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
2395         of mono_method_get_signature and get vararg call working. Removed unused
2396         checks for return value.
2397
2398         * verify.c (do_refanyval): Verify the refanyval opcode.
2399
2400         * verify.c (mono_method_verify): Implemented verification of arglist and
2401         use do_refanyval.
2402
2403 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
2406         vtypes to marshal.c.
2407
2408         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
2409         it works for AOT as well.
2410
2411 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2412
2413         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
2414         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
2415         the system time is adjusted.
2416
2417 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
2418
2419         * icall.c, icall-def.h: use the new time functions (fixes the
2420         non-monotonic behaviour of TickCount).
2421
2422 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
2425         it breaks the build.
2426         
2427         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
2428         cattr is not finished yet.
2429
2430 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * verify.c: Proper token validation for field, method and type.
2433
2434 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2435
2436         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
2437
2438         * loader.c (method_from_memberref): Generate type load error instead of method missing
2439         if the type is not found.
2440
2441 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
2444         some of the conversions caused the generation of a marshal directive exception.
2445
2446 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         verify.c: Report which exception should be thrown by the JIT.
2449         Added a lot of FIXME notes.
2450
2451 2008-02-22  Mark Probst  <mark.probst@gmail.com>
2452
2453         * generic-sharing.c: Runtime generic context slots are not
2454         instantiated on init anymore.  Instead, provide function to do the
2455         instantiating on demand.
2456
2457         * class-internals.h: Added vtable to runtime generic context.
2458         Macros for encoding direct and indirect slot offsets in one
2459         guint32.
2460
2461 2008-02-21  Mark Probst  <mark.probst@gmail.com>
2462
2463         * object.c, generic-sharing.c: Moved some generic sharing code
2464         from object.c to generic-sharing.c.
2465
2466         * generic-sharing.c: Added support for extensible runtime generic
2467         context.
2468
2469         * metadata-internals.h: Two new hash tables in MonoImage for
2470         extensible runtime generic context support.
2471
2472         * domain.c: Unregister generic vtables upon domain unloading.
2473
2474         * image.c: Destroy new hash tables upon image unloading.
2475
2476         * metadata.c: Unregister generic subclasses upon image unloading.
2477
2478         * class-internals.h: New data structure for runtime generic
2479         context template.  New fields in the runtime generic context for
2480         extensible part.
2481
2482         * Makefile.am: Added generic-sharing.c.
2483
2484 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
2487         there is a pending loader exception, raise it.
2488
2489         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
2490         same.
2491
2492         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
2493         same.
2494
2495         Fixes #363450.
2496
2497 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
2500
2501         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
2502         
2503         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
2504         ref-only requests for compatibility with MS.
2505
2506 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2507
2508         * reflection.c (mono_custom_attrs_from_method): Don't silently
2509         return an empty list for generic method instances.
2510         (mono_custom_attrs_from_param): Likewise.
2511
2512 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
2513             Raja R Harinath  <harinath@hurrynot.org>
2514
2515         Fix #354757
2516         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
2517         * class.c (mono_class_inflate_generic_method_full): Initialize it
2518         when a fully-open method is instantiated.
2519         * metadata.c (inflated_method_equal, inflated_method_hash): Update
2520         to new field.
2521         * reflection.c (inflate_mono_method): Don't create a temporary context.
2522
2523 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2524
2525         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
2526         Compute correct value, to prepare for imethod->reflection_info going away.
2527
2528 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
2531
2532 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2533
2534         * verify.c: Implement skip visibility flag.
2535
2536 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2537
2538         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
2539         which contains an extra field to tell the kind of exception that should be thrown.
2540
2541         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
2542
2543 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
2544
2545         * loader.c (mono_method_get_param_names): Initialize 'klass' after
2546         'method' is updated.
2547
2548 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
2549
2550         * class.c (mono_class_layout_fields): Set class->min_align for classes using
2551         explicit layout as well. Fixes #360375.
2552
2553 2008-02-11  Geoff Norton  <gnorton@novell.com>
2554
2555         * loader.c: Guard and dereference against inflated generic methods
2556
2557 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
2558
2559         * class.c: Include Retargetable spec in assembly name.
2560         * assembly.c: Always include PublicKeyToken spec in assembly name
2561         (with value "null" if assembly is not signed), and include
2562         Retargetable spec.
2563         * icall-def.h: Added icall for Assembly.get_fullname.
2564         * icall.c: Added icall returning the fullname of an assembly.
2565
2566 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
2567
2568         * class.c (mono_class_setup_vtable_general): Add a missing call to
2569         mono_class_setup_methods () which is needed in the AOT case.
2570
2571 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
2572
2573         * verify.c (mono_type_get_stack_name): Added. Return the name for the
2574         stack type of the given MonoType.
2575
2576         * verify.c (verify_type_compatibility_full): Handle the void type.
2577
2578         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
2579         way stack merging works.
2580
2581         * verify.c (store_local): Improved verification message.
2582
2583         * verify.c (do_branch_op): If the merging is invalid, the method
2584         is unverifiable and not invalid. Improved error message.
2585
2586         * verify.c (merge_stacks): Properly merge a boxed valuetype and
2587         a reference type diferent than System.Object. Improved error
2588         message.
2589
2590 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
2591
2592         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
2593
2594         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
2595         type of an enum even if the argument is byref.
2596
2597         * verify.c: Replace all explicit uses of enumtype and enum_basetype
2598         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
2599
2600         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
2601
2602         *verify.c (verify_type_compatibility_full): Make enum types
2603         compatible with their base types.
2604
2605         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
2606         types are compatible for the special case of a boxed valuetype and
2607         System.Object.
2608
2609         * verify.c (verify_stack_type_compatibility): The function
2610         is_compatible_boxed_valuetype was extracted from here.
2611
2612         * verify.c (push_arg): Only set ctx->has_this_store if the method
2613         is not static.
2614
2615         * verify.c (do_ldelem): Fixed a typo in an error message and added
2616         strict check for mixing int32 and native int as the array type
2617         and ldelem type.
2618
2619         * verify.c (merge_stacks): Consider boxed valuetypes in the
2620         compatibility checks.
2621
2622 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
2623         * profiler.h: (MonoGCEvent): Added start-stop the world events.
2624
2625 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2626         *class.c: use_new_interface_vtable_code: renamed the env var to have
2627         a "MONO_" prefix, and fix the logic to enable it by default.
2628
2629 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2630         *class.c:
2631         mono_class_setup_vtable_general: rewrote the way in which interface
2632         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
2633         makes the code more maintainable.
2634         For now the old code is still there, and can be activated setting
2635         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
2636
2637 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
2638
2639         * verify.c: guarded some debug functions around and #ifdef.
2640
2641         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
2642
2643 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
2646         changes for now since they seem to break too many things.
2647
2648 2008-02-05  Mark Probst  <mark.probst@gmail.com>
2649
2650         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
2651         mono_marshal_find_nonzero_bit_offset): Added macro and function
2652         for finding the byte- and bit-offset of a bitfield within a
2653         struct.
2654
2655 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
2658         (mono_marshal_get_struct_to_ptr): Ditto.
2659
2660         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
2661         cctor_signature.
2662
2663 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
2664
2665         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
2666         between methods for non-corlib types.
2667
2668 2008-02-02  Geoff Norton  <gnorton@novell.com>
2669
2670         * loader.c (mono_method_get_param_names): Populate the parameter name for 
2671         generic parameters as well. (Fixes #342536)
2672
2673 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
2674
2675         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
2676
2677         * verify.c (do_invoke_method): Fix for calling with byref structs.
2678
2679         * verify.c (do_cast): push a boxed value type based on the type token and not
2680         the type of stack.
2681
2682 2008-01-31  William Holmes  <billholmes54@gmail.com>
2683
2684         * process.c (process_module_string_read): Check the size returned form 
2685           VerQueryValue to avoid out of memory exception. 
2686
2687 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
2690         Handle properly modules which are not in the moduleref table. Fixes
2691         #356938.
2692
2693 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
2696         the dynamic case which is now in managed code.
2697         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
2698
2699         * marshal.c (mono_string_to_bstr): Fix a warning.
2700         (init_com_provider_ms): Ditto.
2701
2702         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
2703
2704         * exception.c (mono_get_exception_out_of_memory): New helper function.
2705
2706 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
2707
2708         * marshal.c: Add support for BSTR marshalling
2709         using other COM systems.
2710
2711         Code is contributed under MIT/X11 license.
2712
2713 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2714
2715         * object.c (mono_runtime_invoke_array): reverted previous
2716         commit as it breaks the build.
2717
2718 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2719
2720         * object.c (mono_runtime_invoke_array): Verify arguments for
2721         invalid types. Fixes #348522.
2722
2723 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2724
2725         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
2726         non-final virtual calls using call. 
2727
2728         * verify.c (do_invoke): fixed some TODOs.
2729
2730         * verify.c (push_arg): set has_this_store for "ldarga 0".
2731
2732 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
2733
2734         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
2735         which belong to an inflated class. Fixes #356531.
2736
2737 2008-01-26  Robert Jordan  <robertj@gmx.net>
2738
2739         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
2740         which resort to FindFirstFile when a certain error condition
2741         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
2742         Code is contributed under MIT/X11 license.
2743
2744 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
2745
2746         * marshal.c (emit_marshal_string): Fix out string marshalling
2747         to use specified encoding. Fixes #323900.
2748
2749         Code is contributed under MIT/X11 license.
2750
2751 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
2752
2753         * class.c (mono_class_inflate_generic_method_full): Don't modify
2754         iresult->context after cache check.
2755
2756 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * class.c (mono_class_inflate_generic_method_full): Change the
2759         struct assignments to memcpy for better visibility and add some comments.
2760
2761 2008-01-23  Dick Porter  <dick@ximian.com>
2762
2763         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
2764         procedure, and make it work on windows.
2765
2766 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
2767
2768         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
2769         a MonoReflectionTypeBuilder since it is always of that type.
2770
2771         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
2772
2773         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
2774
2775         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
2776         
2777         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
2778
2779         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
2780
2781         * reflection.c (mono_reflection_create_runtime_class): Remove already created
2782         instantiations from the type cache.
2783
2784 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2785
2786         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
2787
2788         * verify.c (do_unbox_value): push a controled mutability managed pointer.
2789
2790 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2791
2792         * verify.c (do_ldstr): added, verifies if the #US token is valid.
2793
2794         * verify.c (mono_method_verify): removed old TODO
2795
2796 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2797
2798         * verify.c (do_newobj): add visibility check.
2799
2800 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2801
2802         * verify.c (do_load_function_ptr): add visibility check.
2803
2804 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
2805         *class.c:
2806         mono_generic_class_get_class: hook profiler events.
2807         mono_field_get_offset: added to support heap-shot in the new profiler.
2808         *class.h: exported mono_field_get_offset.
2809         * reflection.c:
2810         mono_reflection_setup_internal_class: hook profiler events.
2811
2812 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
2813
2814         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
2815         argument here too and use it to avoid checking for pending exceptions if 
2816         possible.
2817
2818 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
2819
2820         * assembly.c (build_assembly_name): add arg for passing the assembly
2821         flags. Do not consider a PublicKey with value "null" valid.
2822         (mono_assembly_name_parse_full): added boolean argument that will be
2823         set if the assembly name contains a PublicKeyToken spec. Added support
2824         for the Retargetable spec for which only Yes or No are allowed as valid
2825         value. Consider assembly name invalid if Retargetable spec is set, but
2826         either version, culture or public key (token) are not specified.
2827         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
2828         with implementation in assembly.c.
2829         * icall.c (fill_reflection_assembly_name): also copy assembly flags
2830         from MonoAssemblyName.
2831         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
2832         introduced argument for mono_assembly_name_parse_full to know if the
2833         assembly name has a PublicKeyToken spec, and if it has instruct
2834         fill_reflection_assembly_name to use default value for keyToken (if
2835         PublicKeyToken is null).
2836
2837 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         * verify.c (mono_method_verify): fixed ovf ops with
2840         float values. They are unverifiable now.
2841
2842 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2843
2844         * class.c (set_failure_from_loader_error): add BadImageException to the
2845         list of exceptions that can cause a type to fail to load.
2846
2847         * class.c (mono_class_get_exception_for_failure): same.
2848
2849 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2850
2851         * verify.c (in_any_exception_block): added, check if offset
2852         is part of any exception handling clause.
2853
2854         * verify.c (get_stack_type): added VAR and MVAR types.
2855
2856         * verify.c (do_stobj): better error messages.
2857
2858         * verify.c (do_cpobj): added, check cpobj.
2859
2860         * verify.c (do_initobj): added, check initobj.
2861
2862         * verify.c (do_sizeof): added, check sizeof.
2863
2864         * verify.c (do_localloc): added, check localloc.
2865
2866         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
2867
2868 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
2871         save_lmf/restore_lmf opcodes.
2872
2873         * threads.c (mono_threads_install_notify_pending_exc): New function to
2874         install a callback notifying the JIT there is a pending exception on a thread.
2875         (mono_thread_request_interruption): Call the new callback.
2876         (mono_thread_get_and_clear_pending_exception): New function to return the
2877         exception pending on a thread.
2878
2879         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
2880         to turn off checking for pending exceptions.
2881         (mono_marshal_get_native_wrapper): Ditto.
2882
2883 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * threads-types.h: Get rid of the unnecessary extern declarations.
2886
2887 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
2888
2889         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
2890         return field from parent class if not private.
2891         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
2892         returns fields from parent class if they are not private.
2893         (method_nonpublic): added function to determine if a given method
2894         should be considered non-public. Returns false for private methods
2895         on parent class, and internal methods from parent on the 1.0 profile.
2896         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
2897         use method_nonpublic function to determine whether method should be
2898         returned.
2899         (property_accessor_public): use newly introduced method_nonpublic
2900         function to determine whether accessor is non-public. 
2901         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
2902         event from parent class if not private. Only return static event if
2903         Static flag is set, and only return static event from parent class if
2904         FlattenHierarchy flag is set.
2905         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
2906         include non-private events from parent class.
2907
2908 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2909
2910         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
2911         warning.
2912
2913 2008-01-16  Wade Berrier <wberrier@novell.com>
2914
2915         * security.c: Add assembly.h header to appease some warnings
2916
2917 2008-01-16  Dick Porter  <dick@ximian.com>
2918
2919         * process.c (process_module_string_read): Remove trailing null
2920         when saving string.
2921
2922 2008-01-16  Mark Probst  <mark.probst@gmail.com>
2923
2924         * class-internals.h: A new data structure describing the layout of
2925         a runtime generic context (MonoRuntimeGenericContextTemplate).
2926
2927         * metadata-internals.h: Added a hash table to MonoDomain that maps
2928         from open generic classes to their runtime generic context
2929         templates.
2930
2931         * object.c: Building of the runtime generic context, including
2932         proper handling of generic type arguments of superclasses.
2933         Building of the runtime generic context according to the template.
2934
2935 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * class.c (mono_class_setup_fields): Set field.count for generic instances.
2938         Fixes #350856.
2939
2940         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
2941         mono_portability_find_file (). Fixes #325466.
2942         (mono_image_get_public_key): Fix a warning.
2943
2944 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
2947         Fixes #353550.
2948         (mono_class_from_name_case): Ditto.
2949
2950 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
2951
2952         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
2953           common storage for the tables used in the System/NumberFormatter class.
2954
2955 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
2958
2959 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
2960
2961         * verify.c (get_boxable_mono_type): check if the token is valid.
2962
2963         * verify.c (set_stack_value): changed to add an error if an
2964         invalid type is set on stack. Changed all callers due to signature change.
2965
2966         * verify.c (do_stobj): implement stobj validation.
2967
2968 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
2971         set container->is_method, it was set earlier.
2972
2973         * metadata.c (type_in_image): Handle MVARs which belong to not finished
2974         generic methods.
2975
2976         * reflection.c (mono_reflection_initialize_generic_parameter): Set
2977         is_method of the generic container to TRUE for methods.
2978
2979 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * metadata.c (type_in_image): Handle type parameters properly.
2982
2983         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
2984         memory ownership of this structure.
2985
2986 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
2987
2988         * verify.c (get_boxable_mono_type): make typedref types been just
2989         unverifiable. check for void type.
2990
2991         * verify.c (do_unbox_any): added, verify opcode unbox.any.
2992
2993         * verify.c (do_load_function_ptr): accept method spec tokens.
2994
2995 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2996
2997         * marshal.c (mono_class_native_size): Always set *align even if this is called
2998         recursively.
2999
3000 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
3003         out-of-date.
3004
3005 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * verify.c: removed some old unused tables. A huge bunch of small fixes
3008         to things found while testing the verifier with mono basic.
3009
3010         * verify.c (dump_stack_value): dump null literal flag to.
3011
3012         * verify.c (verify_type_compatibility_full): fix comparison
3013         for types that have a generic super type.
3014
3015         * verify.c (verify_stack_type_compatibility): fix compatibility
3016         between null literals and reference types. fix compatibility between
3017         boxed valuetypes and object. fix corner case test for enums.
3018
3019         * verify.c (do_cmp_op): proper verification of cgt.un in case
3020         of reference types.
3021
3022         * verify.c (do_invoke_method): fix error message.
3023
3024         * verify.c (do_store_indirect
3025
3026         * verify.c (check_is_valid_type_for_field_ops): proper verification
3027         of managed pointers to valuetypes and boxed valuetypes. proper verification
3028         of null literals.
3029
3030         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
3031         allow token to be a reference type.
3032
3033         * verify.c (do_cast): proper handling of boxes valuetypes.
3034
3035         * verify.c (do_stelem): proper handling of storing a boxed valuetype
3036         in object[].
3037
3038         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
3039         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
3040         fixed the decoding of unbox_any
3041
3042 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
3043
3044         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
3045
3046 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
3047
3048         * verify.c (do_newobj): do delegate verification.
3049
3050         * verify.c (verify_delegate_compatibility): perform delegate
3051         verification.
3052
3053         * verify.c (verify_ldftn_delegate): perform tests related to
3054         ldftn delegates.
3055
3056         * verify.c (mono_delegate_signature_equal): perform the
3057         slightly diferent signature comparison required by delegates.
3058
3059         * metadata.c (mono_metadata_type_equal_full): added and exported
3060         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
3061         allows signature only comparison.
3062
3063         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
3064         as MONO_INTERNAL.
3065
3066 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3067
3068         * verify.c: added a bunch of stack_slot_* functions to
3069         make access to stack slot type easier. This is required to
3070         allow optional flags, like null literal, boxed value and
3071         this pointer.
3072         All access paths to IlStackDesc::stype have been changed 
3073         to use these new funcions.
3074         Removed a bunch of unused functions and cleared all warnings.
3075         This patch introduces the usage of the this pointer and 
3076         boxed value flags.
3077
3078 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
3079
3080         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
3081
3082 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
3083
3084         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
3085         match managed version.
3086
3087         * appdomain.c: Bump corlib version.
3088         
3089         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
3090         argument.
3091
3092 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
3093
3094         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
3095         Set public key token to zero-length byte array if assembly is not
3096         strongnamed.
3097
3098 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
3101         writing a vtype array elem.
3102
3103 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
3104
3105         * assembly.c (build_assembly_name): return FALSE if length of token is
3106         not 16 (if not "null").
3107         (mono_assembly_name_parse_full): return FALSE if value of version,
3108         culture, token or key is 0.
3109         * icall.c (fill_reflection_assembly_name): add boolean arguments to
3110         specify whether public key and public key token must be set to default
3111         value (zero-length byte array) if not available. Set versioncompat to
3112         SameMachine. If public key is available or the default is set, then
3113         set PublicKey flag.
3114         (ves_icall_System_Reflection_Assembly_FillName): if no public key
3115         is available, use empty byte array as default value. On the 2.0
3116         profile, use default value for public key token if not set.
3117         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
3118         profile, use default value for public key if not set. On the 2.0
3119         profile, use default value for public key token if not set.
3120         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
3121         default values for public key and public key token.
3122
3123 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3124
3125         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
3126         field to keep it in synch with the managed object.
3127
3128         * marshal.c (emit_marshal_object): Add support for byref marshalling of
3129         delegates. Fixes #351520.
3130
3131         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
3132         contains defined memory.
3133         
3134         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
3135
3136         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
3137         
3138         * sgen-gc.c (check_consistency): New helper function to do a consistency check
3139         of the GC data structures.
3140
3141         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
3142
3143         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
3144         
3145         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
3146         barrier.
3147         (mono_array_clone_in_domain): Ditto.
3148         (mono_array_clone_in_domain): Ditto.
3149
3150         * threads.c (start_wrapper): Register the thread start argument as a GC root.
3151         (cache_culture): Use a write barrier.
3152
3153         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
3154         (ves_icall_get_property_info): Ditto.
3155
3156         * object.h (MONO_STRUCT_SETREF): New macro.
3157
3158         * class-internals.h (MonoStats): Add some GC statistics.
3159
3160         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
3161
3162 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
3163
3164         * exception.c (mono_exception_from_name_two_strings):
3165         Break from loop after method is found.
3166
3167 2008-01-04  Dick Porter  <dick@ximian.com>
3168
3169         * process.c (process_module_string_read): Rename variable to
3170         reflect correct usage, after fixing bug 345972.
3171
3172 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
3173
3174         * verify.c (mono_type_create_fnptr_from_mono_method): 
3175         created a MonoType function pointer instance to be used during
3176         verification. The verifier releases this memory at end.
3177
3178         * verify.c (mono_method_is_constructor): extracted repeated
3179         checks for constructor into a single class.
3180
3181         * verify.c (do_push_field): use new extracted method
3182         for constructor check.
3183
3184         * verify.c (do_newobj): same.
3185
3186         * verify.c (do_ldftn): renamed to do_load_function_ptr
3187         and make it verify ldvirtftn too.
3188
3189         * verify.c (mono_method_verify: proper verification
3190         of ldvirtftn. release created MonoMethod instances.
3191
3192 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3193
3194         * verify.c (token_bounds_check): added.
3195
3196         * verify.c (do_ldftn): added.
3197
3198         * verify.c (mono_method_verify): proper verificartion of ldftn.
3199
3200 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3201
3202         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
3203         than the table row count. It's the resposibility of the caller to
3204         make the bounds check and raise the correct error.
3205
3206         * metadata.c (mono_metadata_decode_row_col): Same.
3207
3208         * loader.c (mono_get_method_from_token): perform bounds check
3209         on token for methoddef table.
3210
3211 2007-12-29  Miguel de Icaza  <miguel@novell.com>
3212
3213         * icall.c
3214         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
3215         assert into a negative result, the managed code already coped with
3216         that.
3217
3218         Some folks on Windows reported this error. 
3219
3220 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
3221
3222         * appdomain.c: Bump corlib version.
3223         * icall.c:
3224         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
3225         CultureInfo.CreateCulture to create CultureInfo for name.
3226         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
3227         create CultureInfo for name. Fixes bug #347174.
3228
3229 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3230
3231         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
3232         flags.
3233
3234         * verify.c (is_valid_branch_instruction): allow branching to the
3235         first instruction of the protected block.
3236
3237         * verify.c (is_valid_cmp_branch_instruction): same.
3238
3239         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
3240         avoid double initialization.
3241
3242         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
3243         detect which cases the eval stack should just be copied.
3244
3245         * verify.c (mono_method_verify): check if the eval stack
3246         is empty when entering a protected block.
3247
3248 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * verify.c: added is_clause_in_range, is_clause_inside_range,
3251         is_clause_nested and verify_clause_relationship. They perform
3252         the verifications stated in P1 12.4.2.7.
3253
3254         * verify.c (mono_method_verify): remove some unused variables,
3255         add the new exception clause checks, add instruction border
3256         checks for protected block start/end, improved some error 
3257         messages and fixed a bug in the way invalid instruction access
3258         is detected.
3259
3260 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
3261
3262         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
3263         from GC 7.0 if available.
3264
3265         * object.c: Remove an unused define.
3266         
3267         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
3268
3269         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
3270
3271         * null-gc.c (mono_gc_make_descr_for_array): Implement.
3272
3273         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
3274
3275         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
3276         to take the same arguments as the other make_descr functions.
3277
3278         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
3279
3280         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
3281         directly.
3282
3283         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
3284         mini.c.
3285
3286         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
3287         call to boehm-gc.c.
3288
3289         * boehm-gc.c (mono_gc_register_root): Fix a warning.
3290
3291         * null-gc.c (mono_gc_register_root): Fix a warning.
3292
3293         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
3294
3295         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
3296         (mono_gc_base_init): Call GC_init ().
3297
3298         * null-gc.c: Define mono_gc_register_root () as a no-op.
3299
3300         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
3301
3302 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
3303
3304         * verify.c: add prototype for merge_stacks at top
3305
3306         * verify.c (do_switch): added.
3307
3308         * verify.c (merge_stacks): on some cases the stack merging
3309         was not happening properly. Unequal stack sizes at merge
3310         points should be invalid.
3311
3312         * verify.c (mono_method_verify): added more debug info on stack state.
3313         verify switch properly.
3314
3315 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * method-builder.h: New file, moved the mono_mb_ declarations here from 
3318         marshal.h.
3319
3320         * boehm-gc.c marshal.c: Include method-builder.h.
3321
3322         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
3323
3324         * marshal.c: Remove some code which is now in method-builder.c.
3325
3326 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * method-builder.c: New file, extraction of the method builder functionality 
3329         from marshal.c.
3330
3331         * marshal.c: Move the mb functions into method-builder.c.
3332
3333         * marshal.h marshal.c: Export some mono_mb_... functions.
3334
3335         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
3336
3337         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
3338         the caller.
3339
3340         * class.c (mono_class_get_full): Check the token type in the dynamic case.
3341
3342         * loader.c (mono_field_from_token): Ditto.      
3343
3344         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
3345         type as well.
3346         
3347         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
3348         Fixes #342565.
3349
3350         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
3351         a helper function for setting it.
3352
3353         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
3354
3355         
3356         * assembly.c: Significally simplify code now that referenced assemblies are 
3357         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
3358
3359         * threads.h: Don't include  the internal threads-types.h header file. Fixes
3360         #349952.
3361
3362 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3363
3364         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
3365         instructions that were target of branches or are at protected block boundaries.
3366
3367         * verify.c (in_same_block): handle filter clauses.
3368
3369         * verify.c (is_valid_branch_instruction): added. checks the target of
3370         instructions br or brtrue/false.
3371
3372         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
3373         binary branch instructions such as beq and bge.
3374
3375         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
3376         and made it pin the instruction as been part of the exception block.
3377
3378         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
3379         of in_same_block.
3380
3381         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
3382         of in_same_block.
3383
3384         * verify.c (do_ret): ret from a protected block is unverifiable and
3385         not invalid.
3386
3387         * verify.c (do_static_branch): verify br and br.s instructions.
3388
3389         * verify.c (merge_stacks): add extra param to support detection
3390         of branches in the middle of instructions.
3391         
3392         * verify.c (mono_method_verify): verify branches and exception blocks
3393         that target the middle of instructions. Proper verification of br and br.s.
3394
3395 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
3398         skip_visibility field.
3399         (reflection_methodbuilder_from_dynamic_method): Ditto.
3400
3401         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
3402         registrations. Fixes #348193.
3403
3404         * threads.h: Move the internal mono_thread_get_pending_exception () to
3405         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
3406
3407 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
3410         icall registration. Fixes #348193.
3411
3412         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
3413         for corlib classes into object. Fixes #349621.
3414
3415 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
3416
3417         * icall.c (property_accessor_nonpublic): new function to determine
3418         whether an accessor allows a property to be considered non-public.
3419         Returns false for private accessor(s) from parent class, and internal
3420         accessor(s) from parent on 2.0 profile (and higher).
3421         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
3422         to determine whether property should be included if NonPublic flag
3423         is set. Fixes bug #349078.
3424
3425 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * verify.c (init_stack_with_value): added.
3428
3429         * verify.c (mono_method_verify): extracted common
3430         code for exception initialization into init_stack_with_value.
3431
3432         * verify.c (mono_method_verify): initialize the exception
3433         for handler clauses as well.
3434
3435         * verify.c (mono_method_verify): fix the exception clause
3436         ordering rules, it should use handler end offset and not
3437         start offset.
3438
3439 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
3440
3441         * rawbuffer.c: remove useless warning.
3442
3443 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
3444
3445         * threads.h, threads-types.h: move functions to the correct header
3446         (fixes bug#349952).
3447
3448 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3449
3450         * verify.c (mono_method_verify): proper verification
3451         of exception handling clauses ranges and fallthru in
3452         and out of protected blocks.
3453
3454 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3455
3456         * verify.c (mono_method_verify): fixed compilation issue.
3457
3458 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3459
3460         * verify.c (mono_method_verify): a printf slipped in, changed
3461         to use verifier debug macro.
3462
3463 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * verify.c (is_correct_leave): check for filter clauses.
3466
3467         * verify.c (do_filter): added.
3468
3469         * verify.c (mono_method_verify): property verification of leave.
3470
3471
3472 2007-12-18  Mark Probst  <mark.probst@gmail.com>
3473
3474         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
3475         Win32 build, until we figure out how to do the proper thing on
3476         Win32.
3477
3478 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
3479
3480         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
3481         by the previous patch.
3482         
3483         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
3484         the assembly resolve handler for refonly assemblies.
3485
3486 2007-12-17  Mark Probst  <mark.probst@gmail.com>
3487
3488         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
3489         Make sure only one thread is allowed to commence shutdown, and
3490         don't allow new threads to be started once shutdown is in
3491         progress.
3492
3493 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3494
3495         * verify.c (is_correct_endfilter): added.
3496
3497         * verify.c (is_unverifiable_endfilter): added.
3498
3499         * verify.c (do_endfilter): added.
3500
3501         * verify.c (mono_method_verify): property verification of endfilter
3502         and fixed a corner case or endfinally.
3503
3504 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
3505
3506         * verify.h: new flags to support fail fast of unverifiable code and
3507         do non-strict verification. Non-strict verification is required to
3508         have MS runtime compatibility. There are a huge amount of unverifiable
3509         code that it accepts as verifiable. The strict mode verifies the code
3510         as the specs says.
3511         Non-strict mode will be required in cases where code needs to be
3512         accepted as verifiable but fails under strict mode.
3513
3514         * pedump.c: added support to fail fast and non-strict verification.
3515
3516         * verify.c: added support for both fail fast and non-strict verification.
3517
3518 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3519
3520         * verify.c (is_correct_endfinally): added.
3521
3522         * verify.c (mono_method_verify): property verification of endfinally.
3523
3524 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3525
3526         * verify.c (in_any_block): check for filter clauses.
3527
3528         * verify.c (is_correct_rethrow): added.
3529
3530         * verify.c (mono_method_verify): property verification of rethrow.
3531
3532         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
3533
3534 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3535
3536         * verify.c (do_throw): added.
3537
3538         * verify.c (mono_method_verify): property verification of throw
3539
3540 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
3543         assemblies. Fixes #346425.
3544
3545 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
3546
3547         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
3548         FieldBuilders.
3549
3550         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
3551
3552         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
3553         prevent asserts when this is called with a token which might not be valid.
3554
3555         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
3556         lookup_dynamic_token_class with valid_token == FALSE.
3557
3558         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
3559
3560         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
3561
3562         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3563         
3564 2007-12-10  Mark Probst  <mark.probst@gmail.com>
3565
3566         * gc.c: Don't delay threadpool thread finalization unless Mono is
3567         shutting down.
3568
3569 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
3570
3571         * threads.c: turn an assert into a non-fatal warning.
3572
3573 2007-12-09  Robert Jordan  <robertj@gmx.net>
3574
3575         * icall.c (GetVirtualMethod): Add missing argument validation.
3576
3577 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3578
3579         * verify.c (do_cast): added.
3580
3581         * verify.c (mono_method_verify): property verification of castclass and isinst.
3582
3583
3584 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3585
3586         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
3587
3588         * verify.c (do_stelem): added.
3589
3590         * verify.c (mono_method_verify): property verification of stelem.X.
3591
3592 2007-12-07  Mark Probst  <mark.probst@gmail.com>
3593
3594         * class.c, class-internals.h: Introduce an environment variable
3595         (MONO_GENERIC_SHARING) through which the extent of generic code
3596         sharing can be controlled (share all classes, share only corlib
3597         classes, or share nothing).
3598
3599         * object.c: Only create runtime generic context for classes for
3600         which sharing is enabled.
3601
3602 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3603
3604         * verify.c (do_ldelem): refactor it to work with ldelem.any.
3605
3606         * verify.c (mono_method_verify): property verification of ldelem.any.
3607
3608 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3609
3610         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
3611         added ldelem.X opcodes.
3612
3613         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
3614
3615         * verify.c: proper verification of ldelem.X 
3616
3617 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
3620
3621 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         * verify.c (mono_method_verify): null literal requires special handling,
3624         the value pushed on stack need to be flagged as so.
3625
3626         * verify.c (do_ldelema): Verify ldelema properly.
3627
3628 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3629
3630         * verify.c: Verify ldlen properly.
3631
3632 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
3635         to the target object's type. Fixes #346160.
3636
3637 2007-12-05  Dick Porter  <dick@ximian.com>
3638
3639         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
3640         Solaris needs the same workaround as BSD-derived systems.  Fixes
3641         bug 323524, patch by Burkhard Linke
3642         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
3643
3644 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
3645
3646         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
3647         handle to use when error dialog is shown; otherwise, update mask
3648         to show no error dialog when an error occurs.
3649
3650 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
3653
3654         * class.c (mono_class_get_field_default_value): New helper function to initialize
3655         field->def_type and field->data.
3656
3657 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
3660         the general one.
3661
3662         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
3663
3664         * marshal.c: Avoid depending on delegate->method_info being set.
3665
3666         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
3667         
3668         * object.c (mono_delegate_ctor): Set delegate->method.
3669
3670         * object-internals.h (struct _MonoDelegate): Add 'method' field.
3671
3672         * appdomain.c: Bump corlib version.
3673
3674 2007-11-27  Raja R Harinath  <harinath@gmail.com>
3675
3676         * metadata.c (mono_generic_inst_equal_full): Short-circuit
3677         equality check if we're comparing canonicalized MonoGenericInsts.
3678
3679 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
3680
3681         * class.c (generic_array_methods): Call mono_class_setup_methods () before
3682         accessing class->methods.
3683
3684 2007-11-22  Dick Porter  <dick@ximian.com>
3685
3686         * threads.c: Ensure that the synch_cs is set before trying to use
3687         it.
3688
3689 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
3690
3691         * profiler.c: r89126 broke the statistial profiler, unbreak.
3692
3693 2007-11-22  Martin Baulig  <martin@ximian.com>
3694
3695         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
3696
3697         * mono-debug.c
3698         (mono_debug_debugger_version): Bump to 3.
3699         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
3700         -> mono_debugger_class_initialized().
3701
3702         * mono-debug-debugger.c
3703         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
3704
3705         * class.c
3706         (mono_debugger_start_class_init_func): Removed.
3707         (mono_debugger_class_loaded_methods_func): Added.
3708         (mono_class_setup_methods): Call it here.
3709
3710 2007-11-22  Martin Baulig  <martin@ximian.com>
3711
3712         * mono-debug.c
3713         (mono_debug_add_delegate_trampoline): New public method.
3714         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
3715
3716         * mono-debug.h
3717         (MonoSymbolTable): Added `global_data_table'.
3718         (MonoDebuggerTypeKind): Removed.
3719
3720 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
3723         these methods.
3724
3725         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3726         
3727 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
3728
3729         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
3730
3731 2007-11-20  Martin Baulig  <martin@ximian.com>
3732
3733         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
3734
3735         * mono-debug-debugger.c
3736         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
3737         (mono_debugger_remove_breakpoint): Likewise.
3738         (mono_debugger_check_breakpoints): Likewise.
3739         (mono_debugger_register_class_init_callback): New public method.
3740         (mono_debugger_remove_class_init_callback): Likewise.
3741         (mono_debugger_add_type): Likewise.
3742
3743         * mono-debug-debugger.h
3744         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
3745
3746 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
3747
3748         * class.c: more interface implementations needed for the
3749         array enumerator (fixes bug #341112).
3750
3751 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
3752
3753         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
3754         fix ParamName of ArgumentNullExceptions.
3755
3756 2007-11-17  Miguel de Icaza  <miguel@novell.com>
3757
3758         * reflection.c (mono_reflection_encode_sighelper): Generate the
3759         modopts and modreqs.   I have a useless test that crashes monodis,
3760         but that shows the code working.
3761
3762 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
3763
3764         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
3765         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
3766
3767 2007-11-15  Dick Porter  <dick@ximian.com>
3768
3769         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
3770         When joining a thread, it's the thread that's calling Join that
3771         gets WaitSleepJoin state not the target.  Fixes the standalone
3772         test case in bug 334740, and hopefully the whole bug too.
3773
3774 2007-11-15  Dick Porter  <dick@ximian.com>
3775
3776         * process.c: Read file version info from the files pointed at by
3777         process modules, not the current process.  Fixes bug 315969.
3778
3779         Use windows typedef names in some places to fix warnings on the
3780         windows build.
3781
3782 2007-11-15  Mark Probst  <mark.probst@gmail.com>
3783
3784         * image.c, metadata-internals.h: Added a generic_class_cache hash
3785         to MonoImage for looking up generic classes when sharing generics.
3786
3787 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
3788
3789         * sgen-gc.c: warning cleanups.
3790
3791 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
3794         inherited properties.
3795
3796 2007-11-14  Mark Probst  <mark.probst@gmail.com>
3797
3798         * object.c, class-internals.h: Added more information to the
3799         runtime generic context.
3800
3801 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
3804         instead of just the target method. Generalize the abstract method handling to
3805         handle any non-static method.
3806
3807         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3808         mono_marshal_get_delegate_invoke () signature change.
3809
3810 2007-11-13  Mark Probst  <mark.probst@gmail.com>
3811
3812         * class.c, class-internals.h: Made
3813         mono_type_get_basic_type_from_generic () public.  Fixed member
3814         access check for shared generics.
3815
3816         * loader.c: Don't insert field into field cache if it's part of a
3817         non-inflated generic class.
3818
3819         * domain.c, domain-internals.h: The generic sharing context is now
3820         part of the jit info data structure.  Added two accessor
3821         functions.
3822
3823 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
3826         the array Get/Set/Address methods, since the JIT inlines them.
3827
3828         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
3829
3830         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
3831         (mono_image_init): Initialize runtime_invoke_direct_cache.      
3832
3833         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3834         mono_marshal_get_delegate_invoke signature change.
3835
3836         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
3837         an additional argument. Add support for invoking abstract methods.
3838
3839         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
3840
3841         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
3842
3843 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3844
3845         * class.c: Do field layout for open generic classes as well.
3846
3847 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3848
3849         * gc.c, gc-internal.h: Don't finalize threadpool threads with
3850         other objects, because the threadpool is still around.  Put them
3851         in a list instead and after finalizing all other objects in the
3852         root domain shut down the thread pool and then finalize the
3853         threads.  Fixes bug #337383.
3854
3855         * threads.c, thread-types.h: New mono_thread_create_internal()
3856         function for marking a thread with the threadpool flag before it
3857         started.  Set synch_cs to NULL after freeing it.
3858
3859         * threadpool.c: Mark threadpool threads before they start.
3860
3861 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
3862
3863         * reflection.h, reflection.c: don't export random functions
3864         and lazy load dbnull and missing objects.
3865
3866 2007-11-07  Jonathan Chambers <joncham@gmail.com>
3867
3868         * class.c: Initialize COM types if COM interfaces
3869         are present (not just COM classes).
3870         
3871         Code is contributed under MIT/X11 license.
3872
3873 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3874         * reflection.c:
3875         create_dynamic_mono_image: hook module profiler events (dynamic case).
3876         mono_image_basic_init: hook assembly profiler events (dynamic case).
3877
3878 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3879         * profiler.c:
3880         simple_appdomain_unload: completely terminate the profiler
3881         instead of only processing the statistical samples.
3882         simple_shutdown: make sure this is really called exactly once,
3883         even in multithreaded applications, and always listen to
3884         appdomain events.
3885         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
3886         here, the "[un]load" functions will do it.
3887         Fixes bugs #333791 and #325261.
3888
3889 2007-11-07  Geoff Norton  <gnorton@novell.com>
3890
3891         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
3892         rather than depend on __APPLE__.
3893
3894 2007-11-07  Mark Probst  <mark.probst@gmail.com>
3895
3896         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
3897
3898 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
3899
3900         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
3901         UTF16 MonoString. Fix the crash from bug #335488
3902
3903 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
3904
3905         * marshal.c: Correct (for non-Win32 OS) length != size in 
3906         mono_string_from_bstr. Fix #339530.
3907
3908 2007-11-06  Geoff Norton  <gnorton@novell.com>
3909
3910         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
3911         to succeed
3912
3913 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
3914
3915         * process.c: Added run-time GetProcessId API detection for Windows.
3916
3917 2007-11-04  Miguel de Icaza  <miguel@novell.com>
3918
3919         * reflection.c  (mono_param_get_objects): If a parameter has the
3920         attribute [System.Runtime.InteropServices.Optional] we should
3921         set the DefaultValue of the ParameterInfo to be
3922         System.Reflection.Missing instead of DBNull.
3923
3924         See bug #339013.
3925
3926         (mono_get_reflection_missing_object): New method,
3927         returns the System.Reflection.Missing.Value singleton instance.
3928
3929 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
3930
3931         * culture-info-table.h : regenerated.
3932
3933 2007-11-02  Jonathan Chambers <joncham@gmail.com>
3934
3935         * icall.c: Use GetEnvironmentStrings on windows
3936         so we are using the same environment block as 
3937         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
3938         #333740.
3939         
3940         Code is contributed under MIT/X11 license.
3941
3942 2007-10-31  Martin Baulig  <martin@ximian.com>
3943
3944         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
3945
3946         * mono-debug-debugger.h
3947         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3948
3949 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
3952         classes.
3953
3954 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
3955
3956         * culture-info-table.h : regenerated.
3957
3958 2007-10-30  Robert Jordan  <robertj@gmx.net>
3959
3960         * icall-def.h, icall.c:
3961         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
3962
3963         Code is contributed under MIT/X11 license.
3964
3965 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * class.c (mono_class_setup_vtable): Find the inflated methods in the
3968         inflated class instead of inflating them again.
3969         
3970         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
3971         dynamic case.
3972
3973         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
3974         Call setup_supertypes () after klass->parent is set.
3975         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
3976
3977         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
3978         for inflated instances of not yet created dynamic generic classes.
3979         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
3980         times from inflated_method.
3981         (methodbuilder_to_mono_method): Ditto.
3982
3983 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
3984
3985         * gc.c: code cleanup and removed old untested option of not creating the
3986         finalizer thread.
3987
3988 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
3991         creating a jump trampoline for dynamic methods.
3992
3993 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
3994
3995         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
3996         generic TypeBuilders when called from another method of the same type (bug #335131).
3997
3998
3999 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
4002         doesn't seem to work perfectly.
4003         
4004         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
4005         called multiple times.
4006         (methodbuilder_to_mono_method): Ditto.
4007         (resolve_object): Inflate FieldBuilder's.
4008
4009 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4010
4011         * string-icalls.c, string-icalls.h, appdomain.c: patch from
4012         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
4013         RemoveEmptyEntries in the string.Split implementation (bug #322375).
4014
4015 2007-10-26  Dick Porter  <dick@ximian.com>
4016
4017         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
4018         Thread initialisation changes
4019
4020 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
4021
4022         * verify.c: fix compatibility check between arrays and System.Array
4023
4024 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
4027         too. Fixes #336999.
4028
4029 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
4030
4031         * object.c (mono_value_box): Use typed allocation here.
4032
4033 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
4036         trampoline instead of compiling the method right away.
4037
4038         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
4039
4040 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
4043         related fields for dynamic classes. Fixes #334493.
4044
4045 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
4048         
4049         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
4050
4051         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
4052         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
4053
4054         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
4055
4056         * reflection.c (create_generic_typespec): Initialize klass->generic_container
4057         if needed.
4058         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
4059
4060 2007-10-18  Jonathan Chambers <joncham@gmail.com>
4061
4062         * marshal.c: Use correct key when removing item
4063         from ccw_hash.
4064         
4065         Code is contributed under MIT/X11 license.
4066
4067 2007-10-17  William Holmes  <billholmes54@gmail.com>
4068
4069         *marshal.c: Adding a case to marshal booleans to U1
4070
4071         Code is contributed under MIT/X11 license.
4072
4073 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * class.c (mono_class_from_name): Search the modules compromising dynamic
4076         assemblies. Fixes #331601.
4077
4078 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
4081         exception if the type name contains an assembly component. Fixes #334203.
4082
4083         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
4084         modules inside dynamic assemblies. Fixes #334200.
4085         
4086         * reflection.c: Set image->public_key and image->public_key_length;
4087
4088         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
4089         fields.
4090
4091         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
4092         
4093 2007-10-16  Mark Probst  <mark.probst@gmail.com>
4094
4095         * metadata.c: Implemented correct comparing of generic classes.
4096         An inflated generic class can be equal to a non-inflated one if it
4097         is inflated with generic type variables as type arguments.  Fixes
4098         bug #333798.
4099
4100 2007-10-15  Dick Porter  <dick@ximian.com>
4101
4102         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
4103         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
4104         81646.
4105
4106         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
4107         instead of a monitor lock.  This means that monitor_try_enter and
4108         co can set the thread state safely.
4109         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
4110         thread_interrupt_requested, so interrupt actually works.
4111
4112         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
4113         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
4114         state accessor function
4115
4116 2007-10-15  Martin Baulig  <martin@ximian.com>
4117
4118         * mono-debug.h
4119         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
4120         the debugger with the current runtime.
4121
4122 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
4123
4124         * object.c, object-internals.h: added the ability to set a single
4125         trampoline for all the slots in a vtable.
4126
4127 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4128
4129         * marshal.c: deal with a possible race condition during multicast
4130         delegate invocation.
4131
4132 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4133
4134         * class.c: ensure value type methods don't have the synchronized
4135         flag set.
4136
4137 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
4138
4139         * string-icalls.c, string-icalls.h: reverted unapproved patch that
4140         breaks the build.
4141
4142 2007-10-11  Joel Reed  <joelwreed@comcast.com>
4143
4144         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
4145         to take an options parameter so that empty entries can be removed during
4146         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
4147
4148 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4149
4150         * marshal.c: make sure we don't store the signature from a dynamic
4151         method into the runtime invoke cache (bug #327189).
4152
4153 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4154
4155         * marshal.c: make sure the wrapper methods are properly initialized.
4156
4157 2007-10-11  Mark Probst  <mark.probst@gmail.com>
4158
4159         * metadata.c, metadata-internals.h: Generalized
4160         mono_type_stack_size() to mono_type_stack_size_internal() which
4161         takes an additional argument specifying whether it allows open
4162         types.
4163
4164 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4165
4166         * verify.c (do_invoke_method): handle typedbyref params
4167         correctly and check for unverifiable return values.
4168
4169         * verify.c (do_newobj): fix a warning.
4170
4171 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4172
4173         * verify.c: don't tread typedbyref as allways unverifable,
4174         so uses, like (ld/st)loc.0 are valid. verify for the cases
4175         that it matters, like boxing related operations.
4176
4177 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4178
4179         * verify.c: add verification of the newobj opcode. verification
4180         of delegate instantation still missing due ldftn and virldftn not
4181         pushing the function type on stack
4182
4183 2007-10-08  Mark Probst  <mark.probst@gmail.com>
4184
4185         * class-internals.h: Runtime generic context data structure
4186         definition.
4187
4188         * object.c: Initialization of runtime generic context at runtime
4189         vtable creation time.
4190
4191 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
4192         * class.c (mono_class_create_from_typedef,
4193         mono_class_from_generic_parameter, mono_ptr_class_get,
4194         mono_fnptr_class_get, mono_bounded_array_class_get)
4195         * domain.c (mono_domain_create, mono_domain_free)
4196         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
4197         * image.c (do_mono_image_load, mono_image_close):
4198         Hooked up load-unload profiler events.
4199
4200 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
4201
4202         * domain.c: track statistics about the actual amount of native code
4203         allocated.
4204
4205 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4206
4207         * class.c: the valuetype enumerators don't have the additional
4208         supertypes interfaces.
4209
4210 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4211
4212         * class.c: need more interfaces setup for the IEnumerator<T>
4213         object created for arrays (tests/ienumerator-interfaces.2.cs).
4214
4215 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
4216
4217         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
4218
4219 2007-10-05  Alp Toker  <alp@atoker.com>
4220
4221         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4222         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4223         #315863.
4224
4225 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4226
4227         * verify.c (verify_type_compatibility_full): verification of
4228         compatibility improved, validates correctly non-strict checks between
4229         native int and I4 types different than (unsigned)int32.
4230
4231         * verify.c (do_store_indirect): added, do all verification of
4232         ldind.X opcodes. 
4233
4234         * verify.c (get_load_indirect_mono_type): renamed to
4235         get_indirect_op_mono_type, as it now returns the MonoType for 
4236         ldind.X and stind.X opcodes.
4237
4238 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4239
4240         * reflection.c: Fix the encoding of generic type definition for
4241         TypeBuilders.
4242
4243         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
4244         mono_image_typedef_or_ref but allows to specify if typespec lookups should
4245         be made. Typespec check is done prior to typeref cache lookup.
4246
4247         * reflection.c (mono_image_typedef_or_ref): now just delegate to
4248         mono_image_typedef_or_ref_full.
4249
4250         * reflection.c (encode_generic_class): encode the generic class
4251         directly instead of calling encode_type.
4252
4253         * reflection.c (encode_type): encode the generic type definition
4254         MonoClass as a generic instantiation.
4255
4256         * reflection.c (create_typespec): cache typespec tokens in
4257         the assembly->typespec cache. Don't create typespec for a generic
4258         instance MonoClass. Create typespec for the generic type defintion.
4259
4260         * reflection.c (create_generic_typespec): encode the generic
4261         class directly instead of calling encode_type.
4262
4263         * reflection.c (mono_image_create_token): encode the generic
4264         type definition not using a typespec for MonoType instances.
4265
4266
4267 2007-10-04  Raja R Harinath  <rharinath@novell.com>
4268
4269         Fix #328812
4270         * class.c (mono_image_init_name_cache): Don't return nested
4271         'protected internal' classes.
4272         (mono_class_from_name_case): Likewise.
4273
4274 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
4275
4276         * icall-def.h, icall.c : get_bundled_machine_config() is now the
4277           common function used by both DefaultConfig in System.dll and
4278           InternalConfigurationHost in System.Configuration.dll.
4279
4280 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4281
4282         * class.c: automatically add to vectors only a few essential explicit
4283         generic interfaces. The rest of the interfaces that arrays should
4284         provide are currently implicitly added (but still not lazily, see the
4285         design in the discussion of bug#325495 for the details of what is
4286         needed for that). Additionally, implicit interfaces are assigned the
4287         same vtable slot as the explicit interfaces (as they are compatible):
4288         this enables huge memory savings since we don't need to instantiate
4289         as many memthods and as large vtables anymore. Also, Since
4290         GetEnumerator<T> returns an instance of a type that is required to
4291         support a similarly large set of interfaces as arrays, we add
4292         implicit interfaces and interface offset sharing support to those
4293         types, too. This change adds all the required interfaces so that
4294         the anonarray.cs test case in the bug report works (we don't add
4295         all the interfaces to arrays of arrays 3-level deep and more because
4296         of the memory requirements explained in the bug and since they are much
4297         less common: the lazy-loading support will enabled them to work, too).
4298
4299 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4300
4301         * verify.c (merge_stacks): major clean up, all type compatibility
4302         checks are done by verify_type_compatibility. This fix my earlier lack
4303         of understanding of the CLR type system and merge_stacks no longer looks
4304         scary.
4305
4306         * verify.c: fixed some bad spelling.
4307
4308 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
4311         a given stack slock.
4312         
4313         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
4314         verify_type_compatibility_full. This removed a near indentical function and fixed
4315         handling of Int32 and IntPtr across all opcodes.
4316
4317 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4318
4319         * class.c: only vectors have the additional generic interfaces.
4320
4321 2007-10-01  Jonathan Chambers <joncham@gmail.com>
4322
4323         * mono-config.c: Use g_strcasecmp instead of
4324         strcasecmp like everywhere else to fix
4325         compilation with MSVC.
4326         
4327         Code is contributed under MIT/X11 license.
4328
4329 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4330
4331         * object.c, object-internals.h: refactored the IMT code to enable
4332         building a single slot at a time and lazily creating the IMT trampolines
4333         and thunks.
4334
4335 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
4336
4337         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
4338
4339         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
4340         Fixes #328501.
4341         
4342 2007-09-29  Raja R Harinath  <harinath@gmail.com>
4343
4344         * loader.c (method_from_methodspec): Rearrange to avoid
4345         un-necessary exposition.  Don't assert out if the method's
4346         declaring type is a generic type definition.
4347
4348 2007-09-28  Martin Baulig  <martin@ximian.com>
4349
4350         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
4351
4352 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
4353
4354         * class-internals.h: optimize field layout of MonoClass to
4355         requires less cachelines at runtime and save a few bytes on 64 bit
4356         systems.
4357
4358 2007-09-28  Jb Evain  <jbevain@novell.com>
4359
4360         * reflection.c: when encoding type names in custom attributes,
4361         if the type is a closed generic type, its generic arguments
4362         have to be serialized as AssemblyQualifiedName, so that when
4363         they are deserialized, it's possible to re-create them properly.
4364         Fixes #329450.
4365
4366
4367 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4368
4369         * object.c, class-internals.h: added delegate-creation counter.
4370
4371 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
4372
4373         * class.c: cleanup of the code that synthetizes interfaces for
4374         arrays in 2.0: saves quit a bit of corlib mempool memory.
4375         Code to fix bug #325495 ifdeffed out for now until the issues
4376         with memory usage and O(n^2) behaviour are fixed.
4377
4378 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4379
4380         * marshal.c: when possible, do not duplicate the name of the methods
4381         in the method builder and in the generated MonoMethod.
4382
4383 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4384         * verify.c: added support for type checking ldind_* opcodes.
4385
4386 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4387
4388         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
4389         which is used to distinguish the fully open instantiation of a TypeBuilder
4390         with the rest. This temporary hack is required to restore the property that
4391         the fully open instantiation is the same type of the generic type definition.
4392
4393         * class-internals.h (mono_generic_class_is_generic_type_definition):
4394         new function as part of the internal API.
4395
4396         * class.c (inflate_generic_type): return NULL when the generic inst is
4397         fully open. The fully open generic type is now the same as the generic type
4398         definition for non TypeBuilder types.
4399
4400         * class.c (mono_generic_class_get_class): removed assert since it is
4401         no longer valid, gklass->cached_class can point to the generic type definition.
4402
4403         * class.c (mono_generic_class_is_generic_type_definition): new.
4404
4405         * metadata.c (mono_generic_class_hash): added is_tb_open field
4406         to the hash calculation.
4407
4408         * metadata.c (free_generic_class): if the generic class is associated
4409         with the generic type definition, its field will come from the mempool and
4410         must not be freed.
4411
4412         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
4413         new, this function identifies the corner case of a TypeBuilder fully open
4414         instantiation.
4415
4416         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
4417         for lookup. Set gclass->cached_class to be the container class in case of
4418         the fully open instantiation of non TypeBuilder types.
4419
4420         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
4421         to compare generic classes.
4422
4423         * reflection.c (method_encode_methodspec): remove assert that
4424         no longer is valid.
4425
4426         * reflection.c (mono_reflection_generic_class_initialize): add
4427         an aditional assert to ensure the proper type is used.
4428
4429 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
4430
4431         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
4432         to enjoy it.
4433
4434 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4435
4436         * verify.c (push_arg): Fixed support for ldarga
4437         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
4438         MonoType used as first arg in case of instance calls.
4439
4440 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * verify.c: Support for verifying VAR and MVAR types, 
4443
4444 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * icall.c (ves_icall_get_property_info): Set the reflected type of the
4447         accessors correctly.
4448
4449 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
4450
4451         * threads.c: support OSX and other systems in
4452         mono_thread_get_stack_bounds (bug #328026).
4453
4454 2007-09-25  Martin Baulig  <martin@ximian.com>
4455
4456         * mono-debug.h
4457         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
4458
4459 2007-09-24  Martin Baulig  <martin@ximian.com>
4460
4461         * mono-debug.h
4462         (MonoDebugClassEntry): Moved the definition of this struct into
4463         mono-debug.c to make it private.
4464
4465         * mono-debug.c
4466         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
4467         type table per symbol file, we don't need to store the symfile id
4468         any longer.
4469
4470 2007-09-24  Martin Baulig  <martin@ximian.com>
4471
4472         Create one type table per symbol file, since a `MonoClass *' gets
4473         invalid when its image is unloaded.
4474
4475         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
4476         (MonoDebugHandle): Added `type_table'.
4477
4478 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4479
4480         * mempool.c, mempool.h: added mono_mempool_new_size () API
4481         to be able to specify a smaller initial size for the pool.
4482         Adjusted the code to slowly increase pool size before using
4483         the previous default size.
4484         * image.c: use a small initial size for image mempools.
4485
4486 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
4487
4488         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
4489         Fixes ##320990.
4490
4491         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
4492         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
4493
4494 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * metadata.c (mono_type_create_from_typespec): Remove an invalid
4497         free. Fixes #327438.
4498
4499 2007-09-21  Raja R Harinath  <harinath@gmail.com>
4500
4501         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
4502         generic instantiations, etc.
4503         <MONO_TYPE_ARRAY>: Likewise.
4504
4505 2007-09-21  Martin Baulig  <martin@ximian.com>
4506
4507         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
4508         these structs were never defined.
4509         (MonoDebugHandle): Removed the `_priv' field, it was never used.
4510
4511 2007-09-21  Martin Baulig  <martin@ximian.com>
4512
4513         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
4514
4515 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
4516
4517         * image.c: removed the guid hash tables: we can get the same info
4518         without the additional memory usage hit (partially fixes also bug #327052).
4519
4520 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4521
4522         * profiler.h, profiler-private.h, profiler.c: add a new profiler
4523         event to handle unloading methods. After the event is called, the
4524         corresponding MonoMethod* must be considered invalid.
4525         * loader.c (mono_free_method): call the new mono_profiler_method_free
4526         event.
4527
4528 2007-09-20  Mark Probst  <mark.probst@gmail.com>
4529
4530         * domain-internals.h: New flag in MonoJitInfo which marks shared
4531         generic methods.  New hash table (shared_generics_hash) in
4532         MonoDomain to keep track of shared generic methods.  Prototypes
4533         for functions to register and lookup shared generic methods.
4534
4535         * domain.c: Support for registering and looking up shared generic
4536         methods via a hash table (shared_generics_hash) in MonoDomain.
4537
4538         * class-internals.h: New exception to signal failure of shared
4539         compilation of a generic method.  New counters for generics
4540         sharing in MonoStats.
4541
4542 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
4543
4544         * image.c, metadata-internals.h: don't keep a file descriptor open
4545         for loaded assemblies (bug#325988).
4546
4547 2007-09-19  Raja R Harinath  <rharinath@novell.com>
4548
4549         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
4550         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
4551         use the corresponding datatypes.
4552         (type_in_image): Update to changes.
4553         (CleanForImageUserData): Simplify.
4554         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
4555         Avoid quadratic behaviour in handling the "stolen" list by
4556         separating the filter predicate out, and by prepending the stolen
4557         items rather than appending them.
4558         (steal_ginst_in_image): Likewise.
4559         (mono_metadata_clean_for_image): Update to changes.
4560
4561 2007-09-19  Martin Baulig  <martin@ximian.com>
4562
4563         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
4564
4565 2007-09-19  Martin Baulig  <martin@ximian.com>
4566
4567         * mono-debug.c (mono_debug_cleanup): Don't call
4568         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
4569
4570 2007-09-19  Raja R Harinath  <harinath@gmail.com>
4571
4572         Fix crash on 'make run-test' in mcs/errors
4573         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
4574         Avoid more potential allocations in mono_class_from_mono_type.
4575         (ginst_in_image): Update to changes.
4576         (gclass_in_image): Rearrange slightly.
4577
4578 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * class.c (mono_class_init): Move the code that sets up class->methods to 
4581         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
4582
4583         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
4584         canonical instance of an inflated generic signature.
4585         (mono_type_create_from_typespec): Remove an invalid free.
4586
4587         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
4588
4589 2007-09-18  Marek Habersack  <mhabersack@novell.com>
4590
4591         * domain-internals.h: added a declaration of the
4592         mono_assembly_load_full_nosearch internal function.
4593
4594         * assembly.c (mono_assembly_load_with_partial_name): use
4595         mono_try_assembly_resolve return value properly.
4596         (mono_assembly_load_full_nosearch): copied the function body from
4597         mono_assembly_load_full, without the code to invoke assembly
4598         search hooks.
4599         (mono_assembly_load_full): calls the above new function and if the
4600         assembly is not resolved, invokes the search hooks.
4601
4602         * appdomain.c (mono_runtime_init): restore the global postload
4603         assembly search handlers.
4604
4605 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * class.c (mono_class_init): Make sure class->methods and class->properties
4608         are never NULL in the generics case.
4609
4610         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
4611
4612 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * metadata.c (free_generic_class): Disable some code to fix the build.
4615
4616         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
4617
4618         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
4619         from the image mempool.
4620
4621         * metadata.c (free_generic_class): Free more data from the inflated class.
4622
4623         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
4624
4625         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
4626         mempool.
4627         (mono_type_create_from_typespec): Ditto.
4628
4629         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
4630         MonoImage to the caller.
4631         (mono_init_internal): Save the opened image in a global variable.
4632         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
4633
4634         * reflection.c (resolve_object): Fix a leak.
4635
4636         * metadata.c: Fix the freeing of data in the generics caches.
4637         
4638         * metadata.c (free_generic_inst): Comment this out to fix the build.
4639         (free_generic_class): Ditto.
4640
4641         * metadata.c: Free cached generic methods, instantinations and classes when
4642         they are removed from the caches.
4643         (mono_metadata_free_type): Free the type itself.
4644
4645         * class.c: Free the result of mono_class_inflate_generic_type () in a few
4646         places.
4647
4648 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4649
4650         * boehm-gc.c: restrict managed allocs to __thread supporting
4651         architectures.
4652
4653 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
4656         (mono_generic_class_get_class): Fix a leak.
4657
4658         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
4659         mono_metadata_free_type ().
4660         (mono_metadata_inflate_generic_inst): Fix a leak.
4661
4662 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * mono-debug.c (free_header_data): Fix a leak missed earlier.
4665
4666         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
4667         mempool.
4668
4669         * mono-debug.c (mono_debug_close_image): Fix call to 
4670         g_hash_table_remove ().
4671
4672 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4673
4674         * icall-def.h: redirect all the string ctor to the managed
4675         CreateString () methods.
4676         * string-icalls.c, string-icalls.h: removed dead code for string
4677         ctors and icalls.
4678
4679 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * mono-debug.c: Fix memory leaks.
4682
4683 2007-09-14  Jonathan Chambers <joncham@gmail.com>
4684
4685         * threads-types.h: Implement mono_hazard_pointer_set and 
4686         mono_hazard_pointer_clear macros using do/while(0) to fix
4687         compilation with MSVC.
4688         
4689         Code is contributed under MIT/X11 license.
4690
4691 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4692
4693         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
4694         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
4695
4696 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4697
4698         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
4699         icalls.
4700
4701 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4702
4703         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
4704         managed-code allocated as well.
4705
4706 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * class.c (mono_class_is_assignable_from): Add support for generic variance.
4709
4710 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4711
4712         * boehm-gc.c: fixed the build after the AOT changes.
4713
4714 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * wrapper-types.h: Add an ALLOC wrapper type.
4717
4718         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
4719         reference managed allocator methods.
4720
4721 2007-09-12  Marek Safar  <marek.safar@gmail.com>
4722
4723         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
4724         of Type array and not MonoType, a fix suggested by Hari.
4725         
4726 2007-09-12  Jonathan Chambers <joncham@gmail.com>
4727
4728         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
4729         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
4730         
4731         Code is contributed under MIT/X11 license.
4732
4733 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4734
4735         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
4736
4737 2007-09-12  Marek Habersack  <mhabersack@novell.com>
4738
4739         * image.c (do_mono_image_open): if assembly file fails to open and
4740         MONO_IOMAP is in effect, try to find the path in a
4741         case-insensitive way.
4742
4743         * appdomain.c (mono_runtime_init): do not install postload hooks -
4744         tests show that MS.NET doesn't use anything of that sort to
4745         trigger the AppDomain.AssemblyResolve event.
4746         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
4747         made non-static.
4748         (mono_runtime_init): init portability helpers here.
4749
4750         * assembly.c (mono_assembly_load_with_partial_name): if other   
4751         attempts fail, trigger the AppDomain.AssemblyResolve event handler
4752         to resolve the assembly.
4753
4754         * domain-internals.h: added mono_try_assembly_resolve and marked
4755         it as internal.
4756
4757 2007-09-11  Jb Evain  <jbevain@novell.com>
4758
4759         * object-internals.h (MonoReflectionDynamicMethod): add
4760         a `MonoReflectionType *owner` field. The owner is used
4761         * reflection.c:
4762         (mono_reflection_create_dynamic_method): use the owner of the dynamic
4763         method as the class declaring the dynamic method.
4764         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
4765         dynamic method to the declaring type of the methodbuilder.
4766
4767 2007-09-11  Mark Probst  <mark.probst@gmail.com>
4768
4769         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
4770         rules for calling methods via reflection.
4771
4772 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
4773
4774         * reflection.c (resolve_object): Add support for MonoGenericClass. 
4775         Inflate MonoType's.
4776
4777 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
4778
4779         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
4780         provide a managed method that does fast allocations without needing
4781         a managed->unmanaged transition. Boehm GC implementation currently
4782         enabled for ptrfree objects on sane architectures.
4783
4784 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4785
4786         * marshal.c, marshal.h: exported a couple of useful functions and
4787         added mono_mb_get_label () to easily handle backward branches.
4788
4789 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
4792
4793 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4794
4795         * loader.c (find_method): Fixed the regression introduced while
4796         fixing bug #81466.
4797
4798 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
4801         well.
4802         
4803         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
4804         icall.c reflection.c: Pass a MonoGenericContext argument to 
4805         mono_lookup_dynamic_token ().
4806
4807         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
4808         #82744.
4809         
4810 2007-09-09  Robert Jordan  <robertj@gmx.net>
4811
4812         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
4813         for generic methods.
4814
4815         * object.c (mono_object_get_virtual_method): Handle generic methods.
4816         Fixes bug #78882.
4817
4818         Code is contributed under MIT/X11 license.
4819
4820 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4821
4822         * image.c: fix locking in mono_image_load_file_for_image ().
4823
4824 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
4825
4826         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
4827         used only as a cache: added an icall to fill it.
4828
4829 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
4830
4831         * reflection.h: exposed mono_reflection_free_type_info
4832         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
4833         since mono_reflection_bind_generic_parameters makes a copy of it.
4834         * reflection.c (free_type_info): subinfos should be freed.
4835         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
4836         made non static.
4837         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
4838         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
4839         this fixes #82695 and #81726.
4840    
4841
4842 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
4843
4844         * process.h, process.c:  added support for user profile/info in
4845           ProcessStartInfo. For now only Windows works.
4846
4847 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4848
4849         * metadata.c: consider the generic arguments when comparing
4850         signatures (bug #82614).
4851
4852 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4853
4854         * cil-coff.h, image.c: updated assembly loader to cope with the
4855         PE32+ 64 bit file format.
4856
4857 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4858
4859         * assembly.c, class.c, domain.c, loader.c: remove useless
4860         inclusion of cil-coff.h.
4861
4862 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
4863
4864         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
4865         if interface is marked with CoClassAttribute. 
4866    
4867         Code is contributed under MIT/X11 license.
4868
4869 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4870
4871         * sgen-gc.c: ensure no object from the to space is copied again or finalized
4872         if it's seen twice in major collections.
4873
4874 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4875
4876         * sgen-gc.c: big objects are not copied to the gray area, but they
4877         need to be considered for scanning, too, if they are brought alive
4878         by an object ready for finalizations or a survived one.
4879
4880 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4881
4882         * sgen-gc.c: properly account the number of disappearing links when
4883         they are nullified.
4884
4885 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4886
4887         * sgen-gc.c: share the code to scan the registered roots between the
4888         different types of collections.
4889
4890 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
4893
4894 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
4897         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
4898
4899 2007-08-28  Mark Probst  <mark.probst@gmail.com>
4900
4901         * security-manager.c (mono_security_manager_get_methods):
4902         LinkDemandSecurityException now has 2 arguments instead of 3.
4903
4904 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
4907         platforms which need it.
4908
4909 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4910
4911         * sgen-gc.c: unregister thread data structures with a pthread_key_t
4912         dtor.
4913
4914 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4915
4916         * threads.c: free the thread static data on thread exit.
4917
4918 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
4919
4920         * class.c: walk the hierarchy to find the generic definition for
4921         a class (fixes runtime part of bug #82498).
4922
4923 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4924
4925         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
4926         ...
4927
4928         * image.c (mono_image_close): Here. Hopefully fixes #82510.
4929
4930 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4931
4932         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
4933
4934 2007-08-24  Robert Jordan  <robertj@gmx.net>
4935
4936         * appdomain.c: don't perform the ':'->';' substitution on Win32.
4937
4938 2007-08-24  Jb Evain  <jbevain@novell.com>
4939
4940         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
4941         for byref types.
4942
4943 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4944
4945         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
4946         #82286.
4947
4948 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4949
4950         * assembly.c: Fix a warning.
4951         
4952 2007-08-23  Marek Habersack  <mhabersack@novell.com>
4953
4954         * appdomain.c: parse the <runtime> section looking for the probing
4955         element with the 'privatePath' attribute, which sets additional
4956         directories in which the runtime should look for assemblies.
4957
4958 2007-08-23  Robert Jordan  <robertj@gmx.net>
4959
4960         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
4961         Fixes #82499.
4962
4963 2007-08-23  Martin Baulig  <martin@ximian.com>
4964
4965         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
4966         _mono_debug_init_corlib() and remove it from the header file.
4967
4968 2007-08-23  Martin Baulig  <martin@ximian.com>
4969
4970         * mono-debug-debugger.c
4971         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
4972         don't notify the debugger about it.
4973
4974         * mono-debug-debugger.h
4975         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
4976
4977 2007-08-23  Robert Jordan  <robertj@gmx.net>
4978
4979         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
4980         Code is contributed under MIT/X11 license.
4981
4982 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4983
4984         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
4985
4986 2007-08-22  Martin Baulig  <martin@ximian.com>
4987
4988         * mono-debug.c: Store debugging info on a per-domain basis and
4989         free it on domain unload.  Add support for unloading symbol files.
4990
4991         * mono-debug.h
4992         (MonoDebugList): New typedef.
4993         (MonoSymbolTable):
4994         - add `data_tables and `type_table'.
4995         - replace 'symbol_files' and `num_symbol_files' with a
4996           `MonoDebugList *'.
4997         (mono_debug_data_table): Removed.
4998         (mono_debug_list_add): New public function.
4999         (mono_debug_list_remove): New public function.
5000         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
5001         (mono_debug_init_2_memory): Renamed into
5002         mono_debug_open_image_from_memory().
5003         (mono_debug_close_image): New public function.
5004         (mono_debug_domain_create): Likewise.
5005         (mono_debug_domain_unload): Likewise.
5006         (MONO_DEBUGGER_VERSION): Bump to 60.
5007
5008         * mono-debug-debugger.h
5009         (MonoDebuggerEvent):
5010         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
5011         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
5012         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
5013         - rename `THREAD_CREATED' and `THREAD_EXITED' into
5014           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
5015         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
5016           meaning.
5017         (mono_debugger_add_symbol_file): Removed.
5018         (mono_debugger_add_type): Removed.
5019         (mono_debugger_lookup_type): Removed.
5020         (mono_debugger_lookup_assembly): Removed.
5021
5022         * domain.c
5023         (mono_domain_create): Call mono_debug_domain_create().
5024         (mono_init_internal): Call mono_debug_init_corlib().
5025
5026         * assembly.c
5027         (mono_assembly_close): Call mono_debug_close_image().
5028
5029 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
5030
5031         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
5032         mmap call.
5033
5034 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5035
5036         * sgen-gc.c: ensure section->pin_queue_end is initialized
5037         correctly when non pinning objects in the section have been found.
5038
5039 2007-08-22  Marek Habersack  <mhabersack@novell.com>
5040
5041         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
5042         containing a list of directories separated by ':'. MSDN docs say
5043         the directories should be separated with ';'. Part of a bugfix for
5044         bug #81446
5045
5046 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
5047
5048         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
5049         it should MonoType and not MonoClass.
5050
5051 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
5052
5053         * culture-info-table.h : regenerated.
5054
5055 2007-08-20  William Holmes  <billholmes54@gmail.com>
5056
5057         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
5058          to call ReplaceFile Kernel32 on windows or in io-layer.
5059         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
5060         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
5061          as an internal call.
5062
5063         Code is contributed under MIT/X11 license.
5064
5065 2007-08-20  Jb Evain  <jbevain@novell.com>
5066
5067         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
5068         and MONO_EXCEPTION_FIELD_ACCESS.
5069
5070         * debug-helpers.[c|h]: new mono_field_full_name function.
5071
5072 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5073
5074         * class.c: Removed class_security_level() and moved it to
5075         security-core-clr.c.
5076
5077         * security-core-clr.c, security-core-clr.h: class_security_level()
5078         is now public and renamed to mono_security_core_clr_class_level().
5079         It also looks for security attributes in the classes a class is
5080         nested in.
5081
5082 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5083
5084         * security-core-clr.c, security-core-clr.h: CoreCLR security
5085         utility functions.
5086
5087         * Makefile.am: Added security-core-clr.[ch].
5088
5089         * security-manager.c, security-manager.h: Functions and enum for
5090         setting and getting the security mode.
5091
5092         * class.c: CoreCLR security checks.
5093
5094 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
5095
5096         * icall-def.h, process.c, process.h: implemented icall to get
5097         user/system processor times.
5098
5099 2007-08-17  Mark Probst  <mark.probst@gmail.com>
5100
5101         * domain.c, threads.c, class-internals.h, domain-internals.h: New
5102         reader-lock-free jit_info_table.
5103
5104 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
5107
5108         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
5109
5110         * object-internals.h (MonoException): Add missing _data member.
5111
5112 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5113
5114         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
5115         checking that only methods with matching qname or fqname are picked
5116         from implemented interfaces.
5117
5118 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5119
5120         * verify.c (do_newarr):added, do type verification of
5121         newarr ops, push the right value on the eval stack.
5122         * verify.c (mono_method_verify): use do_newarr
5123
5124
5125 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5126
5127         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
5128         factored the common code into get_boxable_mono_type, which
5129         is now using mono_type_get_full, this fixed byref related tests.
5130
5131 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5132
5133         * class.c: added mono_type_get_full, this function has the same
5134         behavior of mono_class_get_full but the returned MonoType has
5135         all metadata of the associated token in case of a typespec token.
5136         * class.c: added mono_type_retrieve_from_typespec, used by 
5137         mono_type_get_full to retrieve the token type.
5138         * class.c (mono_class_create_from_typespec): changed to use
5139         mono_type_retrieve_from_typespec.
5140         * class.c (mono_ldtoken): changed to use mono_type_get_full
5141         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
5142         * class-internals.h: exported mono_type_get_full for internal use.
5143
5144 2007-08-16  Jb Evain  <jbevain@novell.com>
5145
5146         * domain.c (supported_runtimes): add entry for
5147         the 'moonlight' runtime version.
5148
5149 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5150
5151         * verify.c (mono_method_verify): small typo sliped in.  
5152
5153 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5154
5155         * verify.c (do_unbox_value): added, do type verification of
5156         unboxing ops
5157         * verify.c (mono_method_verify): use do_unbox_value
5158
5159
5160 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5161
5162         * verify.c (dump_stack_value): fixed typo, was printing string
5163         instead of object on stack.
5164         * verify.c (do_box_value): moved the byref check up as it leads
5165         to invalid code and should be done earlier.
5166         * verify.c: improved error messages for and ldobj
5167
5168 2007-08-15  William Holmes  <billholmes54@gmail.com>
5169
5170         * marshal.c (emit_marshal_custom): Omit the call to 
5171           marshal_native_to_managed when calling native to managed 
5172           and the argument is specified as an out argument.
5173
5174         Code is contributed under MIT/X11 license.
5175
5176 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5177
5178         * verify.c: fixed the type checks for generics, function pointers and vectors.
5179         Added type verification for ldobj and ldtoken. The verifier
5180         would segfault if header or signature of a method contained references
5181         to non-existant types.
5182
5183 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5184
5185         * marshal.c (cominterop_get_ccw): Patch from
5186         Bill Holmes to no walk up interface hierarchy. 
5187         All parent methods should be present in the interface for COM.
5188    
5189         Code is contributed under MIT/X11 license.
5190
5191 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5192
5193         * marshal.c (emit_marshal_com_interface): Patch from
5194         Bill Holmes to handle COM Interfaces as return values
5195         for native->managed calls.
5196    
5197         Code is contributed under MIT/X11 license.
5198
5199 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
5200
5201         * marshal.c (cominterop_get_idispatch_for_object): Implement
5202         for runtime callable wrappers.
5203    
5204         Code is contributed under MIT/X11 license.
5205
5206 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * pedump.c (main): changed from mono_init to mono_init_from_assembly
5209         so 2.0 types are accessible
5210
5211
5212 2007-08-13  Miguel de Icaza  <miguel@novell.com>
5213
5214         * domain.c (mono_init_internal): Call mono_assembly_load_friends
5215         once we load mscorlib.   Due to the order in which we initialize,
5216         the mono_assembly_load_full routine that loads mscorlib did not
5217         load friends.   We now load it once we load the
5218         mono_defaults.internals_visible_class class. 
5219
5220         * assembly.c: Expose the mono_load_friend_assemblies method.
5221
5222 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * verify.c: improved the handling of boxing, better
5225         type checking for unary ops and conversion. Fix bug
5226         regarding managed pointer compatibility checking
5227
5228 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
5229
5230         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
5231
5232         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
5233
5234 2007-08-09  Raja R Harinath  <rharinath@novell.com>
5235
5236         * reflection.c (dup_type): Remove.
5237         * class.c (dup_type): Remove.
5238         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
5239         instead of the dodgy 'dup_type'.
5240         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
5241         handle the case where 'dup_type' needed the second argument.
5242
5243 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * domain.c: Fix a warning.
5246
5247 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5248
5249         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
5250         checking that methods with the same fqname are not overridden
5251         with a method from an ancestor.
5252
5253 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * threads.c (free_thread_static_data_helper): Avoid a crash if
5256         thread->static_data is not yet set.
5257
5258 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
5259
5260         * marshal.c: Use correct image when emitting
5261         native wrapper for COM calls.
5262    
5263         Code is contributed under MIT/X11 license.
5264
5265 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
5266
5267         * icall-def.h, security.c, security.h :
5268           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
5269
5270 2007-08-07  Martin Baulig  <martin@ximian.com>
5271
5272         * mono-debug-debugger.h
5273         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
5274
5275         * domain.c (mono_domain_free): Call
5276         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
5277
5278 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5279
5280         * verify.c (check_underflow, check_overflow): error message now returns IL offset
5281         * verify.c (in_same_block): code should test if either offset is inside the clauses
5282         * verify.c (mono_method_verify): push the exception into the eval stack of exception
5283         and filter blocks
5284
5285 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * image.c (mono_image_close): Fix a leak.
5288
5289         * object.c (mono_runtime_invoke_array): Avoid using alloca.
5290
5291         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
5292
5293 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
5294
5295         * domain.c, threads.c, threads-types.h: fix memory retention issue
5296         with thread static variables not being cleared on domain unload.
5297         Reuse thread static slots after domain unload.
5298
5299 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
5302         nullable type.
5303
5304         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
5305         now done in mono_runtime_invoke_array.
5306
5307         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
5308         receiver is a nullable type.
5309
5310         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
5311         generic parameter.
5312
5313 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
5314
5315         * marshal.c: Implement COM Objects as return type for 
5316         managed->unmanaged calls. Added Release calls for COM Object
5317         out/return values in managed->unmanaged calls.
5318
5319         Code is contributed under MIT/X11 license.
5320
5321 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
5322
5323         * threads.h, threads-type.h: move the hazard pointer declarations
5324         to the private header.
5325
5326 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
5327
5328         * file-io.c, appdomain.c: memory leak fixes.
5329
5330 2007-08-02  Dick Porter  <dick@ximian.com>
5331
5332         * socket-io.c
5333         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
5334         SO_REUSEADDR setting into io-layer/sockets.c.
5335
5336 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
5337
5338         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
5339         from Object when called on a generic parameter. Fixes #82211.
5340
5341 2007-08-01  Dick Porter  <dick@ximian.com>
5342
5343         * file-io.c (convert_share): Test FileShare values bit-by-bit.
5344         Fixes bug 79250 yet again.
5345
5346 2007-07-30  Martin Baulig  <martin@ximian.com>
5347
5348         Merged the `debugger-dublin' branch.
5349
5350         * mono-debug.h
5351         (MonoDebugDataTable): New typedef.
5352         (MonoDebugMethodAddressList): New typedef.
5353         (MonoDebugWrapperData): Removed.
5354         (MonoDebugSymbolTable): Removed `current_data_table',
5355         `current_data_table_size', `current_data_table_offset'.
5356         (MonoDebugDataItemType): Moved into mono-debug.c.
5357         (MonoDebugMethodJitInfo): Remove `address'.
5358         (mono_debug_data_table): New global variable.
5359         (mono_debug_lookup_method_addresses): New public function.
5360         (mono_debug_find_method): Take a `MonoMethod *', not a
5361         `MonoDebugMethodInfo *'.
5362
5363         * mono-debug.c: Drop support for the old symbol tables.
5364
5365 2007-06-28  Martin Baulig  <martin@ximian.com>
5366
5367         * mono-debug.c (mono_debug_debugger_version): New public variable.
5368
5369 2007-07-31  William Holmes  <billholmes54@gmail.com>
5370
5371         * metadata.c Changed mono_type_create_from_typespec to not insert
5372           the type into the hash map until after
5373           do_mono_metadata_parse_type has completed.
5374         Fixes Bug #82194
5375         Code is contributed under MIT/X11 license.
5376
5377 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
5380         generic parameter. Fixes #82211.
5381
5382 2007-07-27  Jb Evain  <jbevain@novell.com>
5383
5384         * pedump.c (dump_metadata, dump_metadata_header): dump
5385         versions contained in the metadata header.
5386
5387 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
5388
5389         * threads.c: register small_id_table with the GC.
5390
5391 2007-07-27  Mark Probst  <mark.probst@gmail.com>
5392
5393         * threads.c, threads.h, class-internals.h, object-internals.h:
5394         Hazard pointers, to be used by lock-free parallel algorithms.
5395
5396 2007-07-26  Dick Porter  <dick@ximian.com>
5397
5398         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
5399         routine on non-windows platforms, as I've not managed to think of
5400         a non-kludgy way of doing this.  Finishes off bug 78739.
5401
5402 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
5403
5404         * object.c: properly setup interface_bitmap in proxy vtables.
5405
5406 2007-07-25  Marek Habersack  <mhabersack@novell.com>
5407
5408         * appdomain.c (get_shadow_assembly_location): do not use TickCount
5409         to create unique shadow copy target directories, use the domain's
5410         serial number instead. Each domain gets a unique target directory
5411         that way.
5412
5413         * domain.c (mono_domain_create): added code to increment domain
5414         shadow copy serial number and cache the value in the current
5415         domain structure.
5416
5417         * domain-internals.h (struct _MonoDomain): added a new field -
5418         shadow_serial to hold the serial number used in generation of
5419         shadow-copy directories. This is to make sure that the directory
5420         name is unique for each and every domain created. We avoid a race
5421         condition with overriding assemblies already in use by other app
5422         domains.
5423
5424 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
5425
5426         * class.c (mono_bounded_array_class_get): fixed memory leak when 
5427         binding generic parameters.
5428
5429 2007-07-24  Raja R Harinath  <rharinath@novell.com>
5430
5431         * metadata.c (do_mono_metadata_parse_generic_class): Use
5432         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
5433         error.
5434
5435 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
5436
5437         * loader.c, class-internals.h, reflection.c: removed the per-method
5438         generics hashtable: we use the global one through the call of
5439         mono_class_inflate_generic_method ().
5440
5441 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5442
5443         * class.c, metadata.c, class-internals.h: introduce yet another
5444         generics global cache for inflated methods (fixes 98% of the perf
5445         issue in bug #81806).
5446
5447 2007-07-23  Raja R Harinath  <rharinath@novell.com>
5448
5449         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
5450         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
5451         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
5452         return a MonoGenericInst containing (a copy) of those types.
5453         (mono_metadata_inflate_generic_inst): Update to changes.
5454         (mono_metadata_parse_generic_inst): Likewise.
5455         (mono_get_shared_generic_inst): Likewise.
5456         * reflection.c (mono_class_bind_generic_parameters): Likewise.
5457         (mono_reflection_bind_generic_method_parameters): Likewise.
5458         * metadata-internals.h: Likewise.
5459         * icall.c (free_generic_context): Kill.
5460         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
5461
5462         * reflection.c (reflection_methodbuilder_to_mono_method): Use
5463         mono_metadata_type_dup.
5464         * marshal.c (mono_mb_create_method): Likewise.
5465
5466         * metadata.c (mono_metadata_type_dup): Rename from
5467         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
5468         MonoImage.  Handle a few more cases, esp. when no mempool is given.
5469         * marshal.c, metadata-internals.h: Update to changes.
5470
5471 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5472
5473         * class.c: fixed a small leak for array classes and removed warning.
5474
5475 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * loader.c (mono_method_get_param_token): Make this work on generic methods.
5478         Return 0x8000000 for return parameters. Fixes #82161.
5479
5480 2007-07-21  Marek Habersack  <grendello@gmail.com>
5481
5482         * appdomain.c (get_shadow_assembly_location): append the current
5483         ticks value to the path. Avoids overwriting the same assemblies by
5484         several threads at the same time.
5485
5486 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5487         and Raja R Harinath  <rharinath@novell.com>
5488
5489         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5490         Simplify slightly.
5491         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
5492         property for testing if a method is a generic method definition.
5493
5494 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5495
5496         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
5497
5498 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5499
5500         * verify.c: used function from private branch, reverted to the one in class.h 
5501
5502 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5503
5504         * verify.c: a typo slipped in and the code wont compile
5505
5506 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
5509         disabled box instruction as it is doing the wrong thing
5510         improved stack dump messages, now it is easier to debug type related issues
5511
5512
5513 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
5514
5515         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
5516
5517 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5518
5519         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
5520         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
5521         grouped with class and valuetype. This change will simply 
5522         the code as it should be handled just like unmanaged pointers.
5523
5524 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5525
5526         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
5527
5528 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5529
5530         * verify.c: several stack merge issues fixed, reference comparisons now
5531         check the type size. strict type check now works correctly.
5532         added more uses of IS_MANAGED_POINTER macro.
5533         fixed issues pointed by running the test suite against .net.
5534         
5535
5536 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5537
5538         * class.c, loader.c, class-internals.h: Removed the
5539         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
5540         defines.
5541
5542         * icall.c: Better error checking in some internal reflection
5543         methods.
5544
5545 2007-07-18  William Holmes  <billholmes54@gmail.com>
5546
5547         * filewatcher.c : removed unused variable 'filename' in 
5548           ves_icall_System_IO_FSW_SupportsFSW
5549
5550 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
5551
5552         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
5553         obsolete, removed.
5554
5555 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
5556
5557         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
5558         
5559         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
5560
5561 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
5562
5563         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
5564         Implement generics support.
5565         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5566
5567         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
5568         type_args and method_args arguments.
5569         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
5570         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5571         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
5572
5573 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
5576           It adds a rootimage parameter to mono_reflection_get_type_internal,
5577           adds new function mono_reflection_get_type_with_rootimage and use
5578           the rootimage to resolve the types instead of the current image
5579
5580 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5581
5582         * culture-info-table.h: Forgot to update after r78304.
5583
5584 2007-07-13  Raja R Harinath  <rharinath@novell.com>
5585
5586         * class.c (mono_class_is_open_constructed_type)
5587         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
5588
5589 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * class.c (mono_bounded_array_class_get):  method fails if used with
5592         an incomplete TypeBuilder enum (no basetype field), fixed it by 
5593         avoiding calculating the size for such array as it cannot be instantiated.
5594         Fix bug #82015
5595
5596 2007-07-12  Raja R Harinath  <rharinath@novell.com>
5597
5598         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
5599         field.
5600         * metadata.c, reflection.c: Update to changes.
5601
5602 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
5603
5604         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
5605         mono_class_is_valid_enum, they are used to valide a enum when loading.
5606         * reflection.c: used new functions to throw TypeLoadException when and
5607         invalid enum is build with TypeBuilder. Fixes #82018
5608   
5609 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5610
5611         * object.c: forgot commit of mono_class_setup_methods () to access
5612         iface->methods.
5613         * object-internals.h: added a few more handy fields to
5614         MonoIMTCheckItem.
5615
5616 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
5619         iface->methods.
5620
5621 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5622
5623         * class-internals.h, object-internals.h, object.c: IMT-based
5624         interface invocation core from Massimiliano Mantione
5625         (massi@ximian.com) with a reworked arch-specific interface,
5626         bsearch implementation and a few bugfixes and memory savings by me.
5627
5628 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
5629
5630         * class.c (mono_class_create_from_typedef): mono would segfault if 
5631         an enum did not have a __value field. It now throws a TypeLoadException
5632         for such cases. Fix bug #82022
5633
5634 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
5637
5638 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5639
5640         * class.c (mono_class_init): If a class is already inited but has
5641         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
5642
5643 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5644
5645         * class.c: Properly handle the case of an unimplemented interface
5646         method.  Fixes: 81673.
5647
5648 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5649
5650         * class-internals.h, object.c: cleanup patch from massi: use
5651         MonoVTable->interface_bitmap since the vtable interfaces offset array
5652         is going away.
5653
5654 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
5657         GetMDStreamVersion icall instead.
5658
5659 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
5660
5661         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
5662         not use mono_dl_build_path() with a full library name: makes
5663         fallbacks to libgaim and libfam work.
5664
5665 2007-07-06  William Holmes  <billholmes54@gmail.com>
5666
5667         * assembly.c: Added a continue statement in probe_for_partial_name when
5668          parse_assembly_directory_name fails.  Fixes : 82002
5669
5670 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
5671
5672         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
5673         and added a verification  for TYPEDBYREF.
5674         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
5675         make native int interchangeable with int32 and some small cleanup and formating.
5676         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
5677         handle byref of byref.
5678         * verify.c (push_local): handle byref of byref.
5679         * verify.c (do_binop): invalid mix of values is unverifiable
5680         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
5681         added visibility checks
5682         * verify.c (field related method): added visibility checks
5683         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
5684
5685 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
5686
5687         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
5688         string.
5689
5690 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * profiler.c (mono_profiler_load): Fix an off-by-one error.
5693
5694         * marshal.c (emit_marshal_string): When returning a string from managed code,
5695         allways make a copy even for unicode strings. Fixes #81990.
5696
5697 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
5698
5699         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
5700         of byref generic inst types (bug #81997).
5701
5702 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
5703
5704         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
5705         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
5706
5707 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * marshal.c (emit_marshal_string): Add support for unicode strings in
5710         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
5711
5712 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5713
5714         * verify.c: field load/store are now verified, missing only access checks now
5715
5716 2007-06-28  Martin Baulig  <martin@ximian.com>
5717
5718         * mono-debug.c (mono_debug_debugger_version): New public variable.
5719
5720 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
5721
5722         * locales.c: When constructing DateTimeFormat or NumberFormat for
5723         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
5724         MonoCultureInfo contructed from the current locale is always
5725         read-only and has UseUserOverride set to true. All MonoCultureInfo
5726         instances returned for GetCultures have both IsReadOnly and
5727         UseUserOverride set to true. Fixes part of bug #81930.
5728
5729 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
5730
5731        * icall-def.h: Update System.__ComObject icalls
5732        * marshal.c: Avoid managed transition (and object creation)
5733        when looking up COM interface in RCW.
5734        * marshal.h: Ditto.
5735        
5736        Code is contributed under MIT/X11 license.
5737
5738 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
5739
5740         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
5741         to avoid crashes during assembly unloading.
5742
5743 2007-06-22  Raja R Harinath  <rharinath@novell.com>
5744
5745         Fix MethodInfo.IsGenericMethodDefinition
5746         * reflection.c (mono_reflection_bind_generic_method_parameters):
5747         Rearrange code to ensure we always uses a generic method definition.
5748         * class.c (mono_class_inflate_generic_method_full): Set
5749         'generic_container' field only for generic method definitions.
5750         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5751         Use presense of 'generic_container' field as indication of being a
5752         generic method definition.
5753
5754 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5757
5758         * object-internals.h: Reflect changes in the layout of the managed Delegate
5759         class.
5760         
5761         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
5762         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
5763         runtime memory used by the dynamic method. Fixes #77146.
5764
5765 2007-06-21  Dick Porter  <dick@ximian.com>
5766
5767         * file-io.h: 
5768         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
5769         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
5770         81767.
5771
5772 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5773
5774         * reflection.c (method_encode_methodspec): Add a tripwire.
5775         * class.c (inflate_generic_type): The fully open generic type is
5776         not the same as the generic type definition.
5777
5778 2007-06-21  Martin Baulig  <martin@ximian.com>
5779
5780         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
5781
5782         * mono-debug-debugger.h
5783         (MonoDebuggerBreakpointInfo): Removed.
5784         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
5785         (mono_debugger_remove_breakpoint): Likewise.
5786         (mono_debugger_breakpoint_callback): Likewise.
5787         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
5788
5789 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5790
5791         * metadata.c (mono_metadata_lookup_generic_class): The fully open
5792         generic type is not the same as the generic type definition.
5793         * class.c (mono_generic_class_get_class): Likewise.
5794
5795 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
5796
5797         * icall.c: The second argument to 
5798         System.Reflection.MethodBase.GetMethodFromHandleInternalType
5799         is a MonoType not a MonoClass.
5800
5801 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5802
5803         * verify.c: support for function pointers in the verifier
5804
5805 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5806
5807         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
5808
5809 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
5810
5811         * assembly.c: removed Mono.Data.SqliteClient from the list of
5812         forward-compatible assemblies as it breaks the ABI (bug #81899).
5813
5814 2007-06-19  Raja R Harinath  <rharinath@novell.com>
5815
5816         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
5817         lookup/update with the loader lock.
5818         * reflection.c (mono_class_bind_generic_parameters): No need to
5819         protect mono_metadata_lookup_* with the loader lock.
5820         * class.c (inflate_generic_type): Likewise.
5821         
5822         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
5823         on a generic instantiated type.
5824
5825 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
5826
5827         *verify.c: produce meanfull error messages on verification error
5828         *verify.c: fixed some cases of verification errors reported as validation errors
5829         *pedump.c: fixed the error name array, now it shows validation errors properly
5830         *verify.h: fixed the contant that should be used for verification errors
5831
5832 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
5833
5834         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
5835         for bug #77596, 81858 and 80743 (generics data structures on domain
5836         unload).
5837
5838 2007-06-15  Raja R Harinath  <rharinath@novell.com>
5839
5840         Avoid allocating 'MonoGenericContext' on the heap.
5841         * class-internals (_MonoMethodInflated::context): Make field
5842         inline, not a pointer.
5843         * loader.c (method_from_methodspec): Allocate 'new_context' on the
5844         stack.  Use the context embedded within the inflated method as the
5845         hash key, rather than 'new_context'.
5846         * class.c (inflate_generic_context): Simplify.  Return a struct
5847         rather than allocating on the heap.
5848         (mono_class_inflate_generic_method_full): Update to changes.  Now,
5849         doesn't salt away a copy of the context -- simplifying the
5850         lifetime rules of a 'MonoGenericContext *'.
5851         (mono_method_get_context): Return pointer to embedded context.
5852         (setup_generic_array_ifaces): Allocate temporary context on stack.
5853         * reflection.c (inflate_mono_method): Likewise.
5854         (mono_reflection_bind_generic_method_parameters): Likewise.
5855         Use the context embedded within the inflated method as the hash key.
5856
5857         Avoid a source of allocation of 'MonoGenericContext'.
5858         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
5859         and 'cached_context' fields into embedded 'MonoGenericContext' field.
5860         * class.c: Update to changes.
5861         (mono_generic_class_get_context): Simplify drastically.  Now just
5862         returns a pointer to the field.
5863         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
5864         argument as a const pointer.
5865         (mono_metadata_generic_context_equal): Likewise.
5866         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
5867         Update to changes.
5868
5869 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
5870
5871         * verify.c improved the handling of brtrue/brfalse, factored out common code
5872
5873 2007-06-14  Raja R Harinath  <rharinath@novell.com>
5874
5875         Kill MonoGenericMethod.
5876         * class-internals.h (MonoGenericContext::method_inst): Rename from
5877         'gmethod' and convert to a MonoGenericInst.
5878         (MonoGenericMethod): Remove.
5879         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
5880         * loader.c (method_from_methodspec): Update to changes.  Use a
5881         MonoGenericContext as the key to the hashtable.
5882         * metadata.c (mono_metadata_generic_context_equal): Rename from 
5883         'mono_metadata_generic_method_equal' and take MonoGenericContext.
5884         (mono_metadata_generic_context_hash): Likewise from
5885         'mono_metadata_generic_method_hash'.  Change hash function.
5886         (mono_metadata_load_generic_params): Update to changes.
5887         (mono_get_shared_generic_method): Remove.
5888         * metadata-internals.h (mono_get_shared_generic_method): Remove.
5889         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
5890         (inflate_generic_context): Likewise.
5891         (mono_class_inflate_generic_method_full): Likewise.
5892         (setup_generic_array_ifaces): Likewise.
5893         (mono_class_create_from_typespec): Likewise.
5894         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
5895         (method_encode_methodspec): Update callsite.
5896         (reflection_methodbuilder_to_mono_method): Update to changes.
5897         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
5898         MonoGenericContext as the key to the hashtable.
5899         (inflate_mono_method): Update to changes.
5900
5901         * class-internals.h (MonoGenericMethod::container): Remove.
5902         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5903
5904 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
5905
5906         * profiler-private.h, profiler.c, profiler.h: added API to profile
5907         exception events.
5908
5909 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5910
5911         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
5912
5913 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5914
5915         * verify.c: method invocation is now validated, now we verify parameter types on stack.
5916         Fixed overflow and underflow not aborting the verification process.
5917
5918 2007-06-13  Mark Probst  <mark.probst@gmail.com>
5919
5920         * class-internals.h (MonoStats): Added stats entries for dynamic
5921         code allocations.
5922
5923 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
5924
5925         * loader.c (mono_free_method): Free header->locals and header->clauses.
5926
5927         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
5928         dynamic case.
5929
5930         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
5931
5932         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
5933
5934 2007-06-12  Raja R Harinath  <rharinath@novell.com>
5935
5936         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
5937         the tables.
5938
5939 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5940
5941         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
5942
5943 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5944
5945         MonoGenericMethod on a diet
5946         * class-internals.h (_MonoMethodInflated::reflection_info): Move
5947         here ...
5948         (_MonoGenericMethod::reflection_info): ... from here.
5949         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
5950         Update to changes.
5951         * reflection.c (inflate_mono_method): Likewise.
5952         (mono_reflection_bind_generic_method_parameters): Likewise.
5953
5954 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5955
5956         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
5957         *verify.c: factored long ldarg forms to share code with short forms
5958
5959 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5960
5961         *verify.c: fixed code formating factored some duplicate code
5962         into a new function
5963
5964         *verify.h: fixed binary incompatibility introduced earlier
5965
5966         *pedump.c: fixed formating
5967
5968 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5969
5970         Fix assertion when disassembling Mono.C5.dll
5971         * loader.c (method_from_methodspec): Avoid inflating a method
5972         twice with the same context.  If the methodref is inflated, use
5973         the declaring method instead.
5974
5975         * class.c (mono_class_from_generic_parameter): Fix case similar to
5976         bug #81830 handled below, but for method containers.
5977
5978 2007-06-10  Raja R Harinath  <harinath@gmail.com>
5979
5980         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
5981         get_shared_generic_class.  Directly inflate the instance.
5982         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
5983         (inflate_generic_class): Delete.
5984         (get_shared_generic_class): Delete.  Move setting of
5985         'cached_class' and 'cached_context' ...
5986         * metadata.c (mono_metadata_lookup_generic_class): ... here.
5987
5988         * metadata.c (mono_metadata_lookup_generic_class): Change
5989         signature to take the components of a MonoGenericClass rather than
5990         an allocated MonoGenericClass.  Change semantics to be intern-like.
5991         * reflection.c (mono_class_bind_generic_parameters): Update to
5992         changes.  Make locking region tighter.
5993         * class.c (inflate_generic_class): Update to changes.
5994         (get_shared_generic_class): Likewise.
5995         * metadata-internals.h: Likewise.
5996
5997         * reflection.c (mono_class_bind_generic_parameters): Take and
5998         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
5999         (mono_reflection_bind_generic_parameters): Use
6000         'mono_class_bind_generic_parameters' rather than duplicate the code.
6001         * class.c (mono_bounded_array_class_get): Update to changes.
6002         * object-internals.h: Likewise.
6003
6004         * reflection.c (mono_class_bind_generic_parameters): Only support
6005         parameterizing generic type definitions.  Remove support for other
6006         open types.
6007
6008 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
6011
6012         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
6013         in the dynamic case.
6014
6015 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
6016
6017         * threads.c: When cleaning up thread, reset the Background bit.
6018         Fixes bug #81720.
6019
6020 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
6021
6022        * metadata.c: Move variable declarations to top of scope.
6023        * verify.c: Move variable declarations to top of scope.
6024
6025        Code is contributed under MIT/X11 license.
6026
6027 2007-06-08  Raja R Harinath  <rharinath@novell.com>
6028
6029         * reflection.c (mono_class_bind_generic_parameters): Replace
6030         open-coded loop with mono_metadata_inflate_generic_inst.
6031
6032         * class.c (get_shared_generic_class): Don't call
6033         mono_get_shared_generic_inst.  Use the container's own
6034         'class_inst'.
6035
6036         * metadata.c (mono_metadata_load_generic_params): Move
6037         initialization of 'context' field here from ...
6038         * class.c (mono_class_create_from_typedef): ... here, and ...
6039         * loader.c (mono_get_method_from_token): ... here.
6040
6041         * class.c (get_shared_generic_class): Rename from
6042         mono_get_shared_generic_class and make static.
6043         (mono_get_shared_generic_inst): Move to metadata.c.
6044         * loader.c (mono_get_shared_generic_method): Likewise.
6045         * class-internals.h, metadata-internals.h: Update to changes.
6046
6047         Fix #81830
6048         * class.c (mono_class_from_generic_parameter): Don't assume a
6049         generic container owner exists.  Generic containers from monodis
6050         don't have any.
6051
6052 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
6053
6054         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
6055         * verify.h: new typedefs to returns the non-verifiable status
6056         * verify.c: initial implementation of generics, stack merging and object compatibility check
6057
6058 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6059
6060         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6061         a MonoInternalHashTable again (fixed bug in internal hash table
6062         code).
6063
6064 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6065
6066         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6067         MonoInternalHashTable again (fixed bug in internal hash table
6068         code).
6069
6070 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6071
6072         * class.c, image.c, class-internals.h, domain.c,
6073         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
6074         changes.  Have to figure out what makes them break the SWF
6075         regression.
6076
6077 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6078
6079         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6080         a MonoInternalHashTable now.
6081
6082 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6083
6084         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6085         MonoInternalHashTable now.
6086
6087 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
6090         invoke_impl code.
6091
6092         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
6093
6094         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
6095         dependent trampoline.
6096
6097         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6098
6099         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
6100
6101 2007-05-29  Robert Jordan  <robertj@gmx.net>
6102
6103         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
6104
6105 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
6108
6109 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
6110
6111        * marshal.c: Fix interface lookup loops for
6112        cominterop_get_com_slot_for_method and 
6113        cominterop_get_method_interface. Only need to lookup
6114        if type is a class, else use interface type method is on.
6115
6116        Code is contributed under MIT/X11 license.
6117
6118 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
6119
6120         * reflection.c: HasSecurity can be present even if no specially 
6121         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
6122         SecurityAttribute). Fix CAS regression tests on buildbot.
6123
6124 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
6125
6126        * appdomain.c: Add configure checks for header files.
6127        * image.c: Add configure checks for header files.
6128        * file-io.c: Add configure checks for header files.
6129        * debug-mono-symfile.c: Add configure checks for header files.
6130        * threadpool.c: Add configure checks for header files.
6131        * console-io.c: Add configure checks for header files.
6132        * profiler.c: Add configure checks for header files.
6133        * rawbuffer.c: Add configure checks for header files.
6134        * icall.c: Add configure checks for header files.
6135        * rand.c: Add configure checks for header files.
6136        * socket-io.c: Add configure checks for header files.
6137
6138        Code is contributed under MIT/X11 license.
6139
6140 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * reflection.c (mono_custom_attrs_from_builders): Remove the 
6143         assertion as it breaks the build.
6144         
6145         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
6146
6147         * reflection.c (lookup_custom_attr): Make a copy here too.
6148
6149         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
6150         dynamic images.
6151
6152         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
6153         images.
6154
6155         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
6156         info.
6157
6158 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
6161         (load_cattr_value): Ditto.
6162
6163 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
6166
6167 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
6168
6169         * threads.c: In "start_wrapper", set apartment_state to MTA if
6170         apartment_state is Unknown and we're running on 2.0 profile or
6171         higher.
6172         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
6173         to main method, then set apartment_state to Unknown on 1.0 profile,
6174         and MTA on 2.0 profile.
6175
6176 2007-05-16  Jb Evain  <jb@nurv.fr>
6177
6178         * class-internals.h (MonoDefaults): Add an attribute_class and
6179           customattribute_data_class.
6180         * domain.c (mono_init_internal): Populate them.
6181         * reflection.c: Use them to remove duplicates. Make a vew
6182         MonoClass variables `static'.
6183
6184 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6185
6186         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
6187         step in implementing IMT, so that all isinst checks now can go
6188         through the bitmap.
6189         This was needed because vtables for TransparentProxy need to look
6190         like the vtable of the "target" class, so they need to point to
6191         its interface bitmap directly.
6192
6193         * object.c: inside "mono_class_create_runtime_vtable" and
6194         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
6195
6196 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
6197
6198         * object-internals.h
6199           culture-info.h : added territory field in MonoCulture and
6200           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
6201         * locales.c : fill territory field above too.
6202         * culture-info-table.h : regenerated.
6203
6204 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
6207         Fixes #81599.
6208
6209 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
6210
6211         * object.c: Always initialize apartment, even if 
6212         there is no custom attributes on entry point.
6213         
6214         Code is contributed under MIT/X11 license.
6215
6216 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
6217
6218         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
6219         * metadata.c: If no encoding is set, check for unicode
6220         on class.
6221         
6222         Code is contributed under MIT/X11 license.
6223
6224 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6225
6226         * threads.c: Handle if mono_thread_current returns NULL 
6227         
6228         Code is contributed under MIT/X11 license.
6229
6230 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6231
6232         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
6233         in start_wrapper. Added mono_thread_init_apartment_state and
6234         mono_thread_cleanup_apartment_state.
6235         * object.c: Initialize thread apartment state on main thread
6236         by checking for STAThreadAttribute on entry point.
6237         * object-internals.h: Add apartment_state field to MonoThread.
6238         * threads-types.h: Add unmanaged definition of 
6239         System.Threading.ApartmentState, MonoThreadApartmentState.
6240         
6241         Code is contributed under MIT/X11 license.
6242         
6243 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
6244
6245         * class.c: Fix windows build.
6246         * class-internals.h: Fix windows build.
6247         
6248         Code is contributed under MIT/X11 license.
6249
6250 2007-05-08  Robert Jordan  <robertj@gmx.net>
6251
6252         * process.c (CreateProcess_internal):
6253         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
6254         .CreateNoWindow was specified. Fixes #81496.
6255
6256 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6257
6258         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
6259         step in implementing IMT, replaced it with two compact arrays
6260         (interfaces_packed and interface_offsets_packed) and a bitmap that
6261         is used for isinst checks (interface_bitmap).
6262
6263         * class.c: (compare_interface_ids): compare function to pass to
6264         bsearch when looking for an interface with a given id.
6265         (mono_class_interface_offset): reimplemented using bsearch on
6266         interfaces_packed, getting the offset from interface_offsets_packed.
6267         (print_implemented_interfaces): utility debugging function.
6268         (setup_interface_offsets): reworked to initialize interfaces_packed,
6269         interface_offsets_packed and interface_bitmap.
6270
6271         * object.c: replaced all accesses to "MonoClass.interface_offsets"
6272         with uses of interfaces_packed and interface_offsets_packed.
6273
6274 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6275
6276         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
6277         mono_class_interface_offset prototype to wrap all accesses to
6278         "MonoClass.interface_offsets".
6279
6280         * class.c: Implemented mono_class_interface_offset, and wrapped all
6281         accesses to "MonoClass.interface_offsets".
6282
6283         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
6284         "MonoClass.interface_offsets".
6285
6286 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
6287
6288         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
6289         GetMethodFromHandle overloads (bug #78637).
6290
6291 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6292
6293         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
6294         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
6295
6296 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
6297
6298         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
6299         #81498.
6300
6301         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
6302         gracefully.
6303         (mono_custom_attrs_from_index): Ditto.
6304
6305         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
6306         Fixes #81501.
6307
6308 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
6311         is now allocated from a mempool.
6312
6313 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
6314
6315         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
6316         caller holds threads_lock, leading to deadlocks. Fixes #81476.
6317
6318 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
6321         mono_loader_clear_error () too late. Fixes #81463.
6322
6323 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
6324
6325         * culture-info-table.h : regenerated.
6326
6327 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
6330         is missing.
6331
6332 2007-04-25  Dick Porter  <dick@ximian.com>
6333
6334         * Makefile.am: Put the mingw enforced-optimisation back into the
6335         PLATFORM_WIN32 section.
6336
6337 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
6338
6339         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
6340         patch.
6341
6342         * image.c (mono_image_load_module): New API function to load a module reference.
6343
6344         * image.c (load_modules): Load modules lazily. Fixes #80812.
6345
6346         * class.c (mono_class_from_typeref): Use mono_image_load_module.
6347         
6348         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
6349
6350         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
6351         to mono_image_load_module_dynamic.
6352
6353 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
6354
6355         * marshal.c: Fix calling convention for CCW on non-windows
6356         platforms. STDCALL on windows, CDECL everywhere else to work 
6357         with XPCOM and MainWin COM.
6358         
6359         Code is contributed under MIT/X11 license.
6360
6361 2007-04-23  Martin Baulig  <martin@ximian.com>
6362
6363         Fix #80969.
6364
6365         * loader.c
6366         (method_from_memberref): Added `gboolean *used_context' argument.
6367         (mono_get_method_from_token): Likewise.
6368         (mono_get_method_full): Don't insert the method in the cache when
6369         `used_context' is true.
6370
6371 2007-04-23  Raja R Harinath  <rharinath@novell.com>
6372
6373         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
6374
6375         * reflection.c (mono_reflection_bind_generic_parameters): Don't
6376         create new MonoTypes for returned types.
6377         * class.c (mono_generic_class_get_class): Export mono-internal.
6378         * class-internals.h: Update to changes.
6379
6380 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
6381
6382         * threadpool.c, threadpool.h, icall-def.h: patch from
6383         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
6384
6385 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
6386
6387         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
6388         
6389         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
6390
6391         * threads.c (mono_thread_get_stack_bounds): New helper function.
6392
6393         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
6394         Correctly compute stack bounds when attaching. Fixes #81394.
6395
6396 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
6397
6398         * reflection.c: fix handling of doubles in custom attributes
6399         for the arm-fpa format (bug #81368).
6400
6401 2007-04-18  Raja R Harinath  <rharinath@novell.com>
6402
6403         * reflection.c (assembly_add_win32_resources): Mildly relax an
6404         bounds check to let the end pointer point just past the end of the
6405         allocated buffer.  (may fix #81384)
6406
6407 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
6408
6409         * culture-info-table.h : regenerated.
6410
6411 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
6412
6413         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
6414         the thread is aborted early.
6415
6416 2007-04-05  Dick Porter  <dick@ximian.com>
6417
6418         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
6419         FindFirstFile()/FindNextFile() to find entries.  This lets the
6420         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
6421         81038.
6422
6423         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
6424         the parameters of
6425         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
6426
6427 2007-04-04  Martin Baulig  <martin@ximian.com>
6428
6429         * debug-helpers.c
6430         (mono_method_desc_full_match): Add support for nested classes.
6431
6432 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
6435
6436 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
6437
6438         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
6439         waiting for too many threads.
6440
6441 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
6442
6443         * environment.c: Fix return value check on uname so we can get the 
6444         executing version on Solaris operating systems.
6445
6446 2007-03-28  Jb Evain  <jbevain@gmail.com>
6447
6448         * class.c (mono_type_get_name_recurse): Complete the
6449         fix for the creation of assembly qualified names for
6450         pointer types. Fixes #81208.
6451
6452 2007-03-27  Dick Porter  <dick@ximian.com>
6453
6454         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
6455         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
6456         changed.
6457
6458         * threads.c
6459         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
6460         the value of ReleaseMutex().
6461
6462 2007-03-27  Dick Porter  <dick@ximian.com>
6463
6464         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
6465         in little-endian order, not network endian, so must be converted
6466         to host endian here.  Fixes bug 80593.
6467
6468 2007-03-22  Jb Evain  <jbevain@gmail.com>
6469
6470         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
6471         qualified names for pointer types. Fixes #81208.
6472
6473 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
6474
6475         * marshal.c: Add support for PreserveSigAttribute. 
6476         
6477         Code is contributed under MIT/X11 license.
6478
6479 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * process.c: Fix endianness issues. Fixes #81126.
6482
6483         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
6484         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
6485
6486         * image.c (mono_image_lookup_resource): Make this work on big-endian
6487         machines.Change API contract so the caller needs to free the return value.
6488         
6489         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
6490         API change.
6491         
6492 2007-03-14  Martin Baulig  <martin@ximian.com>
6493
6494         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
6495         mono_type_get_desc() as well.
6496
6497 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
6498
6499         * icall.c:  Fix environ access in VS.  
6500         
6501 2007-03-13  Alp Toker  <alp@atoker.com>
6502
6503         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
6504         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
6505         #63841.
6506
6507 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
6508
6509         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
6510         circular references among dynamic methods. Fixes #81091.
6511
6512         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
6513
6514 2007-03-09  Martin Baulig  <martin@ximian.com>
6515
6516         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
6517
6518 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
6519
6520         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
6521         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
6522         
6523         Code is contributed under MIT/X11 license.
6524         
6525 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
6526
6527         * loader.c: Reapply patch for bug #79424.
6528
6529 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * metadata.c (mono_type_to_unmanaged): Only convert object to
6532         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
6533
6534 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
6535
6536         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
6537         (and incorrectly set) is_reference field from MonoGenericInst.
6538
6539 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6540
6541         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
6542         a little earlier.
6543
6544         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
6545
6546         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
6547
6548 2007-03-05  Miguel de Icaza  <miguel@novell.com>
6549
6550         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
6551         FileOptions.1 value to mean "temporary", map that to
6552         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
6553
6554         Fixes 80688
6555
6556 2007-03-03  Marek Habersack  <mhabersack@novell.com>
6557
6558         * appdomain.c: implement MS .Net style shadow copying. Copies of
6559         the assemblies are made in a subdirectory of the dynamic base
6560         directory, the assembly names are preserved.
6561         Copy .mdb and .config files along with the assemblies being shadowed.
6562
6563 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
6566         (emit_marshal_handleref): Ditto.
6567
6568         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
6569         on Visual C++. Fixes #80671.
6570
6571 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
6572
6573         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
6574         for clone operations.
6575
6576 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6577
6578         * marshal.c: Fix warnings.
6579
6580 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
6581
6582         * loader.c: allow case-insensitive matching of the dll name
6583         in dllmap handling when prefixed with "i:".
6584
6585 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
6586
6587         * threads.c: Fix #ifdef for dummy_apc function for VS.
6588
6589 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
6590
6591         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
6592
6593 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
6594         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
6595         giving precedence to the methods with a fully qualified name
6596         (InterfaceName.MethodName) when building the interface sections
6597         of the vtable.
6598
6599 2007-02-16  Dick Porter  <dick@ximian.com>
6600
6601         * threadpool.c (append_job): Fix fast-path array handling, so it's
6602         less likely the array will grow exponentially when the load is
6603         heavy.
6604
6605 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6606
6607         * metadata-internals.h, loader.c: fix dllmap lookup order
6608         for non-function maps, too, and prepare for fallback code.
6609
6610 2007-02-12  Robert Jordan  <robertj@gmx.net>
6611
6612         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
6613         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
6614         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
6615         GlobalFree. Fixes a part of bug #77075.
6616
6617 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
6618
6619         * loader.c: implemented typedef parent in field memberref.
6620
6621 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
6622
6623         * marshal.c: Fix warnings and remember to call Release on
6624         IUnknown of RCW.
6625         
6626         Code is contributed under MIT/X11 license.
6627
6628 2007-02-10  Miguel de Icaza  <miguel@novell.com>
6629
6630         * class-internals.h: Add MonoHandleRef definition, and
6631         handleref_class to mono_defaults. 
6632
6633         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
6634         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
6635
6636         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
6637         (do nothing on this stage)
6638         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
6639         (emit_marshal_handleref): New method, used for argument handling
6640         of HandleRefs. 
6641
6642 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
6643
6644         * class.c (mono_class_setup_parent): Lazily init com types.
6645         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
6646         init com types.
6647         * object.c (mono_remote_class_vtable): Lazily init com types.
6648         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
6649         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
6650         * domain-internals.h: Expose mono_init_com_types.
6651         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
6652         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
6653         Add support for COM Callable Wrapper marshalling.
6654         * marshal.h: Add icall definitions.
6655         * gc.c: Handle freeing of CCWs in finalizer code.
6656         
6657         Code is contributed under MIT/X11 license.
6658
6659 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
6660
6661         * reflection.c: changed all the signature encoding code to use
6662         a variable-sized buffer.
6663
6664 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6665
6666         * marshal.c: locking fixes: never take the loader lock
6667         or other runtime locks when holding the marshal lock
6668         (fixes bug#80664).
6669
6670 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
6671
6672         * marshal.c: make the delegate function pointer mapping
6673         work for the moving GC.
6674
6675 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
6676
6677         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
6678         for bug #80618.
6679
6680 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6681
6682         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
6683         gmodule.
6684
6685 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
6686
6687         * threadpool.c: made the code moving-GC safe.
6688
6689 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6690
6691         * assembly.c, boehm-gc.c, class-internals.h, class.c,
6692         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
6693         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
6694         warning cleanup.
6695         * reflection.c: warning cleanup, some threading and moving GC fixes.
6696
6697 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
6698
6699         * class.c, loader.c: create the needed Set/Get/Address array methods
6700         as well as the .ctors in mono_class_init (), fixes bug #80567.
6701
6702 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
6705         we doesn't decrease its alignment. Should fix the sparc build.
6706
6707 2007-01-24  Dick Porter  <dick@ximian.com>
6708
6709         * socket-io.c
6710         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
6711         Create the returned object if we need to ignore an unsupported
6712         socket option.  Fixes a segfault reported by Atsushi.
6713
6714 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6715
6716         * class.c, object.c: restrict GC-tracked fields to
6717         UIntPtr fields used inside corlib, so we provide better
6718         type info to the GC and also allow broken packing as in
6719         bug #80580.
6720
6721 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
6722
6723         * sgen-gc.c: removed duplicated function.
6724
6725 2007-01-19  Miguel de Icaza  <miguel@novell.com>
6726
6727         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
6728         value that means that the value is not supported, but that we
6729         should not return a failure, but instead report this as a
6730         successful operation.
6731
6732 2007-01-19  Raja R Harinath  <rharinath@novell.com>
6733
6734         Fix tests/bug79956.2.il
6735         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
6736         (mono_generic_class_get_class): If the generic definition in an
6737         enum, copy over other fields related to it.
6738
6739 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
6740
6741         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
6742         genericinst enums (bug #79215).
6743
6744 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
6745         * class.c: Fix bug 80307.
6746
6747 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
6748
6749         * image.c: if the file table is not present, try to load
6750         all the modules, since we don't have info about them
6751         having or not metadata (bug #80517).
6752         * assembly.c: allow mono_assembly_load_references () to
6753         work for netmodules.
6754
6755 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6756
6757         * image.c, metadata-internals.h, object.c: execute module
6758         cctors when running on the 2 runtime if present (bug #80487).
6759
6760 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6761
6762         * icall.c: optimized InitializeArray() on bigendian.
6763
6764 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
6765
6766         * icall.c: fix for the broken ARM FPA double format.
6767
6768 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
6769
6770         * icall.c: handle endian issues for r4 and r8 types, too, in
6771         the InitializeArray() icall.
6772
6773 2007-01-15  Miguel de Icaza  <miguel@novell.com>
6774
6775         * loader.c (mono_loader_error_prepare_exception): Clear the error
6776         once we have extracted the information from it, do this before we
6777         call into the JIT's class loading mechanisms.
6778
6779         * object.c (mono_class_create_runtime_vtable): Do not clear the
6780         loader error before calling mono_class_get_exception_for_failure
6781         as the loader error is needed inside
6782         mono_class_get_exception_for_failure to throw the error (thinko).
6783
6784         Fixes #80521
6785         
6786 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
6787
6788         * reflection.c: align fields rva data so it's faster to load at
6789         runtime.
6790
6791 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6792
6793         Prepare to simplify GenericMethod handling.
6794         * class-internals.h (mono_method_get_context): New accessor function.
6795         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
6796         rather than directly accessing '->context' field.
6797
6798         * class-internals.h (_MonoGenericParam.method): Move ...
6799         (_MonoGenericContainer): ... here.  Add into union with klass field.
6800         * class.c, icall.c, loader.c, metadata.c, reflection.c:
6801         Update to changes.
6802
6803 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
6804
6805         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
6806         the wrapper type enum and reduce relocations.
6807
6808 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6809
6810         * reflection.c (inflate_mono_method): Reuse method instantiation
6811         from the generic method, if available.
6812
6813 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6814
6815         * marshal.c (emit_marshal_variant): Fix conv_arg
6816         type in last commit, based on whether parameter is byref.
6817         
6818 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6819
6820         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
6821         marshalling.
6822         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
6823         MONO_TYPE_OBJECT back for VARIANT support.
6824
6825 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6826
6827         * marshal.c, marshal.h, icall-def.h: Implement 
6828         Marshal.ReAllocCoTaskMem.
6829
6830 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
6831
6832         * marshal.c: memory retention fixes: use the proper
6833         image cache for runtime_invoke method lookups.
6834
6835 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
6836
6837         * mempool.c: added code to help debug mempool allocations.
6838
6839 2007-01-11  Dick Porter  <dick@ximian.com>
6840
6841         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
6842         support (experimenting with faking it with IP_MTU_DISCOVER for
6843         systems that don't have IP_DONTFRAGMENT.)
6844         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
6845         icall.
6846
6847         * icall-def.h: new System.Net.Sockets.Disconnect icall.
6848
6849         * socket-io.h: Add new fields to MonoSocketAsyncResult
6850         corresponding to the new ones in Socket.cs.
6851
6852 2007-01-11  Raja R Harinath  <rharinath@novell.com>
6853
6854         Fix IronPython regression mentioned in #80249
6855         * metadata.c (do_mono_metadata_parse_generic_class): Clear
6856         'cached_context' field, since it may have been initialized as a
6857         side-effect of metadata parsing.
6858
6859         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
6860         (_MonoGenericClass.cached_class): Move here and rename from lone
6861         remaining field of ...
6862         (_MonoInflatedGenericClass): ... this.  Remove.
6863         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
6864         to changes.
6865
6866         Fix mcs/tests/test-128.cs regression.
6867         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
6868         2007-01-10 change below.
6869         [MONO_TYPE_OBJECT]: Recurse into array case.
6870
6871 2007-01-11  Raja R Harinath  <harinath@gmail.com>
6872
6873         * class-internals.h (mono_get_inflated_generic_class): Remove.
6874         * class.c (mono_get_inflated_generic_class): Remove.
6875         (mono_generic_class_get_class): Rename from
6876         mono_class_create_generic.
6877         (mono_class_from_mono_type) [GENERICINST]: Use it.
6878         * reflection.c, metadata.c: Update to changes.  Use
6879         'mono_class_from_mono_type'.
6880
6881 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
6882
6883         * reflection.c: use passed type when encoding an array element
6884         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
6885
6886 2007-01-09  Robert Jordan  <robertj@gmx.net>
6887
6888         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
6889         result arguments (someDelegate.EndInvoke (unrelatedAres)).
6890         Fixes bug #80392.
6891
6892 2007-01-09  Raja R Harinath  <rharinath@novell.com>
6893
6894         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
6895
6896         * object.c (set_value): Avoid aliasing between type->data.klass
6897         and type->data.generic_class.
6898
6899         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
6900
6901 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6902
6903         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
6904         between type->data.klass and type->data.generic_class.
6905
6906 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
6907
6908         * marshal.c: In MS.NET, StringBuilder objects are not copied by
6909         value in out parameters.
6910
6911 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6912
6913         Simplify invariant for MonoGenericClass::klass field.
6914         * class.c (mono_class_create_generic): Verify 'klass' is null.
6915         * metadata.c (do_mono_metadata_parse_generic_class): Don't
6916         initialize 'klass' field.
6917
6918 2007-01-05  Raja R Harinath  <rharinath@novell.com>
6919
6920         Ongoing work to avoid redundant data and simplify invariants.
6921         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
6922         'generic_class', and change type to a GenericInst.
6923         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
6924         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
6925
6926 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
6927
6928         * class.c : skip io-layer under PLATFORM_WIN32.
6929
6930 2007-01-03  Tor Lillqvist  <tml@novell.com>
6931
6932         Fix #80305: In a bundled executable, look in the bundled exe
6933         assembly to determine the runtime version. Add the possibility to
6934         bundle also the machine.config file.
6935         
6936         * assembly.c (mono_assembly_open_from_bundle): Make
6937         non-static. Allow being called even if we have no bundled
6938         assemblies, and return NULL right away in that case.
6939
6940         * domain-internals.h: Declare mono_assembly_open_from_bundle()
6941         here.
6942
6943         * domain.c (app_config_parse): Take an assembly exe file name as
6944         parameter instead of a config file name. Check for a bundled
6945         config file for that assembly by calling
6946         mono_config_string_for_assembly_file() (see below) before looking
6947         for one in the file system.
6948         (get_runtimes_from_exe): Corrsponding change to call of
6949         app_config_parse().
6950         (get_runtimes_from_exe): Check for bundled assembly exe file first
6951         by calling mono_assembly_open_from_bundle(). If no bundled
6952         assembly exe file is found, call mono_image_open() as before to
6953         look it up in the file system.
6954
6955         * mono-config.c: Add variable bundled_machinec_onfig.
6956         (mono_config_string_for_assembly_file): New function.
6957         (mono_config_for_assembly): Move code snippet that looks for a
6958         bundled assembly .config file into the above new function. Call
6959         it.
6960         (mono_register_machine_config, mono_get_machine_config): New
6961         functions to set and retrieve
6962
6963         * assembly.h: Declare mono_register_machine_config().
6964
6965         * mono-config.h: Declare mono_get_machine_config() and
6966         mono_config_string_for_assembly_file().
6967
6968         * icall.c: No declaration of environ necessary on Win32. It is
6969         declared (as a macro expanding to a function call) in stdlib.h.
6970         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
6971         New internal mono function. Returns the value of
6972         mono_get_machine_config() as a Mono string.
6973
6974         * icall-def.h: Add get_bundled_machine_config().
6975
6976 2007-01-04  Raja R Harinath  <rharinath@novell.com>
6977
6978         Remove redundant field
6979         * class-internals.h (_MonoGenericContext.container): Remove field.
6980         * loader.c (mono_method_get_signature_full): Don't parse a
6981         "container" for a signature parse when the signature is inflated
6982         immediately.
6983         (method_from_methodspec): Likewise, for a generic_inst.
6984         * class.c, metadata.c, reflection.c: Update to changes.
6985
6986 2006-01-04  Raja R Harinath  <rharinath@novell.com>
6987
6988         * class-internals.h (_MonoGenericClass): Rename 'context' field to
6989         'cached_context', and change semantics -- it starts off NULL, and
6990         is initialized on demand.
6991         * class.c (mono_generic_class_get_context): New accessor to
6992         replace 'context' field accesses.
6993         (mono_class_get_context): New helper.
6994         (*): Update to changes.
6995         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
6996
6997 2007-01-03  Miguel de Icaza  <miguel@novell.com>
6998
6999         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
7000         before the memcpy.   Fixes Marshal2 regression.
7001
7002 2007-01-02  Jb Evain  <jbevain@gmail.com>
7003
7004         * blob.h: add a MONO_TYPE_ENUM definition
7005         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
7006         fix the encoding of arrays of enums in custom attributes.
7007
7008         Fixes #79666.
7009
7010 2007-01-01  Miguel de Icaza  <miguel@novell.com>
7011
7012         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
7013         string is null terminated, but only cut the string short if it
7014         overflows the buffer.   
7015         
7016         (mono_string_to_byvalstr): Also fix this routine.   The code here
7017         was not properly terminating a string (it was only terminated
7018         because of the previous catch-all memset). 
7019
7020         I left the memset, because I do not know if applications expect
7021         the runtime to clear this region. 
7022
7023         Fixes #79944.
7024
7025         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
7026         Clear the error before returning to unmanaged code to prevent the
7027         runtime from being confused later on (fixes  80420).
7028         (ves_icall_type_from_name): Always call mono_loader_clear_error
7029         after parsing a type that could have failed.
7030         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
7031
7032         * loader.c (mono_loader_clear_error): Fix indentation.
7033
7034 2006-12-28  Martin Baulig  <martin@ximian.com>
7035
7036         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
7037
7038 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
7039
7040         * reflection.c: patch from Rolf Bjarne Kvinge to fix
7041         getting a token for an EnumBuilder.
7042
7043 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7044
7045         * reflection.c: be more careful in case resource generation
7046         fails to create the data array.
7047
7048 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
7049
7050         * sgen-gc.c: write barrier for clone and fix unregister handles.
7051
7052 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
7053
7054         * reflection.c: some fixes needed in the generics code for the moving GC.
7055
7056 2006-12-22  Robert Jordan  <robertj@gmx.net>
7057
7058         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
7059         account. Fixes bug #80299.
7060
7061 2006-12-21  Raja R Harinath  <rharinath@novell.com>
7062
7063         Fix WaitHandle usage in delegates.
7064         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
7065         * object.c (mono_wait_handle_new): Use the property set method to
7066         initialize the handle.
7067         (mono_wait_handle_get_handle): New.
7068         * threadpool.c (mono_async_invoke): Use it.
7069         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
7070         Likewise.
7071         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
7072
7073 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
7074
7075         * marshal.c (emit_marshal): Call emit_marshal_variant and
7076         emit_marshal_com_interface when applicable.
7077         (emit_marshal_variant, emit_marshal_com_interface): Add
7078         methods for this case and remove if's from emit_marshal_object.
7079         
7080 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
7081
7082         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
7083
7084 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
7085
7086         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
7087         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
7088         and GlobalFree on Windows. Remove FIXME.
7089
7090 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
7091
7092         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
7093         implementation for managed objects.
7094
7095 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
7096
7097         * object.c: implemented code to be used for checking
7098         that no reference field overlaps with non-references.
7099
7100 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7101
7102         * threadpool.c: fix queue code to be compatible with the
7103         moving GC.
7104
7105 2006-12-18  Miguel de Icaza  <miguel@novell.com>
7106
7107         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
7108         in structures by throwing ArgumentNullException.
7109
7110         (emit_marshal_safehandle): Also when they are null parameters.
7111
7112         (emit_marshal_safehandle): Add support for ref
7113         SafeHandles parameters
7114
7115 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7116
7117         * profiler.c: updated to use the mono-dl API instead of
7118         gmodule.
7119
7120 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7121
7122         * profiler.c: updated to use the mono-dl dynamic loading
7123         API instead of gmodule.
7124
7125 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
7126
7127         * profiler.c: use readlink, older versions of glib don't have
7128         g_file_read_link ().
7129
7130 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7131
7132         * profiler.c: try to detect the path to mono if libc fails to provide
7133         a useful name (bug #80286).
7134
7135 2006-12-16  Raja R Harinath  <rharinath@novell.com>
7136
7137         Fix #80242
7138         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
7139         instance, use the generic type definition instead.
7140         (ves_icall_Type_GetNestedTypes): Likewise.
7141         * class.c (mono_class_create_generic): Always set the
7142         nested_classes of a generic instance to NULL, even if the generic
7143         type definition has nested types.
7144
7145 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
7146
7147         * marshal.c (mono_string_from_bstr): Revert previous Windows change
7148         and fix on Linux.
7149         
7150 2006-12-15  Miguel de Icaza  <miguel@novell.com>
7151
7152         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
7153         my arguments were in the wrong order.   I also fixed the Windows
7154         version which seems to have had the same issue.
7155
7156         (mono_free_bstr): On Unix, this is g_free.
7157         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
7158         conversions (for the tests in corlib to pass).
7159
7160 2006-12-14  Miguel de Icaza  <miguel@novell.com>
7161
7162         * marshal.c (emit_ptr_to_object_conv): For now, ignore
7163         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
7164         exception if a ref SafeHandle in a struct has changed).
7165         
7166         (emit_struct_conv): Do not perform layout checks for classes
7167         derived from SafeHandle, as those are specially handled. 
7168
7169         (emit_object_to_ptr_conv): Add support for
7170         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
7171
7172         (emit_marshal_safehandle): Implement conversion of return values
7173         of safehandles (MARSHAL_ACTION_CONV_RESULT).
7174         
7175         * threads.c: WaitHandle now is compiled with two different handles
7176         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
7177         for 2.0.
7178         
7179         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
7180         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
7181         these routines to cope with both kinds of fields.
7182
7183 2006-12-12  Miguel de Icaza  <miguel@novell.com>
7184
7185         * metadata.c (mono_type_to_unmanaged): Handle the case where
7186         type->data.klass is a SafeHandle, and in that case, return the
7187         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
7188         MONO_MARSHAL_CONV_SAFEHANDLE. 
7189
7190 2006-12-11  Miguel de Icaza  <miguel@novell.com>
7191
7192         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
7193         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
7194         calling emit_marshal_object.
7195
7196         (emit_marshal_safehandle): Implement marshalling of
7197         SafeHandle parameters (no ref support yet).
7198
7199         (MarshalAction): Document the defines as I implement
7200         them for SafeHandle.
7201
7202         (emit_marshal_object): indentation police.
7203
7204         * class-internals.h: Define MonoSafeHandle.
7205         Add safehandle_class to MonoDefaults type.
7206
7207         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
7208         list of classes to check for fields. 
7209
7210         * domain.c (mono_init_internal): Add SafeHandle to the list of
7211         mono_defaults loaded.
7212
7213 2006-12-15  Raja R Harinath  <rharinath@novell.com>
7214
7215         Fix #80253
7216         * reflection.c (mono_reflection_bind_generic_parameters): If the
7217         generic type definition is a type builder, ensure that it is fully
7218         initialized before instantiating it.  Kill some dead code.
7219
7220 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
7221
7222         * object.c: clear the loader_error () before loading
7223         more metadata stuff (bug #80258).
7224
7225 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
7226
7227         * icall.c, icall-defs.h: type modifiers icalls for
7228         parameters and properties.
7229
7230 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
7231
7232         * object.c, icall.c: fixed warnings.
7233
7234 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7235
7236         * marshal.c: fixed a couple of leaks and coding style in a few places.
7237
7238 2006-12-08  Dick Porter  <dick@ximian.com>
7239
7240         * process.c: Cope with NULL ProcessStartInfo arguments on windows
7241         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
7242         80173.
7243
7244 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7245
7246         * process.c: ProcessStartInfo may have only filename set and
7247         arguments can be NULL.
7248
7249 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7250
7251         * icall.c: fix leak found by Robert Jordan.
7252
7253 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7254
7255         * marshal.c, marshal.h: generate managed method to access an element
7256         of a multi-dimensional array.
7257
7258 2006-11-30  Paolo Molaro (lupus@ximian.com)
7259
7260         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
7261
7262 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7263
7264         * icall.c: back out GetFields () fix until the serialization code is
7265         fixed to not depend on the incorrect behaviour.
7266
7267 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
7268
7269         * profiler.c: provide defaults if none are set.
7270
7271 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
7272
7273         * Makefile.am, attrdefs.h: new public header file with
7274         constants for attributes for use by embedders.
7275
7276 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
7277
7278         * icall.c: GetFields () fix for bug #80064.
7279
7280 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
7281
7282         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
7283         removed long unused icalls.
7284
7285 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
7286   
7287         * marshal.c: 
7288                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
7289                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
7290                 can be generated without a delegate class.
7291                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
7292         
7293         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7294
7295 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7296
7297         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
7298         #80069.
7299
7300 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7301
7302         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
7303         icall-def.h: added icalls needed by System.GC.
7304
7305 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
7306
7307         * loader.c: ensure the class in catch clauses is handled
7308         correctly for generics methods (fixes bug#79980).
7309
7310 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
7311
7312         * monitor.h, monitor.c: added mono_locks_dump () function
7313         to help debug deadlocks involving managed locks.
7314
7315 2006-11-13  Dick Porter  <dick@ximian.com>
7316
7317         * file-io.c (get_file_attributes): If the file is a symlink try
7318         and get the stat data for the target, but also add the
7319         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
7320         the specs for the windows symlink support, but will probably have
7321         to be reworked when I have test data from a vista machine.  Fixes
7322         bug 79887.
7323
7324 2006-11-13  Dick Porter  <dick@ximian.com>
7325
7326         * gc.c (mono_domain_finalize): 
7327         * marshal.c (mono_delegate_begin_invoke): 
7328         * threadpool.c (socket_io_init, mono_thread_pool_init)
7329         (mono_thread_pool_finish): 
7330         * monitor.c (mono_monitor_try_enter_internal): 
7331         * threads.c (mono_thread_resume, mono_thread_init)
7332         (mono_thread_suspend_all_other_threads)
7333         (mono_thread_execute_interruption): 
7334         * appdomain.c (mono_domain_unload): Check for NULL error returns
7335         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
7336         75733.
7337
7338 2006-11-11  Miguel de Icaza  <miguel@novell.com>
7339
7340         * process.c
7341         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
7342         Only close the handle if the value of the handle is not
7343         INVALID_HANDLE_VALUE.  This just makes the process a bit more
7344         robust.
7345
7346         Improvement for #75733, so that we do not run into this problem. 
7347
7348         
7349         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
7350         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
7351         internal variables.  Fixes #79462 
7352         
7353
7354 2006-11-09  Dick Porter  <dick@ximian.com>
7355
7356         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7357         Use poll() not select().  Fixes bug 79397.
7358
7359 2006-11-09  Raja R Harinath  <rharinath@novell.com>
7360
7361         Fix #79872
7362         * assembly.c (mono_assembly_load_from_full): Check that the given
7363         image has an assembly manifest.
7364
7365 2006-11-09  Ankit Jain  <jankit@novell.com>
7366
7367         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
7368         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
7369         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
7370
7371 2006-11-07  Dick Porter  <dick@ximian.com>
7372
7373         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7374         Put the old resolver behaviour back for pre-2.0 profiles.
7375
7376 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
7377
7378         * threadpool.c: precise GC and locking fixes.
7379
7380 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
7381
7382         * class.c: don't load types that have an explicit unaligned
7383         managed reference. Provide better info in the TypeLoad exception.
7384         Part of the fix for bug #79744.
7385         * object.c: use the correct check for class type load issues.
7386
7387 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
7388
7389         * class.c: enforce alignment of fields with managed references
7390         even when Pack=1 is forced by the user (bug #77788).
7391
7392 2006-11-03  Dick Porter  <dick@ximian.com>
7393
7394         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7395         If the address reverse lookup fails, return it as the hostname
7396         anyway.  Fixes bug 79721.
7397
7398 2006-11-03  Dick Porter  <dick@ximian.com>
7399
7400         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
7401         Fix build on Windows.
7402
7403 2006-11-02  Dick Porter  <dick@ximian.com>
7404
7405         * icall-def.h: 
7406         * object-internals.h: 
7407         * exception.c (mono_get_exception_thread_interrupted): 
7408         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
7409         Fixes bug 74525.
7410
7411         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
7412         Check for pending Thread.Interrupt.
7413
7414 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
7415         * loader.c: Fixed bug 79684.
7416
7417 2006-10-27  Dick Porter  <dick@ximian.com>
7418
7419         * file-io.c (get_file_attributes): Force symlinks to directories
7420         to be returned as a regular file.  Fixes bug 79733.
7421 2006-10-26  Dick Porter  <dick@ximian.com>
7422
7423         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
7424         CreateFile to open a directory then we need to set the
7425         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
7426
7427 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
7430         friends.
7431
7432 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7433
7434         * sgengc.c: small cleanup of timer code.
7435
7436 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
7437
7438         * sgen-gc.c: fix some warnings and start adding support for
7439         complete object removal on domain unload.
7440
7441 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
7442
7443         * assembly.c: build_assembly_name should not consider a version
7444         number without build or revision number invalid. Fixes bug #79715.
7445
7446 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
7447
7448         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
7449         call kernel32 function OutputDebugString directly.
7450         
7451         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7452         
7453 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
7454
7455         * reflection.c: small cleanup, using a function to insert a MonoString
7456         in the string heap.
7457
7458 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
7459
7460         * reflection.c: moving GC fixes.
7461
7462 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
7463
7464         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
7465         all the objects with finalizers belonging to an unloading appdomain.
7466
7467 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
7468
7469         * sgen-gc.c: added ability to allocate even when the nursery is fully
7470         pinned and fixed a couple of bugs.
7471
7472 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * threads.h: Revert the last change for now.
7475
7476         * threads.h (mono_thread_get_pending_exception): Rename this to
7477         mono_thread_get_undeniable_exception ().
7478
7479 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
7480
7481         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
7482         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
7483         when fname does not refer to valid assembly. This result in a more
7484         meaningful error message.
7485         * exception.c: added mono_get_exception_bad_image_format2 which 
7486         constructs a BadImageFormatException using the ctor taking a custom
7487         message and the file name. Passing in a NULL msg results in a default
7488         message.
7489         * exception.h: define mono_get_exception_bad_image_format2 function.
7490         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
7491         when file name pointed to an invalid IL image. Use 
7492         mono_get_exception_file_not_found2 to construct FileNotFoundException,
7493         as this results in a more meaningful error message.
7494
7495 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
7498         #79465.
7499
7500 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * metadata.c (mono_type_size): Change the align parameter to guint32 for
7503         consistency with the other _size functions.
7504         (mono_type_stack_size): Ditto.
7505
7506         * class.c object.c icall.c: Fix warnings caused by the above change.
7507
7508         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
7509
7510         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
7511
7512         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
7513
7514 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7515
7516         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
7517         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
7518         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
7519         threadpool.h, threads-types.h: mark more internal functions.
7520
7521 2006-10-11  Dick Porter  <dick@ximian.com>
7522
7523         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7524         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
7525         reproduce the bug even before applying the fix.)
7526
7527 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
7528
7529         * reflection.c: allow retrieving attributes for arguments in generic
7530         methods (bug #79241).
7531
7532 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
7533
7534         * debug-mono-symfile.c: properly check fopen () result (found by
7535         coverity).
7536
7537 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
7538
7539         * reflection.c: make error message clearer and fixed two
7540         issuelets found by Coverity.
7541
7542 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
7545
7546 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7547
7548         * object-internals.h, gc-internal.h, profiler-private.h:
7549         mark internal functions.
7550
7551 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7552
7553         * reflection.c: put data in the text section.
7554         * icall.c: recognize more types in type_from_typename ().
7555         * process.c, marshal.c: added some GC FIXMEs.
7556
7557 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7558
7559         * loader.c: check for NULL before initializing.
7560
7561 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
7562
7563         * gc.c (finalizer_thread): Use a non-alertable wait here.
7564
7565         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
7566         until the correct solution is found.
7567
7568 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * reflection.c (mono_module_get_object): Avoid an assert when operating on
7571         modules with no metadata. Fixes #79596.
7572
7573         * image.c (load_metadata_ptrs): Put back the error message when
7574         the #- heap is encountered since the support is not complete yet.
7575
7576 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7577
7578         * gc.c: do not allow the user to SuppressFinalize () a
7579         delegate because it would leak the trampoline if present.
7580
7581 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7582
7583         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
7584         PropertyPtr table.
7585
7586 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
7587
7588         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
7589
7590         * metadata.c (mono_metadata_get_param_attrs): Ditto.
7591
7592         * row-indexes.h: Add definitions for *Ptr tables.
7593
7594         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
7595
7596         * metadata.c (mono_metadata_translate_token_index): New helper function to
7597         translate table indexes used in uncompressed metadata.
7598         (mono_metadata_decode_table_row): Ditto.
7599         (mono_metadata_decode_table_row_col): Ditto.
7600
7601         * metadata.c: Add table schema for *Ptr tables.
7602
7603         * class.c loader.c: Use the new helper function to access the affected metadata
7604         tables.
7605         
7606         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
7607         #38532.
7608         
7609 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
7612         sequences which can be unbounded in size. Fixes #79583.
7613
7614 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
7615
7616         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
7617         static initialization.
7618
7619         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
7620
7621         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
7622
7623         * domain.c (mono_domain_free): Free up type_init_exception_hash.
7624
7625         * object.c (mono_runtime_class_init): Implement correct semantics when a static
7626         ctor fails, i.e. throw the same exception on subsequent accesses.
7627         
7628 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
7629
7630         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
7631         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
7632         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
7633         Handle marshalling of interfaces and VARIANTs contained in structs.
7634         
7635         Code is contributed under MIT/X11 license.
7636         
7637 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
7638
7639         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
7640         
7641         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
7642         mempool.
7643
7644 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7645
7646         * console-io.c: ignore previous SIGINT handler.
7647
7648 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
7651         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
7652         #79460, #79461, #79485.
7653
7654         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
7655
7656         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
7657         #79217.
7658
7659 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
7660
7661         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
7662         could be generated from it.
7663
7664 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
7665
7666         * rand.c: fix read loop to correctly handle EINTR.
7667
7668 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7669
7670         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
7671         internal calls are defined to keep methods closer to the declaring
7672         type and allow a significant reduction in runtime relocations and
7673         memory usage.
7674
7675 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
7676
7677         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
7678         exception message to have FileNotFoundException use the default
7679         assembly load error message. Fixes bug #79426.
7680         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
7681
7682 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7683
7684         * threadpool.c: (start_thread_or_queue) use the root domain when
7685         creating the thread instead of the async object one.
7686
7687 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
7688
7689         * class.c, object.c, class-internals.h, reflection.c:
7690         for arrays, store element_size inside MonoClass (speedup
7691         for array object creation).
7692
7693 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
7694
7695         * icall.c: fixed CodeBase to use the file name and not the module
7696         name (bug #79365).
7697
7698 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7699
7700         * mono-debug.c, mono-debug.h: export find_method as
7701         mono_debug_find_method ().
7702
7703 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7704
7705         * debug-helpers.c, class-internals.h: added a few functions useful
7706         when debugging under gdb.
7707
7708 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7709
7710         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
7711         characters that need special handling.
7712
7713 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
7714
7715         * mono-config.c: make the os/cpu specification more flexible,
7716         allowing lists and negation.
7717
7718 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
7719
7720         * marshal.c: COM Interop fixes. Handle case where method->klass.
7721         is interface. Handle BSTR/MonoString when null. Use CDECL as 
7722         calling convention on non-windows platforms. This is for
7723         compatibility with XPCOM and MainWin COM.
7724         
7725         Code is contributed under MIT/X11 license.
7726         
7727
7728 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
7731         correctly. Fixes #79217.
7732
7733         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
7734
7735 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
7736
7737         * mono-config.c: allow both an os and cpu attribute for dllmap
7738         and dllentry elemnets to enable a single config file to be used
7739         for multiple architectures.
7740
7741 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
7742
7743         * loader.c: MonoLoaderError was cleared too soon on load failure.
7744         Fixes bug #79424.
7745
7746 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
7747
7748         * icall.c: use the defining class vtable when accessing a
7749         static field, not a pobblibly derived class.
7750
7751 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
7752
7753         * icall.c string-icalls.c: Remove references to unicode.h.
7754
7755         * unicode.h unicode.c Makefile.am: Remove these unused source files.
7756
7757         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
7758
7759         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
7760         indicating the image where custom marshaller types should be looked up.
7761         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
7762         custom marshallers, instead of corlib. Fixes #79425.
7763
7764 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
7767
7768 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
7769
7770         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
7771         Implement Environment.ProcessorCount.
7772         
7773         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
7774         Implement Environment.ProcessorCount.
7775         
7776         * icall.c: 
7777         Add Environment.ProcessorCount icall.
7778         
7779         Patch by Jason McFall.
7780
7781 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7782
7783         * assembly.c: don't append .exe/.dll when the filename already contains
7784         one of those extensions.
7785
7786 2006-09-12  Martin Baulig  <martin@ximian.com>
7787
7788         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
7789         to array interfaces.
7790
7791 2006-09-11  Martin Baulig  <martin@ximian.com>
7792
7793         * reflection.c (mono_image_build_metadata): Create the
7794         MethodImpl's after emitting all types and methods, so we don't
7795         need another fixup pass for them.
7796
7797 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
7798
7799         * class.c (mono_class_from_name_case): Fix regression introduced by the last
7800         change.
7801
7802 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
7803
7804         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
7805         unload.
7806
7807 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
7808
7809         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
7810         args is not set. Fixes #78926.
7811
7812 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
7815
7816         * image.c (load_class_names): Move this to class.c, and rename it to 
7817         'mono_image_init_name_cache'.
7818         (load_modules): Fix a warning.
7819
7820         * class.c icall.c image.c: Initialize image->name_cache lazily.
7821
7822         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
7823         on its name using information in the AOT file.
7824
7825         * class.c (mono_class_from_name): Use the new hook function.
7826
7827 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * reflection.c (mono_param_get_objects): Handle enum default parameter values
7830         correctly.
7831
7832         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
7833         Fixes #79289.
7834         
7835 2006-09-06  Martin Baulig  <martin@ximian.com>
7836
7837         * icall.c (mono_lookup_internal_call): Small fix.
7838
7839 2006-09-05  Raja R Harinath  <rharinath@novell.com>
7840
7841         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
7842         double g_free.
7843
7844 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
7845
7846         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
7847         when --debug is specified.
7848
7849 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
7850
7851         * class.c (setup_generic_array_ifaces): Fix a warning.
7852
7853 2006-09-04  Miguel de Icaza  <miguel@novell.com>
7854
7855         * Temporarily remove the patch to assemly.c that checks the
7856         assembly versions as it breaks our gacutil.
7857
7858 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
7861
7862         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
7863         a net 1.0 runtime.
7864
7865         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
7866         created using the default ctor. Fixes #79152.
7867         (mono_string_builder_to_utf16): Ditto.
7868
7869 2006-09-01  Martin Baulig  <martin@ximian.com>
7870
7871         Fix handling of the generic array interfaces.
7872
7873         * class-internals.h
7874         (MonoDefaults): Removed `generic_array_class' and added
7875         `generic_ilist' class.
7876
7877         * class.c
7878         (mono_bounded_array_class_get): Add the new generic array interfaces.
7879         (setup_generic_array_ifaces): New static method; create vtable
7880         entries for each method in the generic array interfaces.
7881
7882         * metadata.c
7883         (select_container): Allow "parent-less" generic methods.
7884
7885         * marshal.c
7886         (mono_marshal_get_generic_array_helper): New public method.
7887
7888         * icall.c
7889         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
7890         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
7891         moved the interncall into System.Array.
7892
7893 2006-09-01  Raja R Harinath  <rharinath@novell.com>
7894
7895         A few more cases of avoiding work on types with ->byref set.
7896         Has the real fix for #79238
7897         * icall.c (is_generic_parameter): New helper.
7898         (ves_icall_Type_GetGenericParameterPosition): Use it.
7899         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
7900         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
7901         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7902         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
7903         reference types.
7904         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
7905         reference types.
7906         (ves_icall_Type_get_IsGenericInstance): Likewise.
7907         (ves_icall_Type_get_IsGenericType): Likewise.
7908
7909 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
7910
7911         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
7912         class if possible.
7913
7914         * mempool.h (mono_mempool_get_allocated): New helper function.
7915
7916         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
7917         change.
7918
7919         * mempool.c: Fix warnings and the calculation of stats.
7920
7921         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
7922
7923         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
7924
7925         * loader.c (mono_get_method_from_token): Update method_count stat.
7926
7927         * class-internals.h (MonoStats): Add some stats.
7928
7929 2006-08-31 Robert Jordan  <robertj@gmx.net>
7930
7931         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
7932         with managed variants.
7933         All code is contributed under the MIT/X11 license.
7934         
7935 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
7938         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
7939
7940         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
7941
7942         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
7943         with cycles in classes.
7944
7945         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
7946
7947         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
7948         missing a [MarshalAs] directive. Fixes #79203.
7949
7950         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
7951         klass->marshal_info. Fixes #79217.
7952
7953 2006-08-30  Martin Baulig  <martin@ximian.com>
7954
7955         Committing a patch from Joachim Ante <joe@otee.dk>:
7956         Add support for binary data symbol stores.
7957
7958         * debug-mono-symfile.c
7959         (mono_debug_open_mono_symbol_file): Renamed into
7960         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
7961         arguments.
7962
7963         * mono-debug.c
7964         (mono_debug_open_image): Added `raw_contents' and `size' args.
7965         (mono_debug_init_2_memory): New public function.
7966
7967 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
7968
7969         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
7970
7971 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7972
7973         * appdomain.c: implement support for ShadowCopyFiles.
7974
7975 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
7976
7977         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
7978         when value is NULL (and should remove CID #51).
7979
7980 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7981
7982         * image.c: moved 2 functions to ../utils.
7983
7984 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
7985
7986         * gc.c: cope with the target object of a GC handle being NULL
7987         (bug #78877).
7988
7989 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
7990
7991         * class.c: recursively check parent's explicit implementations
7992         of interface methods (fixes bug #79125).
7993
7994 2006-08-19  Miguel de Icaza  <miguel@novell.com>
7995
7996         * filewatcher.c: Avoid warnings when building, do not redefine
7997         constants that are defined.
7998
7999         Remove warnings.
8000
8001 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8002
8003         * image.c: don't fail when the link points to an absolute path.
8004
8005 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
8006
8007         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
8008         Fix CID #3.
8009
8010 2006-08-17  Miguel de Icaza  <miguel@novell.com>
8011
8012         * image.c (full_path): A new method used to obtain the actual path
8013         of an assembly even in the presence of symbolic links.  
8014
8015         This is necessary for the case where we are running a binary that
8016         has been GACed, but we are using the "published" path name
8017         ($prefix/mono/1.0/blah.exe) which happens to point to the real
8018         file in the GAC.
8019
8020         This was the source of the failure for the `xsp' command with the
8021         recent AppDomain changes, as far as the runtime was concerned,
8022         there were two different assemblies: $prefix/mono/1.0/blah.exe and
8023         $prefix/mono/gac/blah/version/blah.exe.
8024
8025         (do_mono_image_open): use full path
8026
8027 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8028
8029         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
8030
8031 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
8032
8033         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
8034         domain_id is supplied. Fix CID #241 and corlib's unit tests.
8035
8036 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8037
8038         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
8039         small structures. Fixes #78990.
8040
8041 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8042
8043         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
8044
8045         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
8046
8047 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8048
8049         * appdomain.c:
8050         * marshal.c: don't load all the assemblies from a domain into newly
8051         created ones. The new domains might have different rules and load
8052         assemblies from different locations. Fixes bug #76757.
8053
8054         Patch by Lluis. Conflicts resolved by Brian Crowell.
8055
8056 2006-08-16  Alp Toker  <alp@atoker.com>
8057
8058         * socket-io.c: First half of the fix for #79084.
8059         Set sa_size to the length of the content, not that of the struct.
8060         Don't add NULL suffix to the content, this should be done in
8061         managed code if needed.
8062
8063 2006-08-14  Raja R Harinath  <rharinath@novell.com>
8064
8065         Fix part of #79012
8066         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
8067         mono_metadata_parse_type returns NULL.
8068
8069 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
8070
8071         * normalization-tables.h : new file for string normalization data.
8072         * locales.c, locales.h, icall.c :
8073           added load_normalization_resource() for string normalization,
8074           and icall as well.
8075         * Makefile.am : added normalization-tables.h to the sources.
8076
8077 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
8078
8079         * marshal.c: Add more helper functions to reduce code duplication and use them
8080         everywhere.
8081
8082 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * marshal.c: Fix non-x86 stdcall warnings.
8085         
8086         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
8087         them everywhere.
8088
8089 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
8090
8091         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
8092         type check on multi-dimensional arrays. Fixes #79000.
8093
8094 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
8095
8096         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
8097         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
8098         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
8099         * class-internals.h: add is_com_object to class structure.
8100         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
8101         null checks to COM object marshalling. Fix .ctor call on RCW.
8102         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
8103         
8104         All code is contributed under the MIT/X11 license.
8105
8106 2006-08-09  Dick Porter  <dick@ximian.com>
8107
8108         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
8109         racing mono_monitor_allocator_lock() somewhere, so don't delete
8110         the critical section for now.  Found by running and exiting
8111         monodevelop.
8112
8113 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
8116         (ves_icall_System_ComObject_FindInterface): Ditto.
8117         (ves_icall_System_ComObject_CacheInterface): Ditto.
8118
8119         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
8120         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
8121
8122 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8123
8124         * threadpool.c: treat pipes from process asynchronous reads as sockets
8125         when reading from them, so we get select/poll or epoll to wait for
8126         data.
8127
8128 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
8129
8130         * loader.c: Fix a typo (CID #233) in the null check.
8131
8132 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
8135         Hopefully fixes #78949.
8136         
8137         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
8138         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
8139         bytes. Fixes #78972.
8140
8141 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8142
8143         * filewatcher.c: we need to set errno here.
8144
8145 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8146
8147         * filewatcher.c: let Win32Exception get the error value.
8148
8149 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8150
8151         * filewatcher.c: translate errno into win32 errors for Win32Exception
8152         to know what happened.
8153
8154 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
8155
8156         * threadpool.c: Fix more warnings.
8157
8158         * assembly.c (search_loaded): Fix warnings.
8159
8160         * threadpool.c (mono_thread_pool_finish): Fix warnings.
8161         (mono_async_invoke): Ditto.
8162
8163 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
8164
8165         * object.c (mono_remote_class_vtable): Need to create proxy vtable
8166         entries for __ComObject type in addition to ComImport types.
8167         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
8168         about hash table.
8169         
8170         All code is contributed under the MIT/X11 license.
8171
8172 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
8173
8174         * image.c: avoid tentative loading of modulerefs that contain
8175         no metadata (P/Invoke library names).
8176
8177 2006-07-28  Dick Porter  <dick@ximian.com>
8178
8179         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
8180         mono_loader_lock() somewhere, so don't delete the critical section
8181         for now.  Found by running and exiting monodevelop.
8182
8183 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8184
8185         * filewatcher.c: define the inotify syscalls when we're building on
8186         linux and have sys/syscall.h. The build system might not have support
8187         for inotify but the target system might have it.
8188
8189 2006-07-26  Miguel de Icaza  <miguel@novell.com>
8190
8191         * domain.c: Documentation updates.
8192
8193         * loader.c (mono_free_method): Do not release the method
8194         information if we are being profiled, as profilers will use this
8195         information at shut down to present some data to the user.
8196
8197         This is needed so that the profiler does not crash, as the
8198         profiler tends to keep MonoMethods around, and they might become
8199         invalid if we free these.
8200
8201         (mono_get_method_constrained): Return the original CIL stream
8202         method as well, so verification can be performed against it.
8203
8204 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8205
8206         * filewatcher.[ch]: support for inotify file system watcher.
8207         * icall.c: add new internal calls for the inotify file system watcher.
8208
8209 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8210
8211         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
8212         #78888.
8213
8214 2006-07-20  Dick Porter  <dick@ximian.com>
8215
8216         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
8217         warning.
8218
8219 2006-07-20  Dick Porter  <dick@ximian.com>
8220
8221         * threads.c (start_wrapper): Do the thread cleanup while we still
8222         hold a reference to its object.  Fixes bug 78123.
8223
8224 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
8225
8226         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
8227         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
8228           "managed-to-managed".
8229         * icall.c: Redirect string constructors that take sbyte* to
8230           ves_icall_System_String_ctor_RedirectToCreateString.
8231         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
8232           to CreateString () methods with matching signature.
8233         * reflection.c: Use original security informations for
8234           MONO_WRAPPER_MANAGED_TO_MANAGED.
8235         * security-manager.c: Use original security informations for
8236           MONO_WRAPPER_MANAGED_TO_MANAGED.
8237         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
8238           that is a placeholder and only its address should be used.
8239         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
8240           that is a placeholder and only its address should be used.
8241
8242 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
8243
8244         Begin implementing COM Interop.
8245         * appdomain.c: Increment corlib version.
8246         * class.c: Set ComImport classes' parent to __ComObject.
8247         * loader.c: Mark cominterop methods as such.
8248         * domain.c: Add __ComObject class to MonoDefaults structure.
8249         * image.c: Add 2 hashtables to the image for COM Interop related methods
8250         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
8251         using the mempool allocator
8252         
8253         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
8254         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
8255         declaration for mono_metadata_type_dup_mp.
8256         
8257         * debug-helpers.c: Added strings for two additional wrapper types
8258         * object.c: Create proxy objects for ComImport classes
8259         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
8260         and added __ComObject class to MonoDefaults structure.
8261         
8262         * object-internals.h: Finish MonoRealProxy definition, and add definition of
8263         MonoComInteropProxy and MonoComObject.
8264         
8265         * marshal.c: Added support for COM Interop
8266         (signature_cominterop): Converts managed signature to corresponding
8267         unmanaged COM signature.
8268         (cominterop_get_function_pointer): gets unmanaged function pointer via
8269         COM object vtable
8270         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
8271         (cominterop_get_method_interface): returns interface type that method is defined on
8272         (mono_mb_emit_cominterop_call): emits native call to function pointer
8273         gotten from vtable
8274         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
8275         that matches signature of unmanaged function.
8276         (cominterop_get_native_wrapper): wrapper around adjusted method call.
8277         (cominterop_get_invoke): forwards call from proxy to __ComObject
8278         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
8279         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
8280         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
8281         
8282         * marshal.h: Added Marshal icall declarations.
8283         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
8284         so we can access them in finalizer
8285         
8286 2006-07-14  Dick Porter  <dick@ximian.com>
8287
8288         * object.c (mono_type_initialization_cleanup): Fix a race
8289         condition by temporarily commenting out the critical section
8290         deletion.
8291
8292 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * reflection.c (create_custom_attr): Fix some warnings.
8295         (create_custom_attr_data): Ditto.
8296         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
8297         types. Fixes #78855.
8298
8299 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
8302
8303         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
8304
8305 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
8306
8307         * reflection.c (resolve_object): Add support for DynamicMethod.
8308
8309         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
8310         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
8311
8312 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
8313
8314         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
8315         don't leak GPtrArray's pdata has we have no use (nor free) for it.
8316
8317 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
8318
8319         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
8320         Fixes #77888.
8321
8322 2006-06-30  Raja R Harinath  <rharinath@novell.com>
8323
8324         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
8325         slightly: remove a shadow local variable.
8326
8327 2006-06-29  Raja R Harinath  <rharinath@novell.com>
8328
8329         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
8330         definition that introduces the virtual function slot.
8331         Also fix Coverity #105.
8332
8333 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
8334
8335         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
8336         for dynamic assemblies. Fixes #78724.
8337
8338 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
8341         Fixes #78722.
8342
8343 2006-06-21  Martin Baulig  <martin@ximian.com>
8344
8345         * reflection.c
8346         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
8347         fixes #76484.
8348
8349 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
8352
8353 2006-06-20  Raja R Harinath  <rharinath@novell.com>
8354
8355         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
8356         nor TYPEREFs.
8357         * class.c (mono_class_create_from_typespec): Add 'context' argument.
8358         Inflate result if necessary.
8359         (mono_class_get_full): Remove old version.  Rename from
8360         'mono_class_get' and add 'context' argument.  Pass it to
8361         ..._create_from_typespec.
8362         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
8363         (mono_ldtoken): Revert change below.
8364
8365 2006-06-20  Martin Baulig  <martin@ximian.com>
8366
8367         * class.c (mono_ldtoken): Don't pass the generic context to
8368         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
8369
8370 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
8373         and later freeing it. Fixes #78638.
8374
8375 2006-06-15  Miguel de Icaza  <miguel@novell.com>
8376
8377         * icall.c (mono_class_get_throw): Revert over-zealous error
8378         throwing, the caller for mono_class_get_throw will cope with
8379         errors when classes are not properly initialized already.
8380
8381         The code still copes with loader exceptions though.
8382
8383         Fixes the regression in reftype1 and reftype3 from the CAS tests.
8384         
8385 2006-06-14  Miguel de Icaza  <miguel@novell.com>
8386
8387         Fixes the `make run1' version of RuntimeAbort (to be commited,
8388         source is in Bugzilla).
8389         
8390         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
8391         FALSE on class loading failure instead of returning true.
8392
8393         * class.c (mono_class_create_from_typedef): It is possible for
8394         mono_metadata_interfaces_from_typedef_full to fail if a class is
8395         not found, cope with this.
8396         
8397
8398 2006-06-14  Dick Porter  <dick@ximian.com>
8399
8400         * socket-io.c: 
8401         * process.c: Fix a bunch of signed/unsigned warnings from gcc
8402         4.1.1
8403
8404 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
8405
8406         * culture-info-table.h : oops, forgot to make it nsync with r61548.
8407
8408 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8409
8410         * icall.c: Another fix for building mono in Visual Studio.
8411
8412 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8413
8414         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
8415         
8416 2006-06-09  Martin Baulig  <martin@ximian.com>
8417
8418         * debug-mono-symfile.c: Put this back and really fix it this
8419         time. Sorry for all the trouble.
8420
8421 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
8422
8423         * icall.c (mono_class_get_throw): Fix a warning.
8424         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
8425         ReflectionTypeLoadException if needed. Fixes #78606.
8426
8427         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
8428         (mono_class_init): Ditto.
8429
8430         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
8431         ref_only exceptions.
8432         (mono_loader_clear_error): Make this work even if there is no error.
8433
8434 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
8435
8436         * object-internals.h marshal.c marshal.h icall.c: Implement method 
8437         Marshal.GetComSlotForMethodInfo using internal call.
8438
8439 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
8440
8441         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
8442         a function for signalling it.
8443
8444         * class.c (mono_class_from_typeref): Use the new kind of loader error when
8445         a referenced assembly is not found.
8446
8447         * loader.c (mono_loader_error_prepare_exception): Add support for 
8448         LOADER_ERROR_ASSEMBLY. Fix formatting.
8449
8450 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
8451
8452         * domain.c appdomain.c class-internals.h marshal.c: Add support 
8453         for VARIANT marshalling on windows and increment corlib version
8454         since Variant struct was added.
8455
8456 2006-06-03  Miguel de Icaza  <miguel@novell.com>
8457
8458         * debug-mono-symfile.c: Revert Martin's previous patch which broke
8459         stack trace line information:
8460
8461         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
8462         (Martin) when looking up B which is between A and C, return A not C.
8463
8464         Bug is #78573.
8465
8466         Thanks to Alexander Olk for tracking this down.
8467
8468 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
8471         
8472         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
8473         avoid clobbering its value.
8474         (mono_string_to_lpstr): Fix a warning on windows.
8475
8476 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8477
8478         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
8479
8480         * reflection.c loader.c: Removed references to 'dummy' flag.
8481
8482         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
8483
8484         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
8485         it gets GC tracking.
8486
8487         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
8488         GC tracking.
8489         
8490         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
8491
8492         * marshal.c threadpool.c: Update callers of mono_async_result_new.
8493
8494         * appdomain.c: Bump corlib version.
8495
8496 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8499         CEE_STIND_REF when working with object references.
8500
8501 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8502
8503         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
8504         Fixes #78539.
8505
8506 2006-05-30  Miguel de Icaza  <miguel@novell.com>
8507
8508         * loader.c (method_from_memberref): Fix argument value for
8509         mono_loader_set_error_method_load (I was passing the MonoClass
8510         instead of the class name char *).
8511
8512 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8515         CEE_STIND_REF when working with object references.
8516
8517 2006-05-30  Martin Baulig  <martin@ximian.com>
8518
8519         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
8520         mono_method_full_name() change and replace the ':' with a '.'
8521         here.
8522
8523 2006-05-30  Martin Baulig  <martin@ximian.com>
8524
8525         * debug-mono-symfile.c
8526         (mono_debug_symfile_lookup_location): Fix the algorithm:
8527         when looking up B which is between A and C, return A not C.
8528
8529 2006-05-29  Martin Baulig  <martin@ximian.com>
8530
8531         * mono-debug.h
8532         (MonoDebugMethodInfo): Make the typedef public.
8533         (MonoDebugSourceLocation): New public struct.
8534
8535         * mono-debug.c
8536         (mono_debug_source_location_from_address): Removed.
8537         (mono_debug_source_location_from_il_offset): Removed.
8538         (mono_debug_il_offset_from_address): Removed.
8539         (mono_debug_address_from_il_offset): Removed.
8540         (mono_debug_lookup_method): New public function.
8541         (mono_debug_lookup_source_location): New public function; replaces
8542         the old mono_debug_source_location_from_*() functions; see the
8543         inline documentation.
8544         (mono_debug_free_source_location): New public function.
8545         (mono_debug_print_stack_frame): New public function; see the
8546         inline documentation.
8547
8548         * debug-mono-symfile.c
8549         (mono_debug_find_source_location): Renamed into
8550         mono_debug_symfile_lookup_location(); only take a
8551         `MonoDebugMethodInfo *' and an `offset' argument; added inline
8552         documentation.
8553         (mono_debug_find_method): Renamed into
8554         mono_debug_symfile_lookup_method().
8555
8556 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * assembly.c (mono_assembly_open_full): Dont overwrite the status
8559         returned by mono_image_open_full ().
8560
8561         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
8562         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
8563         #78517.
8564
8565         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
8566         #78518.
8567
8568 2006-05-27  Miguel de Icaza  <miguel@novell.com>
8569
8570         * class.c (mono_class_from_typeref): handle missing images
8571         earlier, deals with bug #78418.   Refactor code; 
8572
8573         Fix a warning introduced in my previous commit (some stale code
8574         from before I revisited my patch).
8575
8576         * class.c (mono_class_create_from_typedef): On failure, remove the
8577         class from the MonoImage->class_cache as the class is not
8578         initialized;   Fixes the leak pointed out by Paolo.
8579
8580 2006-05-25  Dick Porter  <dick@ximian.com>
8581
8582         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
8583         DeleteCriticalSections until I figure out which one may still be
8584         sometimes locked when mono_thread_cleanup is called.
8585
8586 2006-05-24  Dick Porter  <dick@ximian.com>
8587
8588         * threads.c (mono_thread_cleanup): Move the threading cleanup out
8589         of mono_thread_manage and back into its own function, so it can be
8590         called after the finalizer thread has finished.
8591
8592         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
8593
8594 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
8595
8596         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
8597         Fixes #78495.
8598
8599         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
8600         with non-blittable elements.
8601         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
8602
8603 2006-05-24  Martin Baulig  <martin@ximian.com>
8604
8605         * mono-debug-debugger.h (MonoDebuggerEvent): Added
8606         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
8607
8608         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
8609         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
8610         `mono_debugger_event_handler' to NULL.
8611
8612 2006-05-24  Martin Baulig  <martin@ximian.com>
8613
8614         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
8615
8616 2006-05-24  Martin Baulig  <martin@ximian.com>
8617
8618         * mono-debug-debugger.h
8619         (mono_debugger_create_notification_function): Added
8620         `MonoCodeManager *' argument.
8621
8622 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
8623
8624         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
8625
8626 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
8627
8628         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
8629         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
8630         implementation.
8631
8632 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
8633
8634         * icall.c: precise GC support: objects can't be stored in unmanaged
8635         memory anymore, even if they are kept alive by other references: since
8636         they can move the GC needs to be able to always find them.
8637
8638 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8639
8640         * object.c: precise GC support for static fields. Support
8641         for moving GCs: write barriers and pinned allocation for interned
8642         strings.
8643
8644 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8645
8646         * domain.c, domain-internals.h: precise GC support for the MonoDomain
8647         structure.
8648
8649 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * class.c, gc.c: sgen and precise GC updates.
8652
8653 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8654
8655         * marshal.h, marshal.c: added write barrier wrapper and precise type
8656         fixes.
8657
8658 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
8659
8660         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
8661         support.
8662
8663 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
8664
8665         * reflection.c: precise and sgen GC updates.
8666
8667 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8668
8669         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
8670
8671 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
8674
8675 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
8678         MONO_TYPE_OBJECT. Fixes #78462.
8679
8680 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8681
8682         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
8683         and blittable types.
8684
8685 2006-05-17  Miguel de Icaza  <miguel@novell.com>
8686
8687         * class.c (mono_class_get_exception_for_failure): Implement parts
8688         of a TODO: if the loader error is set (instead of the class
8689         error), we return a Loader exception that can be properly thrown
8690         elsewhere.
8691
8692         This was exposed by some Winforms 2.0 code that I tried to run
8693         (Atsushi pointed me to it).
8694
8695 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
8696
8697         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
8698         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
8699         
8700         * marshal.c (emit_marshal_vtype): Add limited support for 
8701         UnmanagedType.LPStruct. Fixes #78427.
8702
8703         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
8704         Applied a patch from kangaroo to fix #77523.
8705
8706 2006-05-17  Martin Baulig  <martin@ximian.com>
8707
8708         * threads.c
8709         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
8710         (debugger_thread_created): Removed.
8711         (debugger_thread_exited): Removed.
8712
8713 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8716
8717         * object-internals.h (MonoReflectionResource): Sync with managed version.
8718
8719 2006-05-12  Wade Berrier <wberrier@novell.com>
8720
8721         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
8722
8723 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
8726         functions try to allocate from the image mempool.
8727
8728 2006-05-12  Dick Porter  <dick@ximian.com>
8729
8730         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
8731
8732 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
8733
8734         * object.c: The FieldGetter and FieldSetter methods require the full
8735         name of the class, not only the name. Fixes bug #78277.
8736
8737 2006-05-11  Miguel de Icaza  <miguel@novell.com>
8738
8739         * loader.c (method_from_memberref): Do not pass the NULL klass to
8740         mono_loader_set_error_() methods.  Pass the non-NULL value
8741         (class). 
8742
8743 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8744
8745         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
8746         (mono_assembly_close): Null out assembly->image->references after freeing it.
8747
8748         * image.c (mono_image_close): Free image->references.
8749         
8750         * reflection.c (mono_image_basic_init): Fix a small memory leak.
8751
8752 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8753
8754         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
8755         before checking if it's NULL (g_assert).
8756
8757 2006-05-10  Martin Baulig  <martin@ximian.com>
8758
8759         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
8760         I thought I already killed that two months ago, but now it somehow reappeared.
8761
8762 2006-05-10  Martin Baulig  <martin@ximian.com>
8763
8764         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
8765
8766 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * reflection.c: Allocate memory for dynamically created methods in the image
8769         mempools.
8770
8771 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8772
8773         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
8774         don't use the ad pointer before checking if it's NULL (g_assert).
8775
8776 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8777
8778         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
8779         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
8780
8781         * marshal.c: Allocate all signatures from mempools.
8782
8783         * marshal.c: Allocate some more signatures from mempools.
8784
8785 2006-05-09  Miguel de Icaza  <miguel@novell.com>
8786
8787         * object.c (mono_load_remote_field): The code used to provide a
8788         temporary variable for returning results if the user did not
8789         provide a result pointer.  But our temporary variable was allocted
8790         on the satck.
8791
8792         Fix calling code to always pass a result area.   Coverity ID 103.
8793
8794 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8795
8796         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
8797         value, not the old. Fixes #78312.
8798         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
8799
8800         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
8801         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
8802         per-image cache.
8803
8804         * assembly.c (mono_assembly_close): Free image->references.
8805
8806         * assembly.c (mono_assembly_names_equal): Fix a warning.
8807         (mono_assemblies_cleanup): Cleanup more global data.
8808
8809         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
8810
8811         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
8812         ptr_cache and image->modules.
8813
8814         * image.c (mono_image_init): Allocate array_cache lazily.
8815         
8816 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8817
8818         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
8819         behavior was changed recently and has bad side effects.
8820
8821 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
8824         
8825         * assembly.c (mono_assembly_close): Remove a debug printf.
8826
8827         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
8828
8829         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
8830         to also allow for temporary references between mono_image_open ()/close ().
8831
8832         * domain.c (get_runtimes_from_exe): Add a FIXME.        
8833
8834 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8835
8836         * marshal.c: Fix support for dynamic methods.
8837
8838         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
8839
8840         * marshal.c (mono_marshal_cleanup): New cleanup function.
8841
8842         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
8843         image mempools.
8844
8845         * class.c (mono_class_init): Fix leaking class->nested_classes.
8846
8847         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
8848
8849         * image.c (mono_image_init): Initialize the new cashes.
8850
8851         * image.c (mono_image_close): Destroy the new cashes.
8852
8853         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
8854
8855         * mempool.c (mono_mempool_strdup): New helper function.
8856
8857         * class-internals.h: Add prototype for mono_loader_unlock ().
8858
8859         * domain.c (mono_jit_info_table_find): Fix a warning.
8860         (mono_debugger_check_runtime_version): Ditto.
8861
8862         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
8863         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
8864         functions to these modules.
8865
8866         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
8867         metadata modules.
8868         
8869         * marshal.c (mono_free_bstr): Fix a warning.
8870
8871         * assembly.c (mono_assembly_open_full): Fix another small leak.
8872
8873         * object.c: Fix some unload leaks in the remoting code.
8874
8875         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
8876         function.
8877
8878         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
8879
8880         * reflection.c: Fix some unload leaks in dynamic assemblies.
8881
8882 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
8883
8884         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
8885         * marshal.h: Add BSTR support on Win32
8886         * icall.c: Add BSTR icalls
8887         * metadata.h: Add BSTR enums
8888
8889 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8890
8891         Work to catch the crash from #76795 and turn it into an
8892         exception.   As I stubbed out pieces of the VisualBasic support,
8893         I found a number of places where the code was failing and I added
8894         checks to those places. 
8895         
8896         * metadata.c (do_mono_metadata_parse_generic_class): Make this
8897         function return a status code.  If we fail to parse the signature
8898         from mono_metadata_parse_generic_inst, return FALSE.
8899
8900         * loader.c (mono_get_method_from_token): If we fail to load the
8901         method (mono_class_get) return NULL.   
8902
8903         * (method_from_memberref): Return NULL if we are unable to parse
8904         the method signature
8905
8906         (mono_loader_error_prepare_exception): Since we now use the
8907         loader_error flag internally to stop processing, and obtaining
8908         exceptions that might be thrown will walk this code path the
8909         proper way of going from a MonoLoaderError into a
8910         MonoException was convoluted.   This new routine encapsulates the
8911         process of turning the error into an exception and *clearing* the
8912         error afterwards.
8913         
8914 2006-04-27  Miguel de Icaza  <miguel@novell.com>
8915
8916         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
8917         with missing assemblies), and to cope with:
8918
8919                 * Missing fieldref from a non-existing assembly.
8920                 * Missing methodref from a non-existing assembly.
8921
8922         The first batch of work to address *some* of the issues from 76661.
8923         
8924         * object.c (mono_class_create_runtime_vtable): If we fail to
8925         initialize the class raise the exception here. 
8926
8927         * metadata.c (mono_class_get_overrides_full): If any methods fail
8928         to load return the failure to the caller.
8929
8930         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
8931         flagging assemblies that failed to load.   
8932
8933         Do not crash if we are unable to load the assembly.
8934
8935         (mono_assembly_close): Do nothing with REFERENCE_MISSING
8936         assemblies. 
8937
8938         * loader.c (mono_loader_set_error_type_load): Change the
8939         convention to always pass unallocated strings, so we make our own
8940         copies (I know our own code had duplicated strings before, but
8941         this keeps the normal conventions).
8942         (method_from_memberref): Call mono_loader_set_error_method_load
8943         for all possible failures of loading the class. 
8944         Remove assert, turn into a loader error.
8945
8946         (mono_loader_error_to_exception): Move this routine from mini
8947         (mini_loader_error_to_exception) there was no need to have that in
8948         mini. 
8949
8950         * class.c (mono_class_from_typeref): If we were not able to load
8951         the assembly with mono_assembly_load_reference, call the
8952         mono_loader_set_error_type_load to register the problem.
8953
8954         (mono_class_setup_fields): If we fail to load the type from
8955         mono_metadata_parse_type_full, call mono_class_set_failure and
8956         break from the loop.
8957
8958         If class->exception_type is set, we do not layout the fields as
8959         that might crash the runtime, and instead return (from breaking
8960         from the previous loop).
8961
8962         (mono_class_setup_vtable): This now returns a boolean indicating
8963         whether the table was properly setup.   The decision is driven by
8964         mono_class_get_overrides_full which might run into non-existing
8965         methods. 
8966         
8967         (mono_class_init): Returns TRUE on success or FALSE if there was a
8968         problem in loading the type (incorrect assemblies, missing
8969         assemblies, methods, etc).
8970
8971         When we call mono_class_setup_fields we also check for a potential
8972         error inside this call (either a class exception or a general
8973         loader exception).
8974
8975         (mono_class_create_from_typedef): If the parent fails to load
8976         (calling mono_class_get_full) return NULL.
8977         
8978         ** Important **
8979
8980         calls to mono_metadata_parse_type_full should be checked
8981         everywhere and set the mono_class_set_failure
8982         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
8983
8984         The current patch checks the places where my manually constructed
8985         tests show the errors are showing up, but we should do it
8986         everywhere. 
8987
8988         ** Important2 **
8989
8990         mono_class_init return values should be tested everywhere, like
8991         the previous case this is something that we should audit
8992         everywhere and not only on the cases exposed by the tests I
8993         created. 
8994
8995 2006-04-26  Miguel de Icaza  <miguel@novell.com>
8996
8997         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
8998         boolean parameter and instead pass the information on `options'
8999         parameter (FileOptions).
9000
9001         * icall.c: Register the new signature for MonoIO.Open.
9002
9003         * debug-helpers.c (dis_one): Trying to understand how coverity
9004         works.  Fix Run 5, item 78.
9005
9006 2006-04-26  Dick Porter  <dick@ximian.com>
9007
9008         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
9009         dereference.
9010
9011 2006-04-25  Martin Baulig  <martin@ximian.com>
9012
9013         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
9014
9015         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
9016         debugger_thread_created().
9017         (debugger_gc_push_all_stacks): Don't handle the main thread in any
9018         special way.
9019         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
9020         (mono_debugger_finalize_threads): New function; undo the effects
9021         of mono_debugger_init_threads().
9022         (mono_debugger_create_all_threads): Removed.
9023
9024 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9025
9026         * image.c (mono_image_close): Tidy up trace messages.
9027
9028         * assembly.c (mono_assembly_close): Ditto.
9029
9030         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
9031         no longer references an already freed assembly. Fixes #78168.
9032
9033 2006-04-21  Dick Porter  <dick@ximian.com>
9034
9035         * threads.c (mono_thread_detach): Fix reference counting when
9036         detaching threads.
9037
9038 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
9039
9040         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
9041         #78155.
9042
9043 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
9046         (mono_type_to_stind): Ditto.
9047
9048         * marshal.c: Use the new helper functions to simplify code.
9049
9050         * image.c (mono_image_close): Add some code for help debug assembly unloading
9051         problems.
9052
9053         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
9054         image mempool.
9055
9056         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
9057         assembly was already loaded in another appdomain. Fixes #78083.
9058
9059 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
9060
9061         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
9062         referenced assemblies.
9063         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
9064
9065         * domain.c (mono_domain_free): Add a trace message.
9066
9067         * appdomain.c (add_assemblies_to_domain): Ditto.        
9068
9069         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
9070         field.  
9071
9072 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9073
9074         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
9075
9076 2006-04-12  Martin Baulig  <martin@ximian.com>
9077
9078         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
9079         `USE_INCLUDED_LIBGC'.   
9080
9081 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9082
9083         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
9084         the patch contains ../ and a small directory name later. Hopefully fixes
9085         #78035.
9086
9087 2006-04-10  Martin Baulig  <martin@ximian.com>
9088
9089         Clean up the debugger's thread-handling code.
9090
9091         The debugger's thread-handling code has been moved from
9092         ../mini/debug-debugger.c to threads.c.  We now iterate directly
9093         over the `threads' hash, keep track of exiting threads and also
9094         use proper locking.
9095
9096         We can now debug XSP and XSP based applications with the debugger.
9097
9098         * object-internals.h (MonoThread): Added `gpointer end_stack'.
9099
9100         * threads.h
9101         (MonoThreadCallbacks): Removed; this was only used by the debugger.
9102         (mono_install_thread_callbacks): Likewise.      
9103
9104         * threads.c (mono_thread_callbacks): Removed.
9105         (debugger_thread_created, debugger_thread_exited): New static functions.
9106         (start_wrapper): Call debugger_thread_created().
9107         (thread_cleanup): Call debugger_thread_exited().
9108         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
9109         (mono_debugger_init_threads): New public function.
9110         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
9111         iterate directly over the `threads' hash and also use proper locking.
9112
9113         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
9114
9115         * mono-debug-debugger.h
9116         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
9117
9118 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
9121         argument type=array. Fixes #78057.
9122
9123 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
9124
9125         * culture-info-table.h : regenerated. Fixed bug #69652.
9126
9127 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * loader.c metadata.c: Reapply a variant r59116.
9130         
9131         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
9132
9133         * class.c (mono_class_setup_interface_offsets): New internal function.
9134
9135         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
9136         interfaces too. Fixes #77398.
9137
9138         * reflection.c (encode_cattr_value): Add support for 
9139         parameter type=object, argument type=array.
9140         (load_cattr_value): Ditto. Fixes #77916.
9141
9142         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
9143         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
9144
9145         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
9146         a byval char array and CharSet is Ansi.
9147
9148         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
9149
9150 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
9151
9152         * metadata.c: Add some locking comments.
9153         
9154         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
9155         mempool.
9156         (mono_metadata_free_method_signature): Don't free the signature itself.
9157
9158         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
9159
9160         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
9161         reference the same MonoImage.
9162         (mono_assembly_load_from_full): Add an assert.
9163
9164 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * image.c (mono_image_close): Don't put the image we are about to free into the
9167         loaded_images_guid_hash.
9168
9169         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
9170         to reduce code duplication.
9171
9172         * marshal.c: Register the native functions called by this module as icalls, to
9173         somewhat centralize the creation of MonoMethodSignature's.
9174
9175         * loader.c (mono_method_signature): Add a cache for method signatures.
9176
9177         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
9178         the parameter attributes of a method.
9179         (mono_metadata_parse_method_signature_full): Refactored the computation of
9180         parameter attributes into a separate function. Also avoid one allocation in
9181         most cases.
9182
9183         * assembly.c (mono_assembly_close): Ditto.
9184
9185         * image.c (mono_image_close): Log trace messages with INFO level.
9186
9187         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
9188
9189         * image.c reflection.c: Correct reference counting of image modules.
9190         
9191         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
9192         of this function from the image mempool.
9193         
9194         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
9195         to allow more cached types to be used.
9196
9197         * mono-debug.c (mono_debug_add_method): Appled patch from
9198         David S. Miller  <davem@sunset.davemloft.net>: Access 
9199         minfo->lexical_blocks[] entry elements using read32().
9200
9201 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * loader.c (mono_free_method): No longer free the method header for non-dynamic
9204         methods as it is allocated from the mempool.
9205
9206         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
9207         image mempool.
9208
9209         * metadata-internals.h: Add comments describing the reference counting scheme
9210         used for MonoImage and MonoAssembly.
9211
9212         * image.c assembly.c reflection.c: Rework reference counting of images and 
9213         assemblies so they are freed when the runtime is shut down. Free some 
9214         additional memory structures when an image is unloaded.
9215         
9216 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * class.c loader.c reflection.c: Allocate more data structures in
9219         the image mempool.
9220
9221 2006-03-31  Miguel de Icaza  <miguel@novell.com>
9222
9223         * icall.c
9224         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
9225         build on pre glib 2.4 systems.
9226
9227 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
9230
9231         * icall.c: Fix some warnings.
9232
9233 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
9234
9235         * culture-info-table.h : regenerated.
9236
9237 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
9238
9239         * threads.c, object-internals.h, verify.c: changed the culture caching
9240         code to use a normal MonoArray for storage so the GC can keep track of
9241         them easily. Fixed bits of the cache logic, too and simplified the
9242         code.
9243
9244 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
9245
9246         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
9247         thread for non-Boehm GCs.
9248
9249 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
9250
9251         * domain.c, object.c, domain-internals.h: reduce the amount of memory
9252         needed to keep track of the data for static fields.
9253
9254 2006-03-29  Raja R Harinath  <rharinath@novell.com>
9255
9256         Fix #75172
9257         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
9258         for interface classes.  Use 'num_methods' instead.
9259         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
9260         before using '->vtable_size' field.
9261
9262 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9263
9264         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
9265         doesn't contain managed pointers, so use a normal hashtable.
9266
9267 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9268
9269         * reflection.c, class-internals.h, domain.c: fixed handling of types
9270         used as values for objects in custom attributes (bug #77915):
9271
9272 2006-03-24  Martin Baulig  <martin@ximian.com>
9273
9274         * class.c (mono_class_setup_fields): Added support for generic
9275         instances; fixes #77580.
9276
9277 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9278
9279         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
9280
9281 2006-03-24  Dick Porter  <dick@ximian.com>
9282
9283         * file-io.c (get_file_attributes): More stat macro breakage.
9284         Fixes bug 77759.
9285
9286 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
9287
9288         * profiler.c: added the file=filename option in the default profiler
9289         to output the profile data to filename.
9290
9291 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9292
9293         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
9294         bug #77877.
9295
9296 2006-03-22  Martin Baulig  <martin@ximian.com>
9297
9298         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
9299         allocated `MonoClassField *' in `fb->handle'.
9300
9301 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9302
9303         * class.c, image.c, metadata-internals.h: implemented new mechanism to
9304         allocate interface ID to save memory and allow better ID reuse on
9305         appdomain unload. setup_generic_vtable () removal from Martin.
9306
9307 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9308
9309         * object.h, appdomain.c, domain.c, exception.c, icall.c,
9310         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
9311         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
9312         write barriers for reference stores with managed objects accessed with
9313         C structures in the runtime and in embedding programs.
9314
9315 2006-03-20  Raja R Harinath  <rharinath@novell.com>
9316
9317         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
9318         'interface_id' and 'max_interface_id' fields of MonoClasses
9319         representing open generic types.
9320
9321 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
9322
9323         * object.h, object.c, icall.c: added functions to deal with
9324         storing valuetypes that contain references in managed objects.
9325         * reflection.c, string-icalls.c, threads.c, marshal.c: small
9326         fixes and comments around uses of mono_array_addr ().
9327
9328 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
9329
9330         * object.h, icall.c, monitor.c: object.GetHashCode ()
9331         implementation that supports the moving garbage collector.
9332
9333 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
9334
9335         * icall.c, threads-types.h, threads.c: implemented finalizer for
9336         LocalDataStoreSlot.
9337
9338 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9339
9340         * metadata.c (mono_type_size): Add a fixme.
9341         (mono_type_stack_size): Ditto.
9342
9343         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
9344         'type_forwarders' field.
9345
9346         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
9347         attribute from net 2.0.
9348
9349         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
9350         from class.c.
9351
9352         * class.c (mono_class_setup_fields): Fix a warning.
9353         
9354         * class.c (mono_class_from_name): Add support for assemblyref entries
9355         in the EXPORTEDTYPE table.
9356
9357         * reflection.c: Add support for handling type forwarders under net 2.0.
9358
9359         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
9360         
9361 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9362
9363         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
9364         overwriting entries in ModuleBuild->types, also clean up the code
9365         a little. Fixes #77774.
9366
9367 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9368
9369         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
9370         load friend assembly info when present.
9371
9372 2006-03-14  Raja R Harinath  <rharinath@novell.com>
9373
9374         Fix crasher on gtest-158.cs.
9375         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
9376         the return value if the MonoClass we want is yet in an
9377         inconsistent state.
9378         * class.c (mono_class_create_from_typedef): Add an comment
9379         explaining an order dependency between mono_class_setup_parent and
9380         mono_class_setup_mono_type.
9381
9382 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
9383
9384         * class.c: documentation updates and events bug fix.
9385
9386 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
9387
9388         * class.c: some cleanup, locking fixes.
9389
9390 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9391
9392         * class.c: fix the generics code to setup nested
9393         type info to the instantiated type (bug #77770).
9394
9395 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9396
9397         * marshal.c: fixed a few type correctness issues.
9398
9399 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9400
9401         * loader.c: the Set/Get/Addrtess array methods should be public.
9402
9403 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
9406         
9407         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
9408         info->wrapper.
9409
9410 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
9413
9414         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
9415
9416         * mempool.c (mono_mempool_alloc): Speed this up a bit.
9417         (mono_mempool_alloc0): Ditto.
9418
9419 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9420
9421         * socket-io.c:
9422         (create_object_from_sockaddr): it was allocating 4 extra bytes
9423         for the AF_UNIX data. Fixes bug #77747.
9424
9425 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9426
9427         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
9428
9429 2006-03-09  Dick Porter  <dick@ximian.com>
9430
9431         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
9432         Fixes bug 76966 again.
9433
9434 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
9435
9436         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
9437         names from r57532
9438         * appdomain.c: Bumped corlib version to 48 (due to r57532)
9439
9440 2006-03-07  Martin Baulig  <martin@ximian.com>
9441
9442         * object.c
9443         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
9444
9445 2006-03-07  Martin Baulig  <martin@ximian.com>
9446
9447         * class.c
9448         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
9449         regression introduced in r56970; see gtest-252.cs.
9450
9451         * loader.c (mono_get_method_constrained): Correctly handle generic
9452         methods; see gtest-253.cs.
9453
9454 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
9457
9458 2006-03-04  Martin Baulig  <martin@ximian.com>
9459
9460         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
9461         compute the parent type at runtime, just like we're already doing
9462         it for interfaces.
9463
9464         * reflection.c
9465         (mono_reflection_bind_generic_parameters): Don't compute the
9466         parent type anymore.
9467
9468         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
9469
9470 2006-03-04  Martin Baulig  <martin@ximian.com>
9471
9472         * mono-debug-debugger.h
9473         (mono_debugger_create_notification_function): Allocate memory at
9474         runtime and return a pointer to it.
9475
9476 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * assembly.c: Fix windows build.
9479         
9480         * assembly.c: Fix build.
9481
9482         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
9483
9484         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
9485         
9486 2006-03-03  Dick Porter  <dick@ximian.com>
9487
9488         * process.c
9489         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9490         Check parameters before dereferencing them.  Fixes Aaron's part of
9491         bug 77393.
9492
9493 2006-03-03  Raja R Harinath  <rharinath@novell.com>
9494
9495         Fix performance regression.
9496         * loader.c (find_method_in_class): Add 'from_class' argument.
9497         Rename 'klass' argument to 'in_class'.  The signature is compared
9498         against the method in 'in_class', and the corresponding method is
9499         returned from 'from_class'.
9500         (find_method): Walk both 'in_class' and 'from_class' in parallel.
9501         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
9502         type definition and generic instantiation in parallel.
9503         (mono_get_method_constrained): Update to changes.
9504
9505 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9506
9507         * threads.c: make sure the domain is correct, too when doing
9508         mono_thread_attach ().
9509
9510 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
9511
9512         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
9513         windows. Fixes #77683.
9514
9515 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9516
9517         * object.h, *: introduced specific way to set elements of an array
9518         of references to be used as write barrier. Still need to audit the
9519         uses of mono_array_addr.
9520
9521 2006-03-01  Miguel de Icaza  <miguel@novell.com>
9522
9523         * object-internals.h: New field to cache the assmebly name, patch
9524         from Tambet Ingo (tambet@ximian.com)
9525
9526 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9527
9528         * decimal.h, class-internals.h, metadata-internals.h,
9529         file-io.h: mark a few function declarations as internal, to
9530         reduce the number of PLT entries.
9531
9532 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9533
9534         * file-io.c: fix typo in warning message.
9535
9536 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
9537
9538         * loader.c: on unix, lookup the "*A" version of a function
9539         if charset is auto as a second option before failing.
9540
9541 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9542
9543         * class.h (mono_class_inflate_generic_method): Revert to two
9544         argument version.
9545         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
9546         (mono_class_inflate_generic_method_full): Add.
9547         * class.c (mono_class_inflate_generic_method_full): Rename from
9548         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
9549         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
9550         * loader.c, reflection.c: Update to changes.
9551
9552 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9553
9554         * icall.c: const fixes and small improvements.
9555
9556 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9557
9558         * threadpool.c: for asynchronous connect(), enable the same workaround
9559         for BSD 6 as for the Mac. Fixes bug #77637.
9560
9561 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
9564         formatted classes. Fixes #77524.
9565
9566 2006-02-24  Raja R Harinath  <rharinath@novell.com>
9567
9568         * class.c (inflate_generic_type): Add a couple more
9569         micro-optimizations.
9570         (inflate_generic_context): Don't use the 'gmethod' from
9571         'inflate_with'.
9572         (mono_class_inflate_generic_method): If the method has generic
9573         parameters, but the passed-in context doesn't have a 'gmethod',
9574         create one.  Use the possibly simplified generic instantiation
9575         from the declaring class instead of the one passed in.
9576
9577 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9578
9579         Make generic method signature and method header handling lazy.
9580         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
9581         (inflate_generic_header): Likewise.
9582         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
9583         parameter to avoid inflating types.
9584         (mono_get_inflated_method): Empty out.
9585         * class.h (mono_class_inflate_generic_method): Update to changes.
9586         * loader.c (mono_get_method_from_token): Don't parse signature for
9587         generic methods, nor methods of generic classes.
9588         (mono_method_signature): Rename from 'mono_method_signature'.
9589         Inflate signature on demand.
9590         (mono_method_get_header): Inflate method header on demand.
9591         * reflection.c: Update to changes.
9592
9593 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9594
9595         * metadata.c (mono_metadata_inflate_generic_inst): If the
9596         instantiation is closed, don't bother expanding it in the new
9597         context.
9598         * class.c (inflate_generic_class): If the generic instantiation
9599         doesn't change after inflation, return the argument itself.
9600         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
9601         Add bounds checks.
9602         (inflate_generic_context): If neither the generic class nor the
9603         generic method instantiations change, return the original context.
9604         * reflection.c (mono_method_get_object): Do
9605         'mono_get_inflated_method' before accessing the ->klass field.
9606         (inflate_mono_method): Don't create a MonoGenericMethod unless
9607         necessary.
9608         (inflate_method): Don't pass a constructed type as the declaring
9609         type of a methodbuilder.
9610
9611 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
9612
9613         * object.c: fix memory overwrite.
9614
9615 2006-02-22  Dick Porter  <dick@ximian.com>
9616
9617         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
9618         it doesn't work any more.
9619         (mono_threads_request_thread_dump): Fix unused variable warnings.
9620
9621 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9622
9623         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
9624         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
9625         the public header file.
9626
9627 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
9628
9629         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
9630
9631 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9632
9633         * class-internals.h, object.c: reduce the size of MonoVTable
9634         and store the interface_offsets array at negative offsets.
9635
9636 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9637
9638         * metadata.c: tweak table descriptors data structures to reduce
9639         size and runtime relocations.
9640
9641 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9642
9643         * marshal.c: fix some types and opcodes to be type-safe
9644         in marshaling wrappers.
9645
9646 2006-02-21  Ankit Jain  <jankit@novell.com>
9647
9648         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
9649
9650 2006-02-21  Raja R Harinath  <rharinath@novell.com>
9651
9652         * metadata.c (get_constraints): Relax debugging checks for monodis.
9653
9654 2006-02-21  Ankit Jain  <jankit@novell.com>
9655
9656         * metadata.c (mono_metadata_load_generic_params): Move the code
9657         checking for ambiguous generic params from here to mono/dis/get.c
9658         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
9659
9660 2006-02-21  Raja R Harinath  <harinath@gmail.com>
9661
9662         Fix assertion triggered when compiling nemerle.
9663         * class.c (mono_get_shared_generic_inst): Rename from
9664         get_shared_inst and make non-static.
9665         * loader.c (mono_get_shared_generic_method): New.  Used to create
9666         the MonoGenericContext-equivalent of a MonoGenericContainer.
9667         (mono_get_method_from_token): Initialize the 'context' field of
9668         the created MonoGenericContainer.
9669         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
9670         * metadata.c (get_constraints): Add sanity check.
9671         * class-internals.h: Add new internal methods.
9672
9673         * reflection.c (verify_safe_for_managed_space): New sanity check.
9674         Currently checks that owner-less generic parameters aren't allowed
9675         in managed space.
9676         (mono_type_get_object): Use it.
9677         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
9678         that are now in mono_type_get_object.
9679         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
9680
9681 2006-02-19  Raja R Harinath  <harinath@gmail.com>
9682
9683         * metadata.c (mono_type_create_from_typespec): Rename from
9684         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
9685         argument and caching of types in the generic container.
9686         (unwrap_arrays, find_generic_param): Remove.
9687         * metadata-internals.h: Update.
9688         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
9689
9690 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
9691
9692         * class.c (mono_class_get_exception_for_failure): Fix a warning.
9693
9694         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
9695         return values. Fixes #77581.
9696
9697         * class.c (mono_fnptr_class_get): Switch name and name_space.
9698
9699         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
9700         classes and add support for [In, Out] attributes.
9701         (mono_marshal_free_asany): Ditto. Fixes #77524.
9702
9703 2006-02-18  Raja R Harinath  <harinath@gmail.com>
9704
9705         * class.c (mono_class_from_generic_parameter): Make more robust to
9706         incomplete MonoGenericContainers from monodis.
9707
9708 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9709
9710         * class-internals.h: added some more exception types.
9711         * class.c, metadata.c: added a few checks to handle missing
9712         types.
9713
9714 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9715
9716         Use owner-less generic-params some more.
9717         * class.c (my_mono_class_from_generic_parameter): Remove.
9718         (mono_class_from_generic_parameter): Handle null image,
9719         param->name and param->owner.
9720         (mono_class_from_mono_type): Update.
9721         (mono_class_create_from_typespec): Remove 'container' parameter.
9722         If that parameter is non-null, the result is always inflated by
9723         'mono_class_get_full' anyway.
9724         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
9725         parameter.
9726         (mono_class_get_full): Update.
9727
9728         * class.c (inflate_generic_type) [GENERICINST]: If the generic
9729         instance is not open, don't bother inflating.
9730         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
9731         parse metadata for inflated classes.
9732         (_mono_class_get): Change GenericContext* parameter to
9733         GenericContainer*.
9734         (mono_class_create_from_typespec): Likewise.  Simplify, and
9735         implement trivially.  All the cases are handled in
9736         mono_class_from_mono_type.  Don't inflate returned class.
9737         (mono_class_get_full): Delegate GENERICINST optimization to
9738         inflate_generic_type.
9739         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
9740
9741 2006-02-16  Dick Porter  <dick@ximian.com>
9742
9743         * socket-io.c (create_object_from_sockaddr): Fix typo.
9744         (create_sockaddr_from_object): Check array lengths before
9745         potentially accessing items off the end.
9746         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
9747         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
9748         (ves_icall_System_Net_Sockets_Socket_Send_internal)
9749         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
9750         length checks to avoid wraparound overflows.
9751         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
9752         contents of the array of sockets
9753         (hostent_to_IPHostEntry2)
9754         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
9755         Check return value of inet_ntop ().
9756         (addrinfo_to_IPHostEntry): Fix typo
9757
9758 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9759
9760         Type metadata parsing doesn't use generic-instantiation information.
9761         * metadata.c (mono_metadata_parse_array_full): Change
9762         MonoGenericContext* parameter to MonoGenericContainer*.
9763         (mono_metadata_parse_type_full): Likewise.
9764         (mono_type_create_from_typespec_full): Likewise.
9765         (mono_metadata_parse_mh_full): Likewise.
9766         (mono_metadata_parse_generic_inst): Likewise.
9767         (do_mono_metadata_parse_generic_class): Likewise.
9768         (do_mono_metadata_parse_type): Likewise.
9769         * metadata-internals.h: Update to changes.
9770         * class.c (mono_class_find_enum_basetype): Likewise.
9771         (mono_class_setup_fields): Likewise.
9772         (mono_class_create_from_typespec): Likewise.
9773         * loader.c (method_from_methodspec): Likewise.
9774         (mono_get_method_from_token): Likewise.
9775         (mono_method_get_header): Likewise.
9776
9777 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9778
9779         * marshal.c: handle additional GENERICINST case (patch from
9780         Thong Nguyen <tum@veridicus.com>).
9781         Fix a few cases where LDIND_I/STIND_I was used for references.
9782
9783 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9784
9785         * reflection.c (mono_reflection_get_token): Remove unused variable.
9786
9787 2006-02-16  Martin Baulig  <martin@ximian.com>
9788
9789         * reflection.c (mono_reflection_get_token): Add support for fields
9790         in instantiated generic types.
9791
9792         * icall.c
9793         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
9794
9795 2006-02-15  Martin Baulig  <martin@ximian.com>
9796
9797         * icall.c
9798         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
9799         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
9800         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
9801         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
9802
9803 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9804
9805         * class.c, metadata.c, metadata.h, object.c, icall.c,
9806         marshal.c: changed mono_type_get_underlying_type () to do
9807         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
9808         Fixed handling of instantiated generic valuetypes (bug #75479).
9809
9810 2006-02-15  Raja R Harinath  <rharinath@novell.com>
9811
9812         * metadata.c (mono_metadata_decode_signed_value): Simplify.
9813         Delegate to mono_metadata_decode_value, and work on the returned value.
9814
9815         * icall.c (ves_icall_MonoType_GetGenericArguments):
9816         Add consistency check here too.
9817         
9818 2006-02-15  Ankit Jain  <jankit@novell.com>
9819
9820         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
9821         char/short etc.
9822
9823 2006-02-15  Ankit Jain  <jankit@novell.com>
9824
9825         * metadata.c (mono_metadata_decode_signed_value): New function to decode
9826         signed values, used only for representing lower bounds of arrays.
9827         (mono_metadata_parse_array_full): Use new
9828         mono_metadata_decode_signed_value to decode lower bounds.
9829
9830 2006-02-14  Martin Baulig  <martin@ximian.com>
9831
9832         * reflection.c
9833         (mono_reflection_get_token): Support "MonoGenericMethod" and
9834         "MonoGenericCMethod" and allow generic instances / methods.
9835
9836 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9837
9838         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
9839         to obtain the terminal size using an ioctl.
9840
9841         * object.c (mono_nullable_init): Revert this as nullable reference
9842         types are not valid.
9843         (mono_nullable_box): Ditto.
9844
9845 2006-02-09  Dick Porter  <dick@ximian.com>
9846
9847         * threads.c (mono_thread_detach): Drop a reference to the thread
9848         we're detaching.
9849
9850 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9851
9852         * object.c (mono_nullable_init): Handle nullable reference types.
9853         (mono_nullable_box): Ditto. Fixes #77446.
9854
9855 2006-02-07  Martin Baulig  <martin@ximian.com>
9856
9857         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
9858
9859 2006-02-07  Ankit Jain  <jankit@novell.com>
9860
9861         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
9862         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
9863         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
9864         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
9865         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
9866         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
9867
9868 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * class.c (mono_class_create_generic): Set type_token as well.
9871
9872         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
9873         compatible with MS.
9874
9875 2006-02-02  Martin Baulig  <martin@ximian.com>
9876
9877         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
9878         has never been used so far.
9879
9880 2006-02-02  Martin Baulig  <martin@ximian.com>
9881
9882         * mono-debug-debugger.h: Changed comment at the top of this file;
9883         the header is not installed, but it's safe to #include it from
9884         within the JIT.
9885
9886         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
9887         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
9888
9889 2006-02-02  Martin Baulig  <martin@ximian.com>
9890
9891         * mono-debug.h
9892         (MonoSymbolTable): Removed the `metadata_info' field.
9893
9894         * mono-debug.c
9895         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
9896
9897         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9898         (mono_debugger_add_builtin_types): Removed.
9899         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
9900         (mono_debugger_create_notification_function): We now operate on a
9901         pre-allocated area; take a `gpointer' and return `void'.
9902
9903         * mono-debug-debugger.c
9904         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
9905         (mono_debugger_add_builtin_types): Removed.
9906
9907 2006-02-02  Martin Baulig  <martin@ximian.com>
9908
9909         * threads.c (mono_debugger_create_all_threads): New public method.
9910
9911 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9912
9913         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
9914         breaks on several platforms.
9915
9916 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
9917
9918         * assembly.c: the VS.NET build doesn't supply default values for
9919         MONO_ASSEMBLIES and MONO_CFG_DIR.
9920
9921 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
9922
9923         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
9924         helper function.
9925
9926         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
9927
9928         * loader.c (method_from_memberref): Fix a warning.
9929
9930         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
9931
9932         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
9933         with explicit layout. Fixes #77433.
9934
9935 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
9936
9937         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
9938         max_interface_id is initialized before using it. Fixes #77398.
9939         (ves_icall_Type_GetInterfaces): Ditto.
9940
9941 2006-01-30  Raja R Harinath  <rharinath@novell.com>
9942
9943         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9944         allocate memory for parameter attributes when parsing memberref
9945         signatures.
9946         * loader.c (mono_loader_set_error_method_load): Don't warn.
9947         (method_from_memberref): Ensure MissingMethodException gets thrown
9948         if method is not found.  Make warning more informative.
9949
9950 2006-01-29  Raja R Harinath  <harinath@gmail.com>
9951
9952         Fix #77397
9953         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
9954         return true if is byref.
9955         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9956         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
9957         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
9958
9959 2006-01-27  Raja R Harinath  <rharinath@novell.com>
9960
9961         Fix tests/find-method.2.il
9962         * loader.c (find_method, find_method_in_class): Remove is_inflated
9963         argument.  Revert 2006-01-18 change.
9964         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
9965         is generic, search for method in its generic definition.
9966         * class.c (mono_class_setup_vtable_general): Print generic
9967         arguments of generic types in debugging printf.
9968
9969 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
9970
9971         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
9972
9973         * threads.c (mono_threads_request_thread_dump): New helper function.
9974
9975 2006-01-25  Raja R Harinath  <rharinath@novell.com>
9976
9977         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
9978
9979 2006-01-25  Ankit Jain  <jankit@novell.com>
9980
9981         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
9982         move definition to ..
9983         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
9984         
9985 2006-01-25  Ankit Jain  <jankit@novell.com>
9986             Raja R Harinath  <rharinath@novell.com>
9987
9988         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
9989         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
9990         as necessary.
9991
9992 2006-01-25  Martin Baulig  <martin@ximian.com>
9993
9994         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
9995         `MonoDebuggerThread' into debug-debugger.c.
9996
9997 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9998
9999         * profiler.c: fix printing of data.
10000
10001 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
10002
10003         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
10004           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
10005
10006 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10007
10008         * object.c: fix deadlock related to string interning.
10009
10010 2006-01-23  Martin Baulig  <martin@ximian.com>
10011
10012         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
10013
10014         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
10015
10016 2006-01-23  Martin Baulig  <martin@ximian.com>
10017
10018         * mono-debug.h: Moved the prototypes of some functions which are
10019         used by the JIT here from mono-debug-debugger.h.
10020
10021 2006-01-21  Martin Baulig  <martin@ximian.com>
10022
10023         * Makefile.am: Don't install mono-debug-debugger.h.
10024
10025 2006-01-21  Martin Baulig  <martin@ximian.com>
10026
10027         * mono-debug-debugger.h: Enforce the private status of this header
10028         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
10029         Moved some stuff from mono-debugger-jit-wrapper.h here.
10030
10031 2006-01-20  Raja R Harinath  <rharinath@novell.com>
10032
10033         * class.c (mono_class_from_typeref): Add a sanity test to help
10034         catch lack of assembly load/search hooks.
10035
10036 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * marshal.c (emit_struct_conv): Relax the fields with same offset
10039         check even more. Fixes #77230.
10040
10041 2006-01-18  Martin Baulig  <martin@ximian.com>
10042
10043         * loader.c (find_method_in_class): Added `gboolean is_inflated'
10044         argument; if false, we compare the uninstantiated signatures.
10045         (method_from_memberref): Compare the uninstantiated signatures;
10046         fixes #76417.
10047
10048 2006-01-18  Robert Jordan  <robertj@gmx.net>
10049
10050         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
10051         Clear the weak link. Fixes bug #77170.
10052
10053         * gc.c (mono_gchandle_free):
10054         Reflect *-gc.c changes (tiny optimization).
10055
10056 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
10057
10058         * metadata.c (mono_metadata_signature_dup): Applied patch from
10059         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
10060         Fixes #77288.
10061
10062 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * marshal.c (emit_struct_conv): Allow fields with the same offset when
10065         marshalling from native to managed code. Fixes #77230.
10066
10067 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10068
10069         * threadpool.c: fix problem (Mac only) when more than one asynchronous
10070         connect. Fixes bug #77020.
10071
10072 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10073
10074         * class.c: fixed id assignement for nested interfaces (bug #77275).
10075         Added also better info for --print-vtable debugging.
10076
10077 2006-01-12  Martin Baulig  <martin@ximian.com>
10078
10079         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
10080         interfaces on-the-fly; fixes #76625.
10081
10082         * class-internals.h
10083         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
10084         don't need that anymore.
10085
10086 2006-01-12  Miguel de Icaza  <miguel@novell.com>
10087
10088         * socket-io.c
10089         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
10090         To avoid initing the nested_classes when not needed I turned the
10091         PeerCredData as a toplevel internal class, as it has to be shared
10092         anyways. 
10093
10094         Fixes the CASA issue.
10095
10096 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10097
10098         * domain.c: Accessors for MonoJitInfo
10099
10100         * profiler-private.h: Add jitinfo to the end jit hook
10101
10102         * profiler.[ch]: Define new hooks, called after jitting which give
10103         the MonoJitInfo that was compiled
10104
10105 2006-01-10  Martin Baulig  <martin@ximian.com>
10106
10107         * class.c (mono_class_setup_events): Add support for generic
10108         classes; fixes #76440.
10109
10110 2006-01-06  Raja R Harinath  <rharinath@novell.com>
10111
10112         Fix #77160.
10113         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
10114         on passed-in method.
10115
10116 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10117
10118         * object.c (mono_runtime_invoke_array): Add Nullable support.
10119
10120         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
10121
10122 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
10123
10124         * file-io.c: Don't consider sockets as directory and avoid an endless
10125         loop. Fix bug #76966.
10126
10127 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10128
10129         * object.c (mono_nullable_init): New helper function.
10130         (mono_nullable_box): Ditto.
10131
10132         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
10133
10134         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
10135
10136         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
10137         
10138 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
10139
10140         * class.c (mono_class_is_assignable_from): Make T assignable to 
10141         Nullable<T>.
10142
10143 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
10144
10145         * appdomain.c: Bump corlib version to 46.
10146         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
10147         serialization purpose) and changed ves_icall_System_Reflection_
10148         Assembly_get_code_base signature to accept a boolean (to escape, or 
10149         not, the assembly code base).
10150
10151 2005-12-23  Dick Porter  <dick@ximian.com>
10152
10153         * icall.c: 
10154         * threads-types.h: 
10155         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
10156         CreateEvent icall now returns "created" boolean parameter.
10157
10158 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10159
10160         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
10161         #76967.
10162
10163         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
10164         when attr_klass is an interface. Fixes #77045.
10165
10166 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * marshal.c (emit_struct_conv): Fix previous patch.
10169         
10170         * marshal.c (emit_struct_conv): Add a check for fields with the same
10171         offset.
10172
10173 2005-12-20  Raja R Harinath  <rharinath@novell.com>
10174
10175         Fix regression in Mono.C5.
10176         * class.c (mono_class_create_generic): If 'klass' is an interface
10177         set up the interface offsets.
10178         (mono_class_is_assignable_from): Don't throw away generic arguments.
10179
10180 2005-12-19  Raja R Harinath  <rharinath@novell.com>
10181
10182         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
10183         type parameters.
10184
10185 2005-12-15  Raja R Harinath  <rharinath@novell.com>
10186
10187         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
10188         dead store.
10189         (do_mono_metadata_parse_generic_class): Don't pass the current
10190         generic context when parsing the type being instantiated: it
10191         cannot use it, anyway.
10192
10193         * loader.c (method_from_memberref): Don't inflate a signature if
10194         it doesn't contain any type parameters.
10195
10196 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10197
10198         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
10199
10200 2005-12-14  Martin Baulig  <martin@ximian.com>
10201
10202         * class.c
10203         (mono_type_get_name_recurse): Don't return null for type
10204         parameters and open generic classes.
10205         (mono_class_setup_methods): Don't exclude generic instances.
10206         (mono_get_unique_iid): Use different IDs for different
10207         instantiations of the same generic type.
10208         (mono_class_setup_vtable): Only use setup_generic_vtable() for
10209         open generic instances; create a normal vtable for closed generic
10210         instances.
10211         (mono_class_setup_vtable_general): We're now also called for
10212         closed generic instances.
10213
10214         * reflection.c
10215         (mono_reflection_bind_generic_parameters): Correctly use
10216         mono_metadata_lookup_generic_inst() everywhere.
10217
10218 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * object.c (mono_class_create_runtime_vtable): Call 
10221         mono_class_setup_vtable ().
10222
10223         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
10224         function.
10225         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
10226         #76959.
10227
10228         * loader.c (mono_loader_set_error_type_load): Print the type load
10229         warnings to the console so they are more visible to the user.
10230         (mono_loader_set_error_method_load): Ditto.
10231
10232         * reflection.c (ensure_runtime_vtable): Revert the last change as it
10233         is still broken.
10234         
10235         * reflection.c (ensure_runtime_vtable): Fix build.
10236
10237         * reflection.c (ensure_runtime_vtable): Disable an optimization which
10238         doesn't work in all cases.
10239
10240 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
10241
10242         * object.c (mono_array_new_full): Treat a single dimensional array
10243         with 0 lower bounds as an szarray. Fixes #76973.
10244
10245         * reflection.c (custom_attr_visible): Really fix this.
10246
10247 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * reflection.c (custom_attr_visible): Allow nested public attributes
10250         as well.
10251
10252         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
10253         interface check.
10254
10255 2005-12-12  Raja R Harinath  <harinath@gmail.com>
10256
10257         * class.c (set_generic_param_owner): Delete.
10258         (mono_class_create_from_typedef): Don't set ->owner field of
10259         generic parameters to "param containers" of enclosing classes.
10260         * reflection.c (mono_reflection_initialize_generic_parameter):
10261         Likewise.
10262
10263 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * reflection.c (custom_attr_visible): Fix build.
10266
10267 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
10268
10269         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
10270         private attributes.
10271         
10272         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
10273         handling of null parameter defaults.
10274
10275 2005-12-09  Raja R Harinath  <rharinath@novell.com>
10276
10277         * class.c (mono_class_from_generic_parameter): Don't set
10278         klass->generic_container.
10279         (my_mono_class_from_generic_parameter): Likewise.
10280
10281 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10282
10283         * reflection.c (load_public_key): Fix a warning.
10284         (method_encode_code): Fix unaligned accesses.
10285
10286 2005-12-07  Martin Baulig  <martin@ximian.com>
10287
10288         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
10289
10290         * reflection.c
10291         (write_generic_param_entry): Encode our custom attrs.
10292
10293         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
10294
10295 2005-12-07  Martin Baulig  <martin@ximian.com>
10296
10297         * reflection.c (encode_new_constraint): Removed; we don't use the
10298         `NewConstraintAttribute' anymore.
10299
10300 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
10303         not fire a TypeResolve event when Assembly.GetType () is called.
10304
10305 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10306
10307         Beginning of support for nullable types in the runtime. Parts of
10308         this patch are from Martin.
10309
10310         * appdomain.c (MONO_CORLIB_VERSION): Bump
10311
10312         * domain.c (mono_init_internal): get the nullable type
10313
10314         * class.c (mono_class_is_nullable): New method
10315         (mono_class_get_nullable_param): New mehod
10316         (mono_class_create_generic): In types T? set cast_class to T
10317
10318         * class-internals.h (MonoDefaults): new nullable default class
10319         (mono_class_get_nullable_param, mono_class_get_nullable_param):
10320         new methods.
10321
10322 2005-12-05  Raja R Harinath  <rharinath@novell.com>
10323
10324         * metadata.c (select_container): New.  Refactor code to select the
10325         appropriate GenericContainer given the type of generic parameter
10326         we are looking for.
10327         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
10328         not a MonoGenericContext.  Use select_container.  Update parameters.
10329         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
10330         and MONO_TYPE_MVAR.
10331         (unwrap_arrays): Remove duplicate tests.
10332         (find_generic_param): Rename from 'has_same_context'.  Now walks a
10333         generic instantiated class to find any arguments that are generic
10334         parameters.
10335         (mono_type_create_from_typespec_full): Use find_generic_param to
10336         avoid evicting some generic instantiations from the typespec
10337         cache.
10338
10339 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
10340
10341         * reflection.c: fixed writing of doubles on ARM FPA.
10342
10343 2005-12-02  Robert Jordan  <robertj@gmx.net>
10344
10345         * icall.c: Fixed EventInfo.ReflectedType (#76829).
10346
10347 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10348
10349         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
10350         least on SUSE 10 they are not the same (on debian, they are just the
10351         same thing).
10352
10353 2005-12-01  Raja R Harinath  <rharinath@novell.com>
10354
10355         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
10356         DeclaringType for VARs and MVARs.
10357         * class.c (set_generic_param_owner): Fix initialization of owner
10358         fields.
10359
10360 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
10361
10362         * icall.c: fixed Enum.ToObject() to correctly convert the values.
10363
10364 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10365
10366         * threadpool.c: workaround for a bug that shows up on the Mac:
10367         select()+connect() on a blocking socket is not like it should
10368         be, so we proceed to connect() in that case, wasting the I/O
10369         threadpool thread until connect succeedes. Fixes bug #75436.
10370
10371 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10372
10373         * threadpool.c: fix typo when setting file descriptor states.
10374
10375 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10376
10377         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
10378         * metadata.c (mono_metadata_parse_method_signature_full): Don't
10379         create a temporary signature container.
10380         (mono_metadata_parse_generic_param): Update to changes.
10381         (mono_type_create_from_typespec_full): Update to changes.
10382         * loader.c (method_from_memberref): Don't use a
10383         MonoGenericContainer while parsing a memberref signature.
10384         (method_from_methodspec): Remove dead-store of the 'container'
10385         variable.  It's overwritten before use.
10386
10387         * metadata.c (mono_type_create_from_typespec_full): Make debugging
10388         checks tighter.
10389         (mono_metadata_parse_generic_param): Likewise.
10390         * loader.c (find_method_in_class): Does not need a
10391         MonoGenericContainer.  Use 'mono_method_signature' rather than
10392         'mono_method_signature_full'.
10393         (find_method, mono_get_method_constrained, method_from_memberref):
10394         Update to changes.
10395
10396         * metadata.c (mono_type_create_from_typespec_full): Ensure that
10397         owner-less generic-parameters are never evicted from the typespec
10398         cache.
10399
10400         * loader.c (method_from_memberref): Don't use the current context
10401         when parsing signatures.
10402         (method_from_methodspec, mono_get_method_from_token): Update to changes.
10403
10404         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
10405         side-effects in g_assert.
10406         * loader.c (mono_get_method_from_token): Resolve klass earlier so
10407         that we don't potentially lose information.
10408
10409 2005-11-26  Dick Porter  <dick@ximian.com>
10410
10411         * icall.c:
10412         * threads.c: icalls to implement basic (ie, not named)
10413         System.Threading.Semaphore.
10414
10415 2005-11-24  Dick Porter  <dick@ximian.com>
10416
10417         * process.c
10418         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
10419         Use GetProcessId() if it's available.
10420
10421 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
10424
10425 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10426             Ankit Jain  <jankit@novell.com>
10427
10428         * loader.c (mono_get_method_from_token): Initialize 'method' field
10429         of all generic parameters before parsing the signature.  Remove
10430         code that "fixed"-up MVAR references.
10431
10432 2005-11-23  Ankit Jain  <jankit@novell.com>
10433
10434         * metadata.c (mono_metadata_has_generic_params):
10435         (mono_metadata_load_generic_param_constraints):
10436         (mono_metadata_load_generic_params): Move duplicate code ...
10437         (mono_metadata_get_generic_param_row): ... here. Returns the
10438         first row-id in GenericParam table for a given owner (token).
10439         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
10440         prototype.
10441
10442 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10443             Ankit Jain  <jankit@novell.com>
10444
10445         * metadata.c (mono_metadata_class_equal): Pass signature_only when
10446         comparing VARs too.
10447         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
10448         type->data.generic_param only if the type is an MVAR.
10449         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
10450         leak owner-less VARs and MVARs into managed space.
10451
10452 2005-11-21  Martin Baulig  <martin@ximian.com>
10453
10454         * class-internals.h
10455         (MonoMethod): Moved the `generic_container' here from
10456         `MonoMethodNormal' since we now also need it for
10457         `MonoMethodPInvoke';
10458         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
10459         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
10460         an union containing both `MonoMethodNormal' and
10461         `MonoMethodPInvoke'.
10462
10463         * loader.c
10464         (mono_get_method_from_token): Allow implementing generic methods
10465         as interncalls.
10466
10467         * threads.c
10468         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
10469         icall.
10470
10471 2005-11-17  Dick Porter  <dick@ximian.com>
10472
10473         * icall.c: 
10474         * process.h: 
10475         * process.c: Split the Process Start_internal icall into
10476         ShellExecuteEx_internal and CreateProcess_internal, which are
10477         called depending on whether UseShellExecute is true.  Fixes bug
10478         76670.
10479
10480         * appdomain.c (MONO_CORLIB_VERSION): Incremented
10481
10482 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
10485         'msize' parameters, use the information in 'mspec' instead.
10486         (emit_object_to_ptr_conv): Ditto.
10487
10488         * marshal.c (emit_struct_conv): Handle explicit layout structs with
10489         fields out of order. Fixes #76733.
10490
10491 2005-11-17  Ankit Jain  <jankit@novell.com>
10492
10493         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
10494
10495 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
10496
10497         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
10498           bug #76575.
10499
10500 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
10503         for types with non-auto layout. Fixes #76717.
10504
10505 2005-11-16  Ankit Jain  <jankit@novell.com>
10506
10507         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
10508         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
10509         if generic_context is null.
10510           (mono_metadata_generic_param_equal): param->owner can be null.
10511           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
10512         null.
10513
10514 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
10517         the correct value.
10518
10519 2005-11-15  Martin Baulig  <martin@ximian.com>
10520
10521         * object.c (set_value): Use mono_class_from_mono_type() instead of
10522         the hack for generic instances; fixes #76136.
10523
10524 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
10527         fields.
10528
10529         * image.c (load_metadata_ptrs): Initialize the new fields.
10530
10531         * reflection.c (create_dynamic_mono_image): Ditto.
10532
10533         * reflection.c (build_compressed_metadata): Use the new fields.
10534
10535         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
10536         icall.
10537
10538         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
10539         icall.
10540         
10541 2005-11-15  Ankit Jain  <jankit@novell.com>
10542             Raja R Harinath  <harinath@gmail.com>
10543
10544         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
10545         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
10546         new per-generic_container cache if the cached MonoType's context matches
10547         the current context.
10548           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
10549         to the expected context.
10550           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
10551
10552 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10553
10554         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
10555         we changed the signature of an icall.
10556         * icall.c: Modify to mono_double_ParseImpl return true/false 
10557         depending on the success, instead of throwing the exception. This will
10558         help us in Double.TryParse methods.
10559         
10560 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
10561
10562         * marshal.c (emit_marshal_object): Throw an exception when
10563         marshalling 'object' instead of crashing. Fixes #76696.
10564
10565 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * class-internals.h: Add prototype for mono_type_get_full_name ().
10568
10569 2005-11-11  Dick Porter  <dick@ximian.com>
10570
10571         * threads.c (mono_thread_manage): Make sure the main thread has
10572         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
10573
10574 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10575
10576         * loader.c (mono_loader_set_error_type_load): Log a warning to the
10577         console about the missing type.
10578         (mono_loader_set_error_method_load): Ditto.
10579
10580 2005-11-09  Miguel de Icaza  <miguel@novell.com>
10581
10582         * mono-config.c (mono_get_config_dir): Set the system defaults if
10583         none is specified.
10584
10585         * assembly.c (mono_set_dirs): New API entry point to set the
10586         assembly and the config directory in one call
10587
10588 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
10591         the ftnptr was created from a delegate in a domain other than the
10592         current domain. Fixes #75377.
10593
10594         * exception.h exception.c: Add mono_get_exception_not_supported ().
10595
10596 2005-11-08  Martin Baulig  <martin@ximian.com>
10597
10598         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
10599
10600 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
10601
10602         * security-manager.h: Added definitions to deal with strongname key 
10603         pairs bigger (and smaller) than 1024 bits.
10604         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
10605         adjust wrt the public key length being used.
10606
10607 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10608
10609         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
10610           Windows build (r51396-51397).
10611
10612 2005-11-03  Martin Baulig  <martin@ximian.com>
10613
10614         * class.c (mono_class_setup_vtable_general): Also add generic
10615         methods to the vtable; fixes #76581.
10616
10617 2005-11-01  Miguel de Icaza  <miguel@novell.com>
10618
10619         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
10620         sure that we lookup GetString method from the System.Text.Encoding
10621         class, not the derived class or we get an empty method.
10622
10623         Fixed class #76612.
10624
10625 2005-10-25  Miguel de Icaza  <miguel@novell.com>
10626
10627         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
10628         if it has been previously set (embedders). 
10629
10630         Make mono_set_rootdir available also on Unix.
10631
10632 005-10-24  Robert Jordan  <robertj@gmx.net>
10633
10634         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
10635
10636 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10637
10638         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
10639         only calls which are made to native code use this flag.
10640
10641         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
10642
10643 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10644
10645         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
10646         Add support for FieldBuilders.
10647
10648 2005-10-29  Martin Baulig  <martin@ximian.com>
10649
10650         * mono-debug.c
10651         (mono_debug_using_mono_debugger): New public method; returns
10652         whether we're running inside the debugger.
10653
10654 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
10657         for Method/Constructor/FieldBuilders.
10658
10659 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * reflection.c (module_add_cattrs): Save custom attributes for global methods
10662         and fields as well.
10663
10664 2005-10-26  Martin Baulig  <martin@ximian.com>
10665
10666         * mono-debug-debugger.c
10667         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
10668
10669 2005-10-24  Raja R Harinath  <harinath@gmail.com>
10670
10671         * icall.c (base64_to_byte_array): Don't pass an out-of-range
10672         integer to isspace.
10673
10674 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
10677         when passing valuetypes byref. Fixes #76502.
10678
10679 2005-10-19  Jackson Harper  <jackson@ximian.com>
10680
10681         * profiler.c: Don't put a . in front of types that are not in a
10682         namespace.
10683
10684 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
10687
10688 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
10689
10690         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
10691         #76436.
10692         (mono_marshal_get_ldflda_wrapper): Fix a warning.
10693
10694 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10695
10696         * assembly.c metadata-internals.h icall.c: Define an additional
10697         parameter for mono_assembly_name_parse_full, so we can avoid creating
10698         S.R.AssemblyName.Version when no version info wasn't passed.
10699         
10700 2005-10-09  Miguel de Icaza  <miguel@novell.com>
10701
10702         * class.c (mono_type_get_full_name): Reimplement method that was
10703         removed. 
10704
10705         * image.c: Some docs
10706
10707 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * profiler.c (output_newobj_profile): Fix printing of Total memory
10710         on x86.
10711
10712 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10713
10714         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
10715
10716 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
10717
10718         * threads.c: remove debug output.
10719
10720 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10721
10722         * threads.c (mono_thread_manage): Fix crashes if more than 64
10723         threads need to be aborted. Hopefully fixes #75899.
10724
10725         * assembly.c (mono_stringify_assembly_name): New helper function.
10726
10727         * class.c: Use mono_stringify_assembly_name instead of the similar
10728         static function.
10729
10730         * assembly.h assembly.c: Add support for calling a postload search 
10731         hook if an assembly cannot be loaded.
10732
10733         * appdomain.c: Register new search hooks which call the AssemblyResolve
10734         events in AppDomain. Fixes #75231
10735
10736 2005-10-07  Martin Baulig  <martin@ximian.com>
10737
10738         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
10739         methods without debug info.
10740
10741 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10742
10743         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
10744         wrappers.
10745
10746 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10747
10748         * file-io.c: now that we return symlinks, use lstat and, when the file
10749         is a symbolic link, stat, to get the file attributes. Also avoid the
10750         conversion to/from utf16/external.
10751
10752 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
10753
10754         * class.c (mono_class_layout_fields): Compute klass->has_references
10755         correctly if an embedded valuetype is not yet initialized. Fixes
10756         #76331.
10757
10758 2005-10-04  Martin Baulig  <martin@ximian.com>
10759
10760         * metadata.c
10761         (mono_metadata_load_generic_param_constraints): New public
10762         function; splitted the constraints loading out from
10763         mono_metadata_load_generic_params().
10764
10765         * class.c (mono_class_create_from_typedef): Call
10766         mono_metadata_load_generic_param_constraints() after setting up
10767         the type and creating our parent; fixes #75329.
10768
10769 2005-10-04  Martin Baulig  <martin@ximian.com>
10770
10771         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
10772         non-dynamic parent classes.
10773
10774 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10775
10776         * file-io.c : win32 build fix (ETXTBSY seems not found).
10777
10778 2005-10-04  Martin Baulig  <martin@ximian.com>
10779
10780         * reflection.c
10781         (mono_image_get_methodspec_token): Make the cache actually work;
10782         fixes #75974.
10783
10784 2005-10-04  Martin Baulig  <martin@ximian.com>
10785
10786         * class.c (mono_class_name_from_token): Removed the unneccessary
10787         `MonoGenericContext *' argument.
10788
10789 2005-10-04  Martin Baulig  <martin@ximian.com>
10790
10791         * loader.c
10792         (method_from_methodspec): Make the caching work again; fixes the
10793         performance regression from #76262.
10794
10795 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10796
10797         * file-io.c:
10798         * file-io.h:
10799         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
10800         GetFileSystemEntries that performs the same work but without going
10801         into io-layer, locking, etc.
10802
10803 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
10806         ThreadState_Stopped as well. Fixes #76047.
10807
10808 2005-09-29  Martin Baulig  <martin@ximian.com>
10809
10810         * class.c
10811         (inflate_generic_context): If the new context has a `gmethod', set
10812         its `container' that that gmethod's `container'.
10813
10814         * metadata.c
10815         (mono_metadata_parse_generic_param): Simplify things;
10816         `generic_container = generic_context->container;' is just fine.
10817
10818         * loader.c (method_from_methodspec): Code cleanups.
10819
10820 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
10821
10822         * decimal.c: fix warning (and let gcc generate correct
10823         code on ARM with optimizations).
10824
10825 2005-09-28  Martin Baulig  <martin@ximian.com>
10826
10827         * loader.c
10828         (method_from_memberref): Added `MonoGenericContext *class_context'
10829         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
10830         (method_from_methodspec): If we're a memberref, use the enclosing
10831         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
10832
10833 2005-09-28  Martin Baulig  <martin@ximian.com>
10834
10835         * object.c (mono_runtime_invoke_array): Added support for
10836         MONO_TYPE_GENERICINST; fixes #75917.
10837
10838 2005-09-27  Martin Baulig  <martin@ximian.com>
10839
10840         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
10841         `k->byval_arg.type' to determine the actual type.
10842
10843         * loader.c (method_from_methodspec): Removed some hacks.
10844
10845 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10846
10847         * class-internals.h (mono_field_is_deleted): Do the test for
10848         rtspecialname before we check the actual name of the field. This
10849         prevents us from dereferencing a pointer into the string table,
10850         saving us from accessing a few pages
10851
10852         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10853         macros. This will allow a deadlock debugger to easily be plugged
10854         in.
10855
10856 2005-09-27  Martin Baulig  <martin@ximian.com>
10857
10858         * loader.c (method_from_methodspec): Create a "signature"
10859         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
10860
10861 2005-09-27  Martin Baulig  <martin@ximian.com>
10862
10863         * class.c
10864         (inflate_generic_class): Correctly set the new context's
10865         container.
10866
10867         * loader.c
10868         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
10869         instead of a `MonoGenericContext *'.
10870         (mono_method_signature_full): Take a `MonoGenericContainer *'
10871         instead of a `MonoGenericContext *'.
10872
10873         * metadata.c
10874         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
10875         instead of a `MonoGenericContext *'.
10876         (mono_metadata_parse_method_signature_full): Likewise.
10877
10878 2005-09-26  Martin Baulig  <martin@ximian.com>
10879
10880         * class.c
10881         (mono_class_from_generic_parameter): Set `klass->generic_container'
10882         (mono_class_from_generic_parameter): Likewise.
10883         (mono_bounded_array_class_get): We inherit the generic container
10884         from the element class.
10885
10886         * loader.c
10887         (find_method, find_method_in_class): Take a `MonoGenericContext *'
10888         argument rather than computing it here.
10889         (method_from_memberref): Correctly set the generic context before
10890         parsing the signature.  Fixes #75681.
10891
10892 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * object.c (mono_class_has_special_static_fields): Fix warnings.
10895
10896 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10897
10898         * assembly.c: Add parse_public_key function, to
10899         par the public keys. Also added mono_assembly_name_parse_full,
10900         to define it the parsed key should be freed or not.
10901         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
10902         to parse a long format assembly name.
10903         * metadata-internals.h: Keep mono_assembly_name_parse_full as
10904         private, since calling it to preserve the key requires
10905         freeing it manually.
10906         
10907 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
10908
10909         * locales.c : removed HAVE_ICU part.
10910
10911 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10912
10913         * object.c (mono_class_create_runtime_vtable): Avoid calling 
10914         field_is_special_static if the klass has no special static fields.
10915
10916         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
10917         (MonoCachedClassInfo): Likewise.
10918
10919         * object.c (mono_class_has_special_static_fields): New helper function.
10920
10921 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10922
10923         * class.c (mono_class_create_from_typedef): Don't call 
10924         interfaces_from_typedef_full for enums.
10925         (mono_class_create_from_typedef): Compute the base types of enums directly
10926         without calling mono_class_setup_fields ().
10927         (mono_class_find_enum_basetype): New helper function.
10928
10929         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
10930         one place inside the string heap.
10931         
10932 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
10933
10934         * class.c: locking fixes, code cleanups, some docs added.
10935         Allocate some data structures in the image mempool.
10936
10937 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10940         the example code.
10941         
10942 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
10943
10944         * class-internals.h, class.c, reflection.c: reduce memory taken by
10945         MonoClass.
10946
10947 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
10948
10949         * metadata.c, metadata.h, loader.h: documentation updates, code and
10950         API cleanups.
10951
10952 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10953
10954         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10955         the example code.
10956
10957         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
10958         page faults caused by the runtime while reading metadata.
10959
10960 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10961
10962         * socket-io.c: the field names were changed 3 months ago and no one
10963         realized until bug #76077 got filed!
10964
10965 2005-09-20  Martin Baulig  <martin@ximian.com>
10966
10967         * icall.c (assembly_icalls): Removed some unused debugger icalls.
10968
10969 2005-09-20  Martin Baulig  <martin@ximian.com>
10970
10971         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
10972         write the rank into the class entry.
10973
10974 2005-09-20  Martin Baulig  <martin@ximian.com>
10975
10976         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
10977
10978 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10981
10982         * icall.c (custom_attrs_defined_internal): New icall.
10983
10984         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
10985         function.
10986         (mono_custom_attrs_construct_by_type): New helper function.
10987
10988 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
10989
10990         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
10991         terminate the resulting string. Fixes #76123.
10992
10993 2005-09-16  Martin Baulig  <martin@ximian.com>
10994
10995         * mono-debug.c
10996         (mono_debug_add_method): Ignore inflated methods for the moment.
10997
10998 2005-09-14  Martin Baulig  <martin@ximian.com>
10999
11000         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
11001
11002 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
11003
11004         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
11005         return a success/failure indication.
11006         (mono_metadata_interfaces_from_typedef_full): Ditto.
11007         (get_constraints): Ditto.
11008
11009 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * marshal.c (emit_marshal_array): Fix handling of null arrays.
11012         
11013         * marshal.c (emit_marshal_array): Add support for returning string
11014         arrays from delegates. Fixes #76063.
11015
11016         * marshal.c: Use the emit_ldloc/stloc macros where possible.
11017
11018 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
11021         icall.
11022
11023 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11024
11025         * reflection.c icall.c: Fix after mono_get_exception_type_load
11026         signature change.
11027
11028         * assembly.c (mono_assembly_get_assemblyref): New helper function.
11029         (mono_assembly_load_reference): Use the new helper.
11030
11031         * class-internals.h (MonoLoaderError): New structure containing 
11032         information about type loading errors.
11033
11034         * class-internals.h loader.c: Add APIs to store per-thread loader
11035         error information.
11036
11037         * loader.c class.c: Set the loader error if needed.
11038
11039         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
11040
11041 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
11042
11043         * decimal.c: fixed to handle the broken ARM fp format.
11044
11045 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
11046
11047         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
11048         broken.
11049
11050 2005-09-06  Martin Baulig  <martin@ximian.com>
11051
11052         * domain.c (supported_runtimes): Added v2.0.50727.
11053
11054 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
11055
11056         * culture-info.h: reduce the size of some structures.
11057
11058 2005-09-05  Martin Baulig  <martin@ximian.com>
11059
11060         Reflect latest API changes in the August CTP.
11061
11062         * icall.c
11063         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
11064         ("MonoType.HasGenericArguments"): Removed.
11065         ("MonoMethod.BindGenericParameters"): Renamed to
11066         "MakeGenericMethod".
11067         ("MethodBuilder.BindGenericParameters"): Renamed to
11068         "MakeGenericMethod".    
11069
11070 2005-09-05  Martin Baulig  <martin@ximian.com>
11071
11072         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
11073
11074 2005-09-05  Martin Baulig  <martin@ximian.com>
11075
11076         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11077
11078         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
11079         generic_container is non-NULL.
11080
11081 2005-09-05  Martin Baulig  <martin@ximian.com>
11082
11083         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11084
11085         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
11086
11087 2005-08-29  Michal Moskal  <malekith@nemerle.org>
11088
11089         * reflection.c (encode_locals,
11090         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
11091         for large generic types.
11092
11093 2005-09-05  Martin Baulig  <martin@ximian.com>
11094
11095         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11096
11097         * class.c (mono_dup_array_type): New public method.
11098         (mono_metadata_signature_deep_dup): New public method.
11099         (dup_type): Correctly duplicate array and function types.
11100
11101 2005-09-05  Martin Baulig  <martin@ximian.com>
11102
11103         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11104
11105         * reflection.c (get_default_param_value_blobs): Handle generic types
11106         and generic methods.
11107
11108 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
11109
11110         * class.c: Fixed error reporting (method/class were inversed) for 
11111         inheritance demands.
11112         * security-manager.c|h: Added the AppDomain when calling the managed
11113         System.Security.SecurityManager.InheritanceDemand method.
11114
11115 2005-09-01  Raja R Harinath  <rharinath@novell.com>
11116
11117         * reflection.c (encode_marshal_blob): 'marshaltype' and
11118         'marshaltyperef' are alternate sources for the custom marshaler
11119         name.
11120
11121 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
11122
11123         * class.c: fix creation of array classes with rank == 1
11124         (patch by Ankit Jain <jankit@novell.com>).
11125
11126 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
11127
11128         * object.c: fix check for creating the bound data for arrays vs
11129         szarrays.
11130
11131 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11132
11133         * object.c: configuration file name is now based on the executable name,
11134         not the image name. Fixes bug #75931.
11135
11136 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
11139         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
11140
11141 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11142
11143         * rand.c: Use wincrypt.h instead of WinCrypt.h.
11144
11145 2005-08-24  Ankit Jain  <jankit@novell.com>
11146             Raja R Harinath  <rharinath@novell.com>
11147
11148         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
11149           called by it recursively.
11150           (mono_class_init): Remove special case in pending_init handling, since it's
11151           superseded by the fix to mono_class_from_typeref.
11152
11153 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11154
11155         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
11156         BROKEN_THREAD_START stuff.
11157
11158 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11159
11160         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
11161         trampoline.
11162
11163         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
11164         
11165         * object.c (mono_delegate_ctor): Replace the original function address with
11166         a delegate trampoline.
11167
11168 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
11169
11170         * icall.c: add boolean argument to base64_to_byte_array and 
11171         InternalFromBase64String to control whether a whitespace-only string
11172         is allowed (or should casue a FormatException to be thrown). We need
11173         this as the behavior has changed between MS.NET 1.x and 2.0, and we
11174         to match the MS behaviour in both profiles.
11175         * appdomain.c: Bump corlib version.
11176
11177 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11178
11179         This patch implements a big portion of publisher policy
11180         support, used to bind assembly versions and redirect
11181         one assembly from version A to version B.
11182
11183         * assembly.c:
11184         New GSList loaded_assembly_bindings, for storing the cached
11185         assembly bindings.
11186         (assembly_binding_maps_name): New static function for checking if a 
11187         assembly binding information maps an assembly name.
11188         (mono_assembly_binding_info_free): New function for freeing
11189         assembly binding information resources.
11190         (get_publisher_policy_info): New static function for retrieving 
11191         assembly binding information from a MonoImage.
11192         (compare_versions): New static function for comparing an assembly
11193         binding information data and the version of an assembly name.
11194         (check_policy_versions): New static function for checking if an
11195         assembly binding info mapping an assembly name is valid for it.
11196         (mono_assembly_load_publisher_policy): New static function for
11197         loading the 'policy.major.minor.MyAssembly' image for an assembly
11198         with an assembly name 'aname'.
11199         (mono_assembly_bind_version): New static function for updating
11200         assembly redirection.
11201         (mono_assembly_apply_binding): New static function for applying
11202         assembly binding.
11203         (search_binding_loaded): New static function for searching 
11204         loaded assembly binding infos in the cache domain.
11205         (mono_assembly_load_full): Don't apply assembly binding for
11206         reflection only assemblies.
11207
11208         * metadata-internals.h: Add MonoAssemblyBindingInfo,
11209         which contains information about assembly binding. Also
11210         declare signature for mono_config_parse_publisher_policy ()
11211         function, used to retrieve pub policy info.
11212         
11213         * mono-config.c:
11214         (publisher_policy_start): New static function used to parse publisher 
11215         policy config files.
11216         (publisher_policy_parser): New static MonoParseHandler containing 
11217         the functions used when parsing config files.
11218         (mono_config_parse_publisher_policy): New function for parsing
11219         publisher policy files.
11220         
11221 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11222
11223         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
11224
11225         * marshal.c (mono_delegate_free_ftnptr): Ditto.
11226
11227         * object.c (mono_get_addr_from_ftnptr): New helper function.
11228
11229         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
11230
11231         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11232
11233 2005-08-19  Dick Porter  <dick@ximian.com>
11234
11235         * threads.c, threads.h, appdomain.c, appdomain.h,
11236         profiler-private.h, monitor.c, object.c, object-internals.h,
11237         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
11238         store the thread ID, so it can hold a 64 bit value if needed.
11239
11240 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11241
11242         * reflection.c (mono_reflection_create_dynamic_method): Store the
11243         handle class into the method references as well so ldtoken works in
11244         dynamic methods.
11245
11246         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
11247         types.
11248
11249 2005-08-19  Ankit Jain <jankit@novell.com>
11250
11251         Fix #75847.
11252         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
11253           here rather than using the method signature of a arbitrary function
11254           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
11255           two arguments.
11256           Hack done with Harinath.
11257
11258 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11259
11260         * threadpool.c: disable printing stack traces when we get a exception
11261         in a threadpool thread. I need to do more testing to figure out which
11262         cases actually print this. Fixes bug #75828.
11263
11264 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11265
11266         * icall.c: there might be ignored whitespace after the last '='. This
11267         fixes length computation and bug #75840.
11268
11269 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
11270
11271         * assembly.c (mono_assembly_load_full): Consider .exe extension as
11272         well. Fixes #75809.
11273
11274         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
11275         #75784.
11276         
11277         * reflection.c (create_custom_attr_data): Ditto.
11278
11279 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
11280
11281         * locales.c, culture-info.h : removed RegionLCIDMap.
11282         * culture-info-tables.h : regenerated.
11283
11284 2005-08-16  Martin Baulig  <martin@ximian.com>
11285
11286         * class.c (mono_type_get_name_recurse): Small fix.
11287
11288 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
11289
11290         * locales.c : indentation fixie.
11291
11292 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
11293
11294         * object-internals.h,
11295           locales.h,
11296           locales.c,
11297           culture-info.h,
11298           icall.c : added RegionInfo table support.
11299         * culture-info-table.h : regenerated for region support.
11300
11301 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
11302
11303         * reflection.c (resolve_object): handle all kinds of MonoMethod
11304         including generic ones
11305
11306 2005-08-12  Ankit Jain <jankit@novell.com>
11307
11308         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
11309           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
11310
11311 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
11312
11313         * process.c: Don't close a thread handle when it's NULL. This is a
11314         workaround for bug #75733.
11315
11316 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11317
11318         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
11319
11320 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
11321
11322         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
11323
11324 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11325
11326         * threadpool.c: if a work item in the thread pool has a callback that
11327         catches a exception, don't propagate it after invoking the callback.
11328         Fixes bug #75336.
11329
11330 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11331
11332         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
11333
11334         * class-internals.h (MonoCachedClassInfo): Add some new fields.
11335
11336         * class.c (mono_class_init): Load field info lazily in the AOT case.    
11337
11338         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
11339
11340 2005-08-03  Ankit Jain  <jankit@novell.com>
11341
11342         Fix #75683.
11343         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
11344           PInvoke calling convention is 0.
11345
11346 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
11347
11348         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
11349         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
11350
11351 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
11352
11353         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
11354         to handle threads not started by the GC (patch by Michael Meeks
11355         <michael.meeks@novell.com>).
11356
11357 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
11358
11359         * reflection.c: Make buffer used in emitting types larger for some
11360         big generic types (patch by Michal Moskal).
11361
11362 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11363
11364         * mono-debug.c: Fix some (not all) alignment problems.
11365
11366 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11367
11368         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
11369         Invoke mono_image_load_from_data_full passing the refonly
11370         parameter.
11371
11372         * assembly.c
11373         (mono_assembly_open_from_bundle): Add the refonly argument, 
11374         in order to pass it to other methods it calls to.
11375         (do_mono_assembly_open): Add the refonly argument, in order 
11376         to pass it to other methods it calls to.
11377         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
11378         the refonly parameter to it.
11379
11380         * image.c: Add loaded_images_refonly_hash and
11381         loaded_images_refonly_guid_hash to cache the reflection
11382         only loaded images.
11383         (mono_images_init): Initialize the hash tables used for
11384         caching the reflection only images.
11385         (load_modules): Invoke mono_image_open_full passing the refonly
11386         parameter to load the modules the correct way.
11387         (build_guid_table): Add the refonly argument, to re-build the 
11388         correct hash table.
11389         (do_mono_image_open): Added the refonly argument, in order to
11390         define it for the loaded image.
11391         (mono_image_loaded_full): New function, which receives an
11392         additional parameter to look for the image in the refonly or
11393         non-refonly section.
11394         (mono_image_loaded): Updated, using mono_image_loaded_full.
11395         (mono_image_loaded_by_guid_full): The same case that happens
11396         with mono_image_loaded_full.
11397         (mono_image_loaded_by_guid): Likewise.
11398         (register_image): Use the ref_only variable inside MonoImage
11399         to decide in which hash table store the current image.
11400         (mono_image_open_from_data_full): Rename
11401         mono_image_open_from_data to mono_image_open_from_data_full,
11402         adding the refonly argument, to define the ref_only variable 
11403         inside MonoImage.
11404         (mono_image_open_from_data): Return 
11405         mono_image_open_from_data_full.
11406         (mono_image_open_full): Rename mono_image_open to
11407         mono_image_open_full, receiving the new refonly argument,
11408         to pass it to inner methods.
11409         (mono_pe_file_open): Update this function, to open
11410         a MonoImage as a non-refonly image.
11411         (mono_image_close): Use the refonly variable inside
11412         MonoImage to remove the image from the correct caches.
11413
11414         * image.h: Add the signatures of mono_image_open_full,
11415         mono_image_open_from_data_full, mono_image_loaded_full,
11416         mono_image_loaded_by_guid_full.
11417
11418         * metadata-internals.h: Add the ref_only field to 
11419         MonoImage.
11420         
11421 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11422
11423         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
11424         Fix the last behavior, which used to load the assemblies and
11425         extract MonoReflectionAssemblyName information, instead of
11426         extract it from the metadata tables. Needed for Reflection
11427         Only assemblies.
11428         
11429 2005-07-29  Martin Baulig  <martin@ximian.com>
11430
11431         * mono-debug-debugger.c
11432         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
11433         not initialized.
11434
11435         * mono-debug.c
11436         (mono_debug_address_from_il_offset): Check whether we have
11437         debugging support before attempting to take the lock.
11438         (mono_debug_source_location_from_address): Likewise.
11439         (mono_debug_source_location_from_il_offset): Likewise.
11440         (mono_debug_il_offset_from_address): Likewise.
11441         (mono_debug_address_from_il_offset): Likewise.
11442
11443 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
11444
11445         * class.c (mono_class_from_name_case): Add support for dynamic images.
11446         Fixes #75650.
11447
11448         * object.c (mono_class_compute_gc_descriptor): Add a workaround
11449         for #75479.
11450
11451 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11452         
11453         * reflection.c (mono_method_get_object): Fix warning.
11454
11455 2005-07-28  Martin Baulig  <martin@ximian.com>
11456
11457         * mono-debug.c
11458         (mono_debug_add_wrapper): Also write the wrapper type.
11459
11460 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11461
11462         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
11463         
11464         * class.c (mono_class_init): Avoid reading nested classes if the AOT
11465         data indicates the class has none.
11466
11467 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
11468
11469         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
11470         loader lock with the debugger lock. Prevents deadlocks for beagle.
11471
11472         Beagle can now run on an smp box for a weekend without any
11473         issues. Woohoo!
11474
11475 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
11476
11477         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
11478         in a module. Fixes #75629.
11479
11480 2005-07-26  Martin Baulig  <martin@ximian.com>
11481
11482         * mono-debug.c (mono_debug_add_wrapper): New static method.
11483         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
11484         interncall or a wrapper.
11485
11486         * mono-debug.h (MonoDebugWrapperData): New public typedef.
11487         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
11488         (MONO_DEBUGGER_VERSION): Bump to 51.
11489
11490         * mono-debug-debugger.c
11491         (mono_debugger_add_type): Removed this empty function.
11492         (mono_debugger_add_method): Likewise.
11493
11494 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11495
11496         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
11497         before accessing method->slot.
11498
11499 2005-07-21  Jb Evain  <jbevain@gmail.com>
11500
11501         * reflection.c (method_encode_clauses/class): Handle filters clauses.
11502         Fixes #75010.
11503
11504 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11505
11506         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
11507         #75587.
11508
11509 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11510
11511         * image.h image.c: Add mono_image_get_guid () API function.
11512
11513 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
11514
11515         There were issues when multiple threads tried to load
11516         assemblies. A deadlock was created between assemblies_mutex and
11517         mono_domain_assemblies_lock. This fixes the issue by making the
11518         assembly ref counting be lock free. See bug 75586.
11519         
11520         * image.c (mono_image_close): The add ref function here was using
11521         Interlocked operations while the unref was using a mutex and a
11522         --. I don't think this was ever a bug that would be exposed in a
11523         non-pendantic way (ie, by an embedder doing a ref on one thread
11524         and an unref on another), but for the sake of correctness, this is
11525         now Interlocked.
11526
11527         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
11528         (mono_assembly_load_reference): Call mono_assembly_addref rather
11529         than touching the refcount ourselves.
11530         (mono_assembly_close): Use InterlockedDecrement to unref the
11531         assembly. Don't acquire the lock unless it is actually needed.
11532
11533 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11534
11535         * class.c (mono_class_layout_fields): Fix calculation of has_references
11536         for generic types.
11537
11538 2005-07-12  Martin Baulig  <martin@ximian.com>
11539
11540         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11541
11542         * metadata.c
11543         (mono_type_hash): Provide better hashing for generic instances.
11544         (mono_generic_inst_hash): Improve hashing.
11545         (mono_generic_class_hash): Likewise.
11546
11547         * reflection.c (mymono_metadata_type_hash): Improve hashing for
11548         generic instances.
11549
11550 2005-07-12  Martin Baulig  <martin@ximian.com>
11551
11552         * reflection.c (mono_reflection_create_runtime_class): Remove the
11553         hack for generic type definitions and non-`Run' assemblies.
11554         (mono_reflection_bind_generic_parameters): Also use
11555         `klass->wastypebuilder' to check for TypeBuilders.
11556
11557 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11558
11559         * class.c (mono_class_layout_fields): Fix calculation of has_references
11560         for generic types.
11561
11562         * class.c (inflate_generic_class): Fix a leak.
11563         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
11564         for generic types.
11565
11566 2005-07-11  Martin Baulig  <martin@ximian.com>
11567
11568         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
11569         on error.
11570
11571 2005-07-11  Martin Baulig  <martin@ximian.com>
11572
11573         * loader.c (find_method): Also lookup in
11574         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
11575
11576 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11577
11578         * appdomain.c (mono_domain_unload): Don't free the error message
11579         before passing it to mono_get_exception_...
11580
11581         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
11582         
11583 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
11584
11585         * threads.c: try to better guess an available RT signal (bug #75387).
11586
11587 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11588
11589         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
11590         and CACHE_OBJECT.
11591
11592 2005-07-07  Martin Baulig  <martin@ximian.com>
11593
11594         * class.c (mono_type_get_name_full): Return NULL for
11595         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
11596         fixes #75408.
11597
11598 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11599
11600         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
11601         exit the appdomain as well being aborted.
11602
11603         * threadpool.c: Create all threadpool threads inside the root appdomain, and
11604         change back to the root domain after calling managed code. This enables
11605         appdomains using threadpools to be unloaded.
11606
11607 2005-07-07  Martin Baulig  <martin@ximian.com>
11608
11609         * class-internals.h
11610         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
11611         into `MonoDynamicGenericClass' since we only need it for dynamic
11612         types.
11613
11614         * reflection.c (mono_class_bind_generic_parameters): We don't need
11615         to compute the `parent' here.
11616
11617 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
11618
11619         * culture-info-table.h : regenerated.
11620
11621 2005-07-06  Martin Baulig  <martin@ximian.com>
11622
11623         * icall.c
11624         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
11625
11626         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
11627
11628 2005-07-06  Martin Baulig  <martin@ximian.com>
11629
11630         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
11631         we're doing a signature-only comparision; fixes #74945.
11632
11633 2005-07-06  Martin Baulig  <martin@ximian.com>
11634
11635         * class-internals.h (MonoGenericClass): Moved some things out into
11636         a new `MonoInflatedGenericClass' type.  
11637         (MonoInflatedGenericClass): New type; the `klass' of a
11638         `MonoGenericClass' is now computed lazyly in
11639         mono_get_inflated_generic_class().      
11640
11641         * class.c (mono_get_inflated_generic_class): New public function.
11642         (mono_class_inflate_generic_method): Removed the unused
11643         `MonoClass *' argument.
11644         (setup_generic_vtable): Don't call mono_get_inflated_method() on
11645         all the methods.
11646         (mono_class_create_generic): Make this static and merge it with
11647         mono_class_create_generic_2(); we're now called automatically from
11648         mono_get_inflated_generic_class().
11649
11650         * loader.c (mono_method_signature): Call
11651         mono_get_inflated_method() here.
11652
11653 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
11654
11655         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
11656         type of fields with RVA.
11657
11658         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
11659         for this pseudo class.
11660         (my_mono_class_from_generic_parameter): Likewise.
11661         (mono_class_init): Allow interfaces to have cctors.
11662
11663 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11664
11665         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
11666         lazily for AOT methods.
11667
11668 2005-07-05  Martin Baulig  <martin@ximian.com>
11669
11670         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
11671         returns FALSE for a successful match, not TRUE.
11672
11673 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11674
11675         * loader.c (mono_method_get_index): Optimize this a bit.
11676
11677 2005-07-04  Martin Baulig  <martin@ximian.com>
11678
11679         * class.c
11680         (class_compute_field_layout): Move the check for generic type
11681         definitions into mono_class_layout_fields().  Fixes #74684.
11682         (mono_class_from_generic_parameter): Correctly compute
11683         `klass->parent'; fixes #75457.
11684
11685         * reflection.c (register_assembly, register_module): Make sure
11686         `domain->rejobject_hash' is already created.
11687
11688 2005-07-02  Martin Baulig  <martin@ximian.com>
11689
11690         * class-internals.h
11691         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
11692         `MonoDynamicGenericClass'.      
11693
11694 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
11695
11696         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
11697         returned by a field getter is null, since null is a valid value.
11698
11699 2005-07-01  Martin Baulig  <martin@ximian.com>
11700
11701         * reflection.c (mono_reflection_generic_class_initialize): Update
11702         the `dgclass->fields [i].parent' to the correct class.
11703         (mono_image_get_fieldref_token): Use the declaring type, not the
11704         reflected type.
11705
11706 2005-07-01  Martin Baulig  <martin@ximian.com>
11707
11708         * loader.c (find_method): Also look in the interfaces; fixes #75429.
11709
11710 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
11711
11712         * threads.c (thread_cleanup): assert that thread != NULL
11713         (wait_for_tids_or_state_change): We were using the wrong variable
11714         when accessing wait->threads. `i' was always out of the bounds of
11715         the array.
11716
11717 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11718
11719         * loader.c: map user32 and kernel32 to libMonoSupportW
11720
11721 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11722
11723         * appdomain.c (unload_thread_main): Mark this as WINAPI.
11724
11725 2005-06-28  Martin Baulig  <martin@ximian.com>
11726
11727         * loader.c (method_from_methodspec): Fix #75334.
11728
11729 2005-06-28  Martin Baulig  <martin@ximian.com>
11730
11731         Fix #74953 - Arrays now implement the generic IList<T> interface
11732         on the 2.0 platform.
11733
11734         * class-internals.h (MonoDefaults): Added `generic_array_class'.
11735
11736         * reflection.c (mono_class_bind_generic_parameters): New public
11737         function; similar to mono_reflection_bind_generic_parameters(),
11738         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
11739
11740         * domain.c (mono_init_internal): Try to initialize.
11741         `mono_defaults.generic_array_class' here; this'll only succeed if
11742         we're using the 2.0 corlib.
11743
11744         * icall.c
11745         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
11746         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
11747         (mono_lookup_internal_call): Added support for nested classes.
11748
11749         * loader.c
11750         (mono_get_method_from_token): Set `result->signature->pinvoke' if
11751         we're an interncall and have generic arguments.
11752
11753         * class.c
11754         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
11755         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
11756         instance of System.Array.InternalArray<T> for arrays, so they
11757         implement the generic IList<T> interface.
11758
11759 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
11760
11761         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
11762         (chastamar@yahoo.com). Fixes #75374.    
11763
11764 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
11765
11766         * culture-info-table.h: regenerated.
11767
11768 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11769
11770         * icall.c: handle spaces correctly for base64 strings.
11771
11772 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11773
11774         * *.c: Kill some warnings.
11775
11776 2005-06-23  Duncan Mak  <duncan@novell.com>
11777
11778         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
11779         that this builds on Solaris 10 (x86).
11780
11781 2005-06-23  Martin Baulig  <martin@ximian.com>
11782
11783         * class.c
11784         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
11785         generic type definitions.
11786
11787 2005-06-23  Martin Baulig  <martin@ximian.com>
11788
11789         Fix #75331.
11790
11791         * metadata.c (mono_class_get_overrides): Renamed to
11792         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
11793         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
11794         pass it to mono_get_method_full().
11795
11796 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
11797
11798         * reflection.c (mono_reflection_create_runtime_class): take the
11799         mono_domain_lock in this method. Prevents deadlocks
11800
11801 2005-06-22  Martin Baulig  <martin@ximian.com>
11802
11803         * loader.c (method_from_methodspec): Fix #75330.
11804
11805 2005-06-22  Martin Baulig  <martin@ximian.com>
11806
11807         * reflection.c (type_get_qualified_name): Use
11808         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
11809         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
11810         argument; use it if we don't have an assembly name.
11811
11812 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
11813
11814         * object.c: In mono_message_init, set "copy out" flag for in
11815         parameters with the [Out] flag.
11816
11817 2005-06-21  Martin Baulig  <martin@ximian.com>
11818
11819         * class.c
11820         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
11821         and MONO_TYPE_PTR.
11822
11823 2005-06-21  Martin Baulig  <martin@ximian.com>
11824
11825         * class.c (mono_class_init): Don't initialize `class->fields' for
11826         generic instances since they're initialized again in
11827         compute_field_layout(). 
11828         (compute_field_layout): Set the field's `generic_info' here; fix
11829         #75320. 
11830
11831 2005-06-21  Martin Baulig  <martin@ximian.com>
11832
11833         * class-internals.h
11834         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
11835
11836         * metadata.c (mono_metadata_generic_method_equal): Also
11837         distinguish the `generic_class'; fixes #75334.
11838
11839 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11840
11841         * domain.c:
11842         * appdomain.c:
11843         * domain-internals.h:
11844         * reflection.c: 'domain_assemblies' field is now protected by its own
11845         lock. Don't call into managed code to run the AssemblyLoad event if we
11846         now there are no registered delegates for it.
11847
11848 2005-06-20  Martin Baulig  <martin@ximian.com>
11849
11850         * class.c (mono_class_is_assignable_from): Use a custom version of
11851         mono_class_has_parent() to make things work for generic instances;
11852         fix #75300.
11853
11854 2005-06-20  Martin Baulig  <martin@ximian.com>
11855
11856         * loader.c (method_from_methodspec): Apply a patch from
11857         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
11858
11859 2005-06-20  Martin Baulig  <martin@ximian.com>
11860
11861         * class.c (mono_class_init): Reverted Zoltan's last change; it
11862         breaks generics.
11863
11864 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11865
11866         * threads.c (wait_for_tids_or_state_change): Add missing locking.
11867
11868 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11869
11870         * socket-io.c: fix the index in the socket array for writable/error
11871         sockets. Fixes bug #75306.
11872
11873 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11874
11875         * class.c (mono_class_init): Allow interfaces to have static ctors.
11876
11877 2005-06-17  Martin Baulig  <martin@ximian.com>
11878
11879         * loader.c (method_from_methodspec): Use `context->container' when
11880         parsing the `gmethod->inst'.
11881
11882 2005-06-17  Martin Baulig  <martin@ximian.com>
11883
11884         * class.c (mono_type_get_name_recurse): Don't add the assembly
11885         name for type arguments.
11886
11887 2005-06-15  Martin Baulig  <martin@ximian.com>
11888
11889         * reflection.c (mono_image_get_inflated_method_token): Encode
11890         correct klass; fixes #75260.
11891
11892 2005-06-13 Michal Moskal <malekith@nemerle.org>
11893
11894         * icall.c: Make GetCorrespondingMethod/Constructor take
11895         MonoReflectionMethod method not MonoMethod. Removed
11896         MonoType.GetCorrespondingField, and make
11897         MonoGenericType.GetCorrespondingField take name not
11898         MonoClassField.
11899
11900 2005-06-13  Michal Moskal <malekith@nemerle.org>
11901
11902         * reflection.c (field_encode_signature, encode_locals):
11903          Make sizes of buffers for types larger (for big generic types).
11904          (create_generic_typespec,
11905          mono_reflection_sighelper_get_signature_local,
11906          mono_reflection_sighelper_get_signature_field):
11907          Add asserts for too small buffers.
11908
11909 2005-06-15  Martin Baulig  <martin@ximian.com>
11910
11911         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
11912         if our parent is not a dynamic type.
11913
11914 2005-06-15  Martin Baulig  <martin@ximian.com>
11915
11916         * class-internals.h (MonoTypeNameFormat): New enum.
11917
11918         * class.c
11919         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
11920         (mono_type_get_full_name): Removed.
11921         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
11922         argument instead of the boolean's.
11923
11924         * icall.c (ves_icall_System_MonoType_getFullName):
11925         Added `gboolean assembly_qualified'.    
11926
11927         * reflection.h
11928         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
11929
11930         * reflection.c (mono_reflection_parse_type): Parse the new type
11931         name format.
11932
11933 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11934
11935         * icall.c: no need to convert from utf16 to utf8 and then back again
11936         after the call to GetLogicalDrives.
11937
11938 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11939
11940         * icall.c: frombase64. Fix problems exposed by new tests.
11941
11942 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11943
11944         * icall.c: added internal calls for converting char [] and strings in
11945         base64 into byte [].
11946
11947 2005-06-10  Martin Baulig  <martin@ximian.com>
11948
11949         * class.c (mono_class_create_generic_2): Read the nested classes
11950         from the metadata rather than from `gklass->nested_classes' since
11951         `gklass' might not be initialized yet.
11952
11953 2005-06-09  Duncan Mak  <duncan@novell.com>
11954
11955         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
11956         all public headers. Fixes #74919.
11957
11958 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
11959
11960         * domain.c: The key for proxy_vtable_hash is now a pointer
11961         array. Added new GHashFunc and GCompareFunc functions for this.
11962
11963         * class.h: The list of interfaces in MonoRemoteClass is known in
11964         advance and can't grow (we create a new MonoRemoteClass if needed),
11965         so now the interface array can be allocated together with
11966         MonoRemoteClass.
11967         
11968         * object.c: Added a new method create_remote_class_key.
11969         Fixed mono_remote_class so it does not depend on
11970         mono_upgrade_remote_class.
11971         Removed extend_interface_array.
11972         Added new method clone_remote_class(), which makes a copy of a remote
11973         class and adds a new interface or class to it.
11974         mono_upgrade_remote_class() now creates a new remote class (or gets
11975         it from the cache) if an vtable upgrade is needed. In this way
11976         we make sure that other objects sharing the same remote class
11977         don't get the new vtable with unwanted interfaces.
11978         
11979         * object-internals.h:
11980         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
11981         
11982         * marshal.c: Track changes in mono_upgrade_remote_class().
11983
11984 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
11985         * icall.c: Add runtime methods for obtaining members of inflated
11986         class, which were created from supplied non-inflated members. It
11987         is used in internal Get{Method,Constructor,Field} methods in
11988         System.Type
11989
11990 2005-06-09  Martin Baulig  <martin@ximian.com>
11991
11992         * reflection.c
11993         (mono_reflection_bind_generic_method_parameters): Fix #75169.
11994
11995 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11996         * reflection.c (mono_image_basic_init): Define
11997         Version in MonoDynamicAssembly. 
11998         
11999 2005-06-08  Martin Baulig  <martin@ximian.com>
12000
12001         Fix #75136.
12002
12003         * loader.c
12004         (mono_method_signature_full): New public method; takes a
12005         `MonoGenericContext *'.
12006         (find_method): Use mono_method_signature_full() and pass the
12007         klass'es context to it.
12008
12009         * class.c (mono_class_is_inflated_method): Use
12010         mono_method_signature_full() and pass the context to it.
12011
12012 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
12013
12014         * object.c: add proper locking in mono_remote_class_vtable(),
12015         fixes possible memory corruption.
12016
12017 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
12018
12019         * marshal.c (mono_remoting_marshal_init): set
12020         initialized after initialization.
12021
12022 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
12023
12024         * locales.c : hush.
12025
12026 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
12027
12028         * object.c (extend_interface_array): fix really silly
12029         memory corrupting / comparison bug.
12030
12031 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12032
12033         * reflection.c: Functions added to support the creation
12034         of CustomAttributeData, which includes Attribute data
12035         used by ReflectionOnly methods.
12036
12037         * reflection.h:  mono_reflection_get_custom_attrs_data and
12038          mono_custom_attrs_data_construct added (functions exposed).
12039
12040          * icall.c: Added mono_reflection_get_custom_attrs_data
12041          as icall.
12042         
12043 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
12044
12045         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
12046         lupus's request.
12047
12048 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
12049
12050         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
12051
12052         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
12053         dynamic DllImportAttribute.
12054
12055         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
12056         dynamic DllImportAttribute.
12057
12058         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
12059         Fixes #75162.
12060
12061 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12062
12063         * threads.c: avoid segfault when an unstarted thread is aborted.
12064
12065 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
12066
12067         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
12068         Returns the name and version of the runtime for reporting.
12069
12070 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12071
12072         * appdomain.c: bump corlib version.
12073         * object-internals.h: new field in MonoReflectionAssembly.
12074
12075 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12076
12077         * object-internals.h: Carlos forgot to add this field.
12078
12079 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12080
12081         * icall.c: Added create_version to create instances
12082         of Version of MonoReflectionAssemblyName. This change helps
12083         the AssemblyName tests to keep running fine.
12084         
12085 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
12086   
12087         * object.c (mono_method_return_message_restore): A somehow less
12088         intrusive fix for #75138.
12089
12090 2005-06-03  Raja R Harinath  <rharinath@novell.com>
12091
12092         * object.c (mono_method_return_message_restore): Fix computation
12093         of expected number of out args.
12094
12095 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12096
12097         * reflection.c (mono_image_get_method_info): Fix the case when the
12098         charset is empty.
12099
12100 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
12101
12102         * object.c: Added missing null check in
12103           mono_method_return_message_restore.
12104
12105 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12106
12107         * reflection.c (mono_image_get_method_info): Handle the case when
12108         dllentry is empty.
12109
12110 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
12111
12112         * object.c: When creating the vtable for a proxy, take into account
12113         all inherited interfaces, not only the ones registered in
12114         iclass->interfaces. This fixs bug #74996.
12115         Also, in mono_method_return_message_restore, verify that the array
12116         of out args has the expected lengh.
12117
12118 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12119
12120         * socket-io.c: update the timeout in Poll when the call is interrupte.
12121
12122 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12123
12124         * socket-io.c: support abort/suspend in Select_internal after last
12125         change.
12126
12127 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12128
12129         * threadpool.c: remove warning.
12130
12131 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12132
12133         * icall.c:
12134         * socket-io.[ch]: Select_internal uses poll() now when available, thus
12135         removing the 1024 limit from select(). Runtime part of the fix for
12136         bug #71203.
12137
12138 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12139
12140         * socket-io.c: when resolving the addresses for the same
12141         host returned by gethostname(), get the local IPs from the interface
12142         list. Loopback addresses are discarded if the are interfaces up with
12143         non-loopback ones. Fixes bug #63265.
12144
12145 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
12146
12147         * appdomain.c, verify.c, object-internals.h, reflection.c:
12148         bumped corlib number to 36, and added new extra_flags field
12149         to ReflectionMethodBuilder and friends.  Fixes #75060.
12150
12151 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
12152
12153         * gc.c: register a new weak link only if the object is non-null
12154         (fixes bug#75047).
12155
12156 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12157
12158         * culture-info.h : short time pattern too.
12159
12160 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12161
12162         * culture-info.h : expand long time pattern string length.
12163
12164 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12165
12166         * culture-info-table.h : update (more French date format; #72788).
12167
12168 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
12169
12170         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
12171         the method is static. Fixes #75029.
12172
12173 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
12174
12175         * reflection.c: Update the table_idx field of method builders after
12176         saving the module, since it can change. This is a workaround for
12177         bug #74914. 
12178
12179 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12180
12181         * culture-info-table.h : update (additional French date format).
12182
12183 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
12184
12185         * icall.c (ves_icall_type_Equals): Revert last change.
12186         
12187         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
12188
12189         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
12190
12191 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
12192
12193         * class-internals.h: Added executioncontext_class field to 
12194         MonoDefaults structure.
12195         * domain.c: Cache System.Threading.ExecutionContext class in 
12196         mono_defaults.
12197         * object.c: Capture the ExecutionContext for asynchroneous calls in
12198          mono_async_result_new.
12199         * object-internals.h: Added execution_context and original_context 
12200         fields to MonoAsyncResult. Added execution_context to MonoThread.
12201         * security-manager.c|.h: Added mono_get_context_capture_method to 
12202         return the capture method (if required by the security manager or by
12203         the framework version used).
12204         * threadpool.c: Apply capture (if present) ExecutionContext in 
12205         mono_async_invoke and revert to original context after it completes.
12206
12207 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
12208
12209         * culture-info-table.h : updated (real hacky solution for zh-CHT).
12210
12211 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
12212
12213         * culture-info-table.h : zh-CHT related workaround.
12214
12215 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12216
12217         * marshal.c (emit_marshal_custom): Add some error checking and call the
12218         methods in the ICustomMarshaler interface. Fixes #74875.
12219         
12220         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
12221         native->managed wrappers.
12222
12223 2005-05-12  Martin Baulig  <martin@ximian.com>
12224
12225         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
12226         here and use the loader lock.
12227
12228         * mono-debug.c: Properly lock when the debugger is not attached.
12229         (mono_debug_init): Release the initial lock if we're not running
12230         in the debugger.
12231
12232 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12233
12234         * marshal.c (emit_marshal_custom): Pass through NULL values without
12235         calling the custom marshalling routines.
12236
12237         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
12238         conversion in structures. Fixes #74882.
12239
12240 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
12241
12242         * culture-info-table.h : zh-* cultures were missing.
12243
12244 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
12245
12246         * threads.c: Added a new event background_change_event which is signaled
12247         when a thread changes its background mode.
12248         Moved here several checks previously done in managed code. The checks
12249         require the thread lock, and using the thread lock in managed code
12250         can result in deadlocks.
12251         Merged Start_internal and Thread_internal into a single method. Now 
12252         Thread_internal does all work of creating and starting a thread.
12253         Added icalls for setting and getting the state of the object. Moved from
12254         managed code to avoid locking there.
12255         Added wait_for_tids_or_state_change() which is called instad of
12256         wait_for_tids when waiting for non-backround threads to end. This method
12257         will return if one of the threads ends or the background_change_event
12258         is signaled.
12259         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
12260         the background mode. This method signals the background_change_event
12261         event.
12262         * icall.c:
12263         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
12264         removed Start_internal.
12265         
12266 2005-05-11  Martin Baulig  <martin@ximian.com>
12267
12268         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
12269         to order of some fields to get proper alignment on 64-bit machines.
12270
12271 2005-05-11  Martin Baulig  <martin@ximian.com>
12272
12273         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
12274         changes as they're broken and completely fuck up the debugger.
12275
12276         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
12277
12278 2005-05-10  Martin Baulig  <martin@ximian.com>
12279
12280         * reflection.c (mono_reflection_generic_class_initialize): Don't
12281         call mono_class_setup_parent() here.
12282
12283 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12284
12285         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
12286         send/receive timeout use an integer in milliseconds. We were using a
12287         struct timeval.
12288
12289 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12290
12291         * locales.c:
12292         (internal_get_cultures): reserve the first slot of the array for the
12293         InvariantCulture, which will be filled in managed code.
12294
12295 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
12296
12297         * reflection.c (mono_image_fill_module_table): Initialize the
12298         GENERATION field as well.
12299
12300 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12301
12302         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
12303         Monitor.Enter on the object.
12304
12305 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
12306
12307         * threads.c: Enable the wait for running threads when exiting.
12308         * icall.c: Suspend all threads before exiting.
12309
12310 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
12311
12312         * assembly.c (mono_assembly_load_reference): Fix warning.
12313
12314 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12315
12316         * threadpool.c: changed the default number of threads per cpu. From now
12317         on, the default will be 20 + (5 * number of cpus) instead of 50.
12318
12319 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
12320
12321         * loader.c (mono_method_get_signature_full): Add locking here.
12322
12323 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
12324
12325         * appdomain.c: Moved methods for parsing and freeing assembly
12326         names to assembly.c.
12327         * assembly.c, domain-internals.h: Created public methods for parsing
12328         assembly names. Fixed mono_assembly_load_with_partial_name:
12329         it now finds the best match, taking into account the version,
12330         token and culture specified in the partial name. Also return
12331         the latest version if no version information is specified.
12332
12333 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
12334
12335         * threadpool.c: replace check for SocketAsyncCall class.
12336
12337 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12338
12339         * threadpool-internals.h:
12340         * Makefile.am: added threadpool-internals.h
12341
12342         * threadpool.c: call mono_unhandled_exception on exceptions not handled
12343         that happen in threadpool threads (tested on MS).
12344         (mono_thread_pool_remove_socket): new function that dispatch any pending
12345         AIO call on a socket that is closing. By now only epoll really needs it,
12346         as select/poll wake up when the socket closes.
12347
12348
12349         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
12350
12351 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
12352
12353         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
12354
12355 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
12356
12357         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
12358
12359 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
12360
12361         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
12362         has an abort request, convert it into a suspend request.
12363
12364 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
12365
12366         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
12367         warning for the usage of `UnmanagedFunctionPointerAttribute' which
12368         is not supported yet.
12369
12370 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12371
12372         * image.c: register assemblies loaded from data (bundles) in the loaded
12373         assemblies hash. Fixes bug #74772.
12374
12375 2005-04-29  Martin Baulig  <martin@ximian.com>
12376
12377         * class.c (mono_type_get_name_recurse): Update to the new naming
12378         schema from the latest .NET 2.x beta2.
12379         (mono_class_setup_vtable_general): If we're a generic instance,
12380         copy the vtable from our generic type definition and inflate all
12381         the methods in it.
12382
12383         * loader.c (find_method): Update to the new naming schema from the
12384         latest .NET 2.x beta2.
12385
12386 2005-04-29  Raja R Harinath  <harinath@gmail.com>
12387
12388         * class.c (mono_class_init): Add a mono_loader_unlock to the
12389         #74734 fix.
12390
12391 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
12392
12393         * icall.c (ves_icall_System_Environment_Exit): Remove the 
12394         suspend_all_other_threads () call for the time being, since it can hang.
12395
12396         * threads.c (mono_thread_manage): Similarly, disable the waiting for
12397         the background threads to exit, since it can also hang.
12398
12399         * class.c (mono_class_init): Applied patch from Ankit Jain 
12400         (radical@gmail.com). Avoid pending init errors when a field refers
12401         to a nested class using a typeref. Fixes #74734.
12402
12403         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
12404         this for dynamic modules.
12405
12406 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12407
12408         * threads.c: don't wait for threads that are in the process of aborting
12409         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
12410         and waiting for background threads to finish. This makes xsp and
12411         mod-mono-server exit without random length delays and/or hangs.
12412
12413 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12414
12415         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
12416
12417 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
12418
12419         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
12420         dynamic types to prevent infinite loops. Fixes #74727.
12421
12422         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
12423         ..._is_assignable_to.
12424
12425 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
12426
12427         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
12428
12429 2005-04-25  Martin Baulig  <martin@ximian.com>
12430
12431         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
12432
12433         * domain.c
12434         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
12435
12436         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
12437
12438         * reflection.c (build_compressed_metadata): Set metadata header
12439         version to 2.0.
12440
12441 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
12442
12443         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
12444         number into an integral and a decimal part. Fixes #70473.
12445
12446         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
12447
12448 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
12449
12450         * culture-info-table.h : reflected the latest locale-builder output.
12451
12452 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12453
12454         * threadpool.c: check for SuspendRequested too when deciding if
12455         mono_thread_interruption_checkpoint should be called.
12456
12457 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12458
12459         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
12460         * threads.c: remove interruption_mutex and use Interlocked instead. When
12461         suspending all the threads, wait for all the suspended events at once.
12462         If we're shutting down and get an APC that is going to be queued,
12463         call mono_thread_execute_interruption immediately, as the thread might
12464         be sleeping on a pthread condition or mutex.
12465
12466         * icall.c: call mono_runtime_set_shutting_down before suspending the
12467         threads.
12468
12469         Fixes bug #74693. And now xsp is happier when exiting.
12470
12471 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12472
12473         * loader.c (mono_stack_walk): Fix #74690.
12474
12475 2005-04-22  Martin Baulig  <martin@ximian.com>
12476
12477         * mono-debug.h (MonoDebugMethodJitInfo): Added
12478         `MonoDebugMethodJitInfo *jit'.
12479
12480         * mono-debug.c (mono_debug_read_method): Cache the
12481         MonoDebugMethodJitInfo in `address->jit'.
12482         (mono_debug_free_method_jit_info): New public method.
12483
12484 2005-04-22  Martin Baulig  <martin@ximian.com>
12485
12486         * class.c (mono_class_is_assignable_from): Disallow
12487         type parameter -> interface.
12488
12489 2005-04-21  Dick Porter  <dick@ximian.com>
12490
12491         * threads.c (mono_thread_create): Turn an assertion into an error.
12492
12493 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12494
12495         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
12496         
12497         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
12498         Fix some gcc 4.0 warnings.
12499
12500 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
12501
12502         * file-io.c: fix alt dir separator char on unix systems
12503         and cleanup (fixes bug #71214).
12504
12505 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
12506
12507         * marshal.c: Use CALLVIRT instead of CALL when dispatching
12508         a call to a remote domain, since the method may be an
12509         interface method in the client domain. This fixes bug #74192.
12510
12511 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12512
12513         * threadpool.c: recv/send are now performed before going back to managed
12514         code to save one transition.
12515
12516 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12517
12518         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
12519
12520         * metadata/threadpool.c: removed hack to workaround the bug above.
12521
12522         Fixes bug #74618.
12523
12524 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12525
12526         * reflection.c reflection.h: Fix handling of parameter defaults in
12527         dynamic methods. Also fixes handling of parameter attributes.
12528         Fixes #74609.
12529
12530         * mono-debug.c (mono_debug_close_image): Fix warning.
12531
12532 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12533
12534         * socket-io.h: replaced old unused field with new 'blocking'.
12535         * threadpool.c: restore socket blocking state on windows(tm).
12536
12537 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
12538
12539         * icall.c: don't return the codebase in the AssemblyName[] returned by
12540         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
12541         * object-internals.h: Removed FIXME (fields were presents) and fixed
12542         versioncompat declaration.
12543
12544 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12545
12546         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
12547         not closed, so don't cleanup when it happens.
12548
12549 2005-04-13  Chris Toshok  <toshok@ximian.com>
12550
12551         * mono-debug-debugger.h: change prototype for
12552         mono_debugger_lookup_type.
12553
12554         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
12555         this function, although it should probably be named
12556         mono_debugger_init_type.
12557
12558 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12559
12560         * threadpool.c: fix non-AIO case.
12561
12562 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12563
12564         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
12565         the built-in profiler to measure just JIT compilation times.
12566
12567 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12568
12569         * threadpool.c: the epollfd might be closed by another thread at
12570         any time, so ignore EBADF at treat it as a "we're closing" sign.
12571
12572 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12573
12574         * threadpool.c: release the semaphores with a count equals to the number
12575         of working threads in both IO and regular pools. Fixed typo that messed
12576         up the count of IO pool threads. Don't initialize the pipe handles if
12577         we're using epoll.
12578
12579 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12580
12581         * threadpool.c: some systems don't like a NULL when deleting the socket
12582         from epoll.
12583
12584 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12585
12586         * threadpool.c: fix semaphore allocation.
12587
12588 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12589
12590         * threadpool.c: added epoll() based implementation for asynchronous IO
12591         that is used instead of the default poll() when available.
12592         It can be disabled by setting MONO_DISABLE_AIO.
12593
12594 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12595
12596         * threadpool.c: windows needs 'closesocket' and instead of returning
12597         0 when the stream is closed while in select, it returns -1. Fixes bug
12598         #74573.
12599
12600 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
12601
12602         * class.c (class_compute_field_layout): Fix the regression caused by
12603         the previous try.
12604
12605 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12606
12607         * threadpool.c: separate pool for socket async. IO.
12608         * threadpool.h: mono_max_worker_threads is not a global any more.
12609
12610 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12611
12612         * class.c (class_compute_field_layout): Fix #74549.
12613
12614 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12615
12616         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
12617         use 2 connected sockets instead.
12618
12619 2005-04-08  Miguel de Icaza  <miguel@novell.com>
12620
12621         * mono-config.c: Add new entry point for mkbundle
12622         mono_config_parse_memory. 
12623
12624 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12625
12626         * threadpool.c: removed another unused function.
12627
12628 2005-04-08  Ankit Jain  <radical@corewars.org>
12629
12630         * reflection.c (get_default_param_value_blobs): Add 'types'
12631         parameter to get the types encoded in the constant table.
12632         (mono_param_get_objects): Use the type from the constant table,
12633         not the type of the parameter, when creating default values.
12634         Handle null default values correctly.
12635
12636 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12637
12638         * file-io.c:
12639         * file-io.h:
12640         * threadpool.c:
12641         * threadpool.h:
12642         * icall.c:
12643         * socket-io.c: removed dead code for async IO.
12644
12645 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12646
12647         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
12648
12649         * threadpool.c: intercept socket async. calls and pass them to a thread
12650         that is polling and dispatching the job items to the threadpool as
12651         socket become ready. Fixes bugs #71217, #71933.
12652
12653         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
12654         between char and short/ushort arrays.
12655
12656         * socket-io.c: remove dead code.
12657
12658 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12659
12660         * locales.c,
12661           icall.c : removed InternalToUpper_Comp() and
12662           InternalToLower_Comp().
12663
12664 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12665
12666         * char-conversions.h : The tables were incorrectly generated. Should
12667           be generated against invariant culture.
12668
12669 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12670
12671         * object.c (mono_runtime_invoke_array): Fix return value when 
12672         passing pre-created valuetype objects to ctors.
12673
12674         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
12675         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
12676         Fixes #74338.
12677
12678 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
12679
12680         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
12681         only used with --security and hides the wrong corlib version error.
12682
12683 2005-03-30  Joshua Tauberer  <tauberer@for.net>
12684
12685         * class.c: Changed mono_class_name_from_token so that types
12686         outside of a namespace don't have an initial period.  Improved
12687         the g_warning message used in _mono_class_get when loading
12688         fails.
12689         * assembly.c: In mono_assembly_load_reference, when an assembly
12690         can't be found, "No such file or directory" is misleading and
12691         unhelpful because a few paths were checked for the presence of
12692         the assembly.  When that happens (ENOENT), display a nicer
12693         message indicating the directories that were searched.  In all
12694         cases, the warning is made easier to read for non-hackers.
12695
12696 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12697
12698         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
12699         project/solution.
12700         * appdomain.h|domain.c: Removed inline from functions.
12701         * appdomain.c: Reduced warnings when compiling on windows.
12702         * icall.c: Fixed output_debug declaration to gunichar2*.
12703         * mono-config.c: Reduced warnings when compiling on windows.
12704         * rand.c: Added missing "windows.h". Added missing return value.
12705         * rawbuffer.c: Added missing winsock2.h for windows.
12706         * sysmath.h: Added mono-compiler.h header to allow/ease 
12707         compilation with non-GCC compilers.
12708         * threads.c: Fixed declarations to compile with VS.NET C compiler.
12709         Removed cast warnings.
12710
12711         Adapted from the work of J Lothian (for VC6).
12712
12713 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12714
12715         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
12716         from default_path.
12717
12718 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12719
12720         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
12721         the 2.0 profile.
12722
12723 2005-03-27  Raja R Harinath  <harinath@gmail.com>
12724
12725         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
12726         has to be in $(exec_prefix).  $(prefix) is for arch-independent
12727         stuff, and it would probably use $(prefix)/share rather than
12728         $(prefix)/lib.
12729
12730 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12731
12732         * console-io.c: added 2 includes that might be missing.
12733
12734 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12735
12736         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
12737         profile.
12738
12739         * reflection.c (create_custom_attr): Allocate the params array using
12740         alloca so it gets GC tracking.
12741
12742 2005-03-23  Chris Toshok  <toshok@ximian.com>
12743
12744         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
12745         out some spew.
12746
12747 2005-03-24  Raja R Harinath  <rharinath@novell.com>
12748
12749         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
12750         changes to pick up any changes in prefix, etc.
12751
12752 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12753
12754         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
12755         
12756         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
12757         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
12758
12759 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12760
12761         * class-internals.h object-internals.h class.c reflection.c: Extend the
12762         mono_lookup_dynamic_token () function to return the class of the
12763         token as well. 
12764
12765         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
12766         well. Fixes #73848.
12767
12768 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12769
12770         * security-manager.c: Skip inheritance checks for intra-corlib
12771         class inheritance and method overrides. This skips a lot of checks
12772         and (anyway) permissions cannot work until corlib is loaded.
12773
12774 2005-03-23  Martin Baulig  <martin@ximian.com>
12775
12776         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
12777         MONO_TYPE_GENERICINST.  
12778
12779 2005-03-23  Martin Baulig  <martin@ximian.com>
12780
12781         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
12782
12783 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12784
12785         * class.c: added locking comments to some functions.
12786         Cache the interface offsets arrays (saves about 20 KB
12787         of runtime memory in a typical app).
12788         Reduce the time overhead in mono_class_setup_supertypes ().
12789
12790 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
12791
12792         * icall.c: speedup and fix leaks in GetMethodsByName and
12793         GetPropertiesByName.
12794
12795 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12796
12797         * reflection.c: some locking fixes.
12798
12799 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12800
12801         * metadata.c: added missing break in case statement.
12802
12803 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
12804
12805         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12806         typedbyref return values. Fixes #73941.
12807
12808 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12809
12810         * security-manager.c|h: Added demandunmanaged method and 
12811         suppressunmanagedcodesecurity class to MonoSecurityManager.
12812         Renamed aptc class to allowpartiallytrustedcallers.
12813
12814 2005-03-17  Martin Baulig  <martin@ximian.com>
12815
12816         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
12817
12818 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12819
12820         * file-io.c: disabled file async. IO using aio_*. It uses the
12821         threadpool now. Workaround for bug #73718.
12822
12823 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12824
12825         * assembly.h, mono-config.c: added code to deal with bundled configs
12826         for bundled assemblies.
12827
12828 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
12829
12830         * *.c, private.h: cleanup, removing old private.h header file.
12831
12832 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12833
12834         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
12835         and throw_on_unmappable_char attributes.
12836
12837 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
12838
12839         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
12840         _ProcessName_internal.
12841
12842 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12843
12844         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
12845         #73631.
12846
12847         * icall.c threads.c threads-types.h: Remove slothash icalls as they
12848         are no longer used.
12849
12850 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12851
12852         * object.c (compute_class_bitmap): Add support for generics. Fixes
12853         #73527.
12854
12855 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12856
12857         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
12858
12859 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12860
12861         * filewatcher.c: commented out the code for windows watcher, as we don't
12862         use it (we use the managed implementation instead).
12863
12864 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12865
12866         * object-internals.h (MonoThread): Remove 'unused1' field.
12867
12868         * appdomain.c: Bump corlib version.
12869
12870         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
12871
12872         * reflection.c (mono_reflection_create_runtime_class): Remove the
12873         AssemblyBuilder.Save optimization since it causes too many problems.
12874
12875 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
12876
12877         * exception.c|h: Added mono_get_exception_reflection_type_load to
12878         create a ReflectionTypeLoadException object.
12879         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
12880         to return NULL is a InheritanceDemand fails during reflection. Updated
12881         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
12882         ReflectionTypeLoadException if an InheritanceDemand fails during 
12883         reflection. Added icall mapping for GetLinkDemandSecurity.
12884         * security-manager.c|h: Added ves_icall_System_Security_
12885         SecurityManager_GetLinkDemandSecurity internal call to return the
12886         class and methods permissions set for a LinkDemand. Removed unused
12887         fields in MonoSecurityManager.
12888
12889 2005-03-10  Martin Baulig  <martin@ximian.com>
12890
12891         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
12892         it's a generic instance.
12893
12894 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
12895
12896         * reflection.c (mono_get_object_from_blob): Applied patch from
12897         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
12898
12899         * class.c (mono_class_is_assignable_from): Another try at fixing 
12900         #73469 without breaking anything.
12901
12902 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12903
12904         * class.c: (mono_class_is_assignable_from): Revert the last changes
12905         since they don't work with generics.
12906         
12907         * class.c (mono_class_is_assignable_from): Fix build bustage.
12908
12909         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
12910         the managed IsAssignableFrom method. Fixes #73469.
12911
12912         * reflection.c (mono_reflection_call_is_assignable_from): New helper
12913         function.
12914
12915 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12916
12917         * object.c (mono_load_remote_field_new): Fix returning uninitialized
12918         memory when the remoting callback does not sets the out arguments.
12919         Fixes #73007.
12920
12921         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
12922         by mistake.
12923
12924         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
12925
12926         * object-internals.h (MonoStackFrame): Sync with managed object layout.
12927
12928         * appdomain.c: Bump corlib version.
12929
12930 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12931
12932         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
12933         function.
12934
12935         * threads.c (mono_thread_attach): Detect threads which are not started
12936         by the GC pthread wrappers.
12937
12938 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
12939
12940         * icall.c: Added new icall for RNG.
12941         * rand.c|h: Added new icall to open the RNG. This allows to share a 
12942         single handle on Linux to access /dev/urandom and fix #73183.
12943
12944 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12945
12946         * object.c: setting the new vtable in a transparent proxy object must
12947         not change the GC descriptor.
12948
12949 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12950
12951         * object.c: fixed compilation without GCJ support.
12952         * reflection.c: for runtime-created types ensure klass->has_references
12953         is correct (bug #73215).
12954
12955 2005-03-02  Martin Baulig  <martin@ximian.com>
12956
12957         * class.c (mono_class_is_assignable_from): Make this work if
12958         `oklass' is a generic instance; fixes #72831.
12959
12960 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12961
12962         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
12963         with hasthis set.
12964         
12965         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
12966
12967         * marshal.c: Reorganize native->managed marshalling code to also use
12968         the emit_marshal_... functions.
12969
12970 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12971
12972         * object.c: typed allocs have issues with bitmap sizes > 30,
12973         so check for max_set >= 30.
12974
12975 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12976
12977         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
12978         managed code. Fixes #73012.
12979
12980         * metadata.h (MonoMarshalSpec): Add elem_mult field.
12981
12982         * metadata.c reflection.c: Load/Emit elem_mult as well.
12983         
12984         * metadata.h (MonoMarshalSpec): Add comment.
12985
12986         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
12987
12988         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
12989         num_elem to -1 if not given.
12990
12991         * object-internals.h (MonoReflectionMarshal): Add has_size field.
12992
12993         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
12994         given values.
12995
12996 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
12997
12998         * null-gc.c (mono_gc_free_fixed): Was not compilable.
12999
13000 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
13001
13002         * reflection.c (encode_marshal_blob): Encode param_num field as well.
13003
13004         * object-internals.h (MonoReflectionMarshal): Add param_num field.
13005
13006 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
13007
13008         * object.c: generalized the reference bitmap creation
13009         and added hooks for the new GC.
13010         * class-internals.c: removed the gc_bitmap field from MonoClass.
13011
13012 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13013
13014         * domain.c: help the compiler to produce better code
13015         in mono_jit_info_table_find ().
13016
13017 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13018
13019         * object.c: make all allocations look typed.
13020
13021 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13022
13023         * socket-io.c: load Mono.Posix if it's not loaded already
13024         (fixes bug#73033).
13025
13026 2005-02-24  Martin Baulig  <martin@ximian.com>
13027
13028         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
13029         * reflection.c (dup_type): Likewise.
13030
13031 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
13034         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
13035
13036 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13037
13038         * domain.c, threads.c, object-internals.h: make the critical thread
13039         local vars use the fast access mode (even when we're compiled in
13040         a lib). Provide accessors to be used by the jit during codegen.
13041
13042 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13043
13044         * appdomain.c: Changed hook functios behavior to include
13045         support for the reflection only assemblies. Some icalls were changed
13046         to support the mentioned assemblies too. Signatures of static methods
13047         try_assembly_resolve and real_load now have an additional parameter:
13048         refonly.
13049
13050         * assembly.c: General changes to mono_assembly_ methods to support
13051         reflection only api. Functions mono_assembly_open, mono_assembly_load,
13052         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
13053         suffix, to support an additional gbool parameter to specify whether
13054         the assembli is reflection only or not. Created some new hook functions 
13055         to add support for reflection only assemblies. Signatures of static 
13056         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
13057         have now an additional parameter: refonly.
13058
13059         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
13060         indicating whether the assembly is reflection only or not.
13061
13062         * exception.c: Add mono_get_exception_invalid_operation.
13063
13064         * icall.c: Throw an InvalidOperationException when trying to invoke
13065         a property/method/event, or trying to set/get the value of a field.
13066         Also add an icall to retrieve the ref_only flag to the
13067         MonoReflectionAssembly.
13068
13069 2005-02-23  Chris Toshok  <toshok@ximian.com>
13070
13071         Part of fix for #72827.
13072         * mono-debug.c (mono_debug_add_method): add lexical block data to
13073         the info we write.  Kind of a hack at the moment - we copy the
13074         lexical block info from the MonoDebugMethodInfo to the
13075         MonoDebugMethodJitInfo here, before writing it.
13076         (mono_debug_read_method): read the lexical block info.
13077
13078         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
13079
13080         * debug-mono-symfile.h: add lexical block support.
13081
13082         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
13083         support.
13084
13085 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13086
13087         * loader.c (mono_lookup_pinvoke_call): Fix warning.
13088
13089         * object.c (mono_runtime_free_method): Call mono_free_method () and
13090         put the TODOs there.
13091
13092         * loader.c (mono_free_method): Free up most memory allocated for 
13093         dynamic methods.
13094
13095 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13096
13097         * reflection.c: properly flag a Type argument to a
13098         named custom attr value (bug #72248).
13099
13100 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13101
13102         * reflection.c: reduce code duplication in named custom
13103         attribute encoding.
13104
13105 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
13106
13107         * reflection.c: properly encode custom attrs of type object
13108         (bug #72649).
13109
13110 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13111
13112         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
13113
13114 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
13115
13116         * socket-io.c: load System.dll if it's not loaded already
13117         (bug #72850 and #70477).
13118
13119 2005-02-21  Martin Baulig  <martin@ximian.com>
13120
13121         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
13122         generic instances.
13123
13124 2005-02-21  Martin Baulig  <martin@ximian.com>
13125
13126         * reflection.c (mono_image_build_metadata): We also need to
13127         "fixup" the MethodImpl table after we computed the final method
13128         indices.  Call fixup_methodimpl() to do that.
13129         (fixup_methodimpl): New private method.
13130
13131 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13132
13133         * assembly.c: special case mscorlib.dll (bug#72536),
13134         patch from Carlos Alberto Cortez.
13135
13136 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
13137
13138         * threads-types.h threads.c: Fix build bustage.
13139
13140         * threads.c: Use a union for long<->double conversions.
13141
13142         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
13143         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
13144
13145         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
13146         containing the checkpoint call with NOT_TAKEN.
13147         
13148         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
13149         checkpoint before pushing the arguments, so they won't have to be
13150         spilled to stack.
13151
13152 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13153
13154         * domain.c, assembly.c, domain-internals.h: make some data
13155         const and relocation-free.
13156
13157 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
13158
13159         * object.c, appdomain.c, class-internals.h: introduce the
13160         MonoClassRuntimeInfo structure to hold the info needed to
13161         use a class at runtime. Made mono_class_vtable() lock-free
13162         for all the appdomains.
13163
13164 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
13165
13166         * metadata-internals.h, image.c: introduce a per-image mempool to
13167         be used for memory that has the same lifetime as the image.
13168
13169 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
13170
13171         * domain.c: In mono_init_internal(), instead of selecting the first
13172         runtime version supported by an executable, get a list of all
13173         supported versions and select the one for which an mscorlib exists
13174         (since even if the runtime supports a given version, it doesn't mean
13175         that the framework for that version is installed).
13176         Modified get_runtimes_from_exe to support this behavior.
13177         In supported_runtimes, added information about additional system
13178         assembly versions.
13179         
13180         * assembly.c: Added support for more than one system assembly version
13181         per runtime version. Updated the assembly list.
13182         In mono_assembly_remap_version, removed the initial version check,
13183         since we don't know to which version we need to compare until we
13184         get the version set on which the assembly is based.
13185         Moved the code for loading corlib into the new method
13186         mono_assembly_load_corlib(), so it can be used by the initialization
13187         code.
13188         
13189         * domain-internals.h: Updated data structures and added declaration
13190         for mono_assembly_load_corlib.
13191
13192 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13193
13194         * reflection.c (resolve_object): Fix the creation of the signature in 
13195         the SignatureHelper case.
13196
13197         * assembly.c (mono_assembly_remap_version): Fix binary search.
13198         
13199 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
13200  
13201         * class.c: Added inheritance check when a method is overloaded (from a
13202         virtual method or when implementing an interface) and when a class is
13203         inherited. Added functions to set a failure for a class and to 
13204         retreive the exception from a failure.
13205         * class-internals.h: Added fields to MonoClass to keep the exception
13206         information status for inheritance (or other exceptions) to be thrown
13207         later (i.e. not at load time).
13208         * object.c: Throw the inheritance SecurityException when a type is to 
13209         be created with either class or method inheritance violations.
13210         * reflection.c|h: Fix when getting declsec from a class. Removed 
13211         unrequired code for class. Improved sanity in parameter naming.
13212         * security-manager.c|h: Added functions to check for class and method
13213         inheritance.
13214
13215 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13216
13217         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
13218         and has_finalize in dynamic types as well.
13219
13220 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
13221
13222         * culture-info-table.h : fixed currency format for en-GB (and so on).
13223
13224 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
13225
13226         * gc.c: ensure the GC handles never have 0 as a value.
13227
13228 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13229
13230         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
13231         a pointer to a struct to unmanaged code. Fixes #72625.
13232
13233 2005-02-16  Martin Baulig  <martin@ximian.com>
13234
13235         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
13236
13237 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13238
13239         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
13240
13241 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13242
13243         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
13244
13245         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
13246         UnmanagedFunctionPointerAttribute, use it for determining calling convention
13247         etc. Fixes #71471.
13248
13249         * reflection.c (mono_custom_attrs_get_attr): New helper function.
13250
13251         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
13252
13253 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
13254
13255         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
13256         changes to make the current context a field in MonoThread.
13257
13258 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13259
13260         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
13261         the last change.
13262         
13263         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
13264         extracted from mono_marshal_get_native_wrapper.
13265
13266         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
13267         to create wrappers around native functions.
13268
13269         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
13270         delegates for arbitrary function pointers. Fixes #71472.
13271
13272 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13273
13274         * threads.c: cleaned up the code a little.
13275
13276 2005-02-15  Martin Baulig  <martin@ximian.com>
13277
13278         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
13279         the data table.
13280
13281         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
13282         allocate larger chunks if needed.
13283
13284 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13285
13286         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
13287         in by mistake.
13288
13289 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
13290
13291         * domain.c: keep the domains in an array and ensure the domain ids
13292         are kept small, so they can be used as indexes to domain-specific data
13293         with a small memory overhead.
13294
13295 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13296
13297         * icall.c: Handle byref types in Type icalls. Fixes #72544.
13298
13299 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
13300
13301         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
13302
13303 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
13304
13305         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
13306
13307         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
13308         values.
13309
13310         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
13311         
13312 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
13313
13314         * domain-internals.h: add the hashtable here.
13315
13316         * class-internals.h: Remove `info' from MonoMethod
13317
13318         * domain.c: Add a new hashtable, jit_trampoline_hash
13319
13320 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13321
13322         * object.c: don't set the value of static fields
13323         (fixes bug#72494).
13324
13325 2005-02-11  Martin Baulig  <martin@ximian.com>
13326
13327         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
13328         (mono_debug_add_method): Silently ignore the method if it's too big.
13329         (mono_debug_add_type): Likewise.
13330
13331 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
13332
13333         * threads.c, appdomain.c: remove #ifdefs from the code.
13334
13335 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
13336
13337         * metadata-internals.h: Added flags to MonoAssembly to cache the most
13338         common security informations. This allows us to stay in unmanaged code
13339         when doing LinkDemand and it's special cases (except for the first 
13340         time for initialization). The flags a very much used with --security.
13341         * reflection.c|h: Added code to get declarative security attributes 
13342         for LinkDemand and InheritanceDemand. This required to refactor the
13343         existing code for Demand.
13344         * security-manager.c|h: Added new method fields for the special cases
13345         of LinkDemand.
13346
13347 2005-02-10  Martin Baulig  <martin@ximian.com>
13348
13349         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
13350         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
13351
13352 2005-02-10  Martin Baulig  <martin@ximian.com>
13353
13354         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
13355         debugging code; this is almost a complete rewrite.
13356
13357         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
13358
13359 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13360
13361         * domain.c, object.h: expose mono_string_equal () and 
13362         mono_string_hash ().
13363         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
13364         it's implemented in managed code.
13365
13366 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13367
13368         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
13369         lo leak objects between appdomains.
13370
13371 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13372
13373         * assembly.c: old compilers compilation fix from 
13374         robertj@gmx.net (Robert Jordan).
13375
13376 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
13377
13378         * class-internals.h: Little reminder for the future.
13379
13380         * debug-helpers.c: Fix up wrapper_type_names
13381
13382 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13383
13384         * image.c, metadata-internals.h: when loading an image from a file,
13385         mmap all of it and use the same codepaths as when using a
13386         in-memory image: the code is simpler and we use less memory
13387         (both writable and readonly).
13388
13389 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13390
13391         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
13392         API to alloc runtime data structures that need to be tracked by the
13393         GC and contain pointers.
13394         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
13395         make the code more readable and eventually use a different GC.
13396
13397 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
13398
13399         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
13400         for out arguments.
13401         
13402 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
13403
13404         * object.c: In release_type_locks(), don't release the cctor lock
13405         if it has already been released. This fixes a crash in the
13406         thread5 test.
13407
13408 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13409
13410         * gc.c, marshal.c, icall.c: register a delegate for finalization
13411         only when the native function pointer has been allocated for it.
13412
13413 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13414
13415         * object.c: cleaned up some code, allocate objects that are
13416         pointer free with the atomic malloc variant. Allocate memory
13417         for static data from the mempool if it's pointer-free.
13418         Allocate the bounds array at the end of the array data, when needed.
13419         * object-internals.h, object.h: move a private function in a private
13420         header.
13421         * class.c: handle missing case in tracking references in fields.
13422
13423 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13424
13425         * class.c, class-internals.h: keep track if a type has
13426         reference fields in either the instance or static fields.
13427
13428 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
13429
13430         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
13431         and renamed to MonoRuntimeInfo. Added fields to store the expected
13432         framework assembly version. Changed mono_get_framework_version and
13433         mono_get_runtime_version for a single mono_get_runtime_info method.
13434         
13435         * assembly.c: Added method to remap system assembly versions to the
13436         current executing runtime version. Removed old mapping code.
13437         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
13438         
13439         * icall.c, reflection.c: Track api changes.
13440
13441 2005-02-06  Miguel de Icaza  <miguel@novell.com>
13442
13443         * loader.c (method_from_memberref): Improve error reporting,
13444         produce the class name instead of the typeref/typedef index. 
13445
13446 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
13447
13448         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
13449
13450 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13451
13452         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
13453         stdcall and charset name mangling.  Reorganize the code and add
13454         some tracing stuff.
13455
13456 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13457
13458         * monodiet.c: More iters!
13459
13460         * marshal.c: Iter usage.
13461
13462         * icall.c: Iter usage.
13463
13464         * object.c: Use iters.
13465
13466         * debug-helpers.c: More iters
13467
13468 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13469
13470         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
13471         under win32.
13472
13473 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13474
13475         * mono-debug-debugger.c: use iters
13476
13477         * class.c, class-internals.h: mono_class_setup_events is static
13478         now
13479
13480         * All callers: use iters
13481
13482 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13483
13484         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
13485         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
13486
13487 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13488
13489         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
13490
13491         * marshal.h: Add prototypes for ldfld/stfld_remote.
13492
13493         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
13494         this is called during startup.
13495         
13496 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
13497
13498         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
13499         MonoThreadsSync struct private in monitor.c. Changed the way
13500         MonoThreadsSync is allocated so it's faster and there is no
13501         need to keep track of it with a finalizer and it uses less memory.
13502         This also finally allows us to allocate mono objects as ptrfree when
13503         there are no reference fields.
13504
13505 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
13506
13507         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
13508         disappearing link to the GC interface and use them to simplify
13509         the gchandles code.
13510
13511 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13512
13513         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
13514         stfld_remote which call mono_load/store_field_new. This allows methods
13515         calling ldfld/stfld wrappers to be AOTed.
13516
13517         * console-io.c: Include sys/filio.h under solaris.
13518         
13519         * console-io.c: Include curses.h if needed correctly.
13520
13521 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13522         
13523         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
13524         method->klass as well.
13525
13526         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
13527
13528         * class.c (mono_class_init): Switch on lazy initialization of 
13529         methods.
13530
13531         * class.c (mono_class_get_finalizer): Handle the case when the 
13532         finalizer is inherited.
13533
13534 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13535
13536         * console-io.c: <curses.h> is needed by term.h on solaris.
13537
13538 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
13539
13540         * icall.c, class-internals.h, monodiet.c, class.c: Remove
13541         mono_class_setup_properties where possible. Remove this ftn from
13542         the header file, and make it static.
13543
13544 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13545
13546         * loader.c: Add missing setup_... call.
13547
13548         * class.c: Add missing setup_... calls.
13549
13550         * class.c (mono_class_init): Switch on lazy initialization of 
13551         the generic vtable.
13552         
13553         * class.c (mono_class_init): Fix generics broken by the recent changes.
13554
13555         * monodiet.c (handle_type): Add missing setup_... calls.
13556
13557         * class.c: Back out garbage in previous patch.
13558         
13559         * class.c: Add missing setup_... calls.
13560
13561         * class.c (mono_class_get_method_from_name_flags): Avoid calling
13562         mono_class_setup_methods () if possible.
13563
13564         * class-internals.h (MonoClass): Add 'has_cctor' flag.
13565
13566         * class-internals.h (MonoCachedClassInfo): New structure.
13567
13568         * class.c: Initialize properties and events fields of MonoClass lazily.
13569
13570         * class.c: Add infrastructure for lazily initializing the methods and
13571         vtable fields of MonoClass. Not yet used.
13572
13573         * class.c (mono_class_get_finalizer): New helper function.
13574
13575         * class.c: Add infrastructure for loading some class related data from
13576         an AOT file.
13577
13578         * object.c: Add infrastructure for initializing the vtable from data
13579         in the AOT file.
13580
13581         * gc.c (run_finalize): Use mono_class_get_finalizer ().
13582
13583         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
13584         appropriate initialization function before accessing parts of the
13585         MonoClass structure.
13586
13587         * marshal.c: Fix warnings.
13588         
13589         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
13590
13591         * mono-debug-debugger.c (get_exception_message): Use 
13592         mono_class_get_method_from_name_flags ().
13593
13594 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
13595
13596         * reflection.c, appdomain.c: Replace a few manual searches that
13597         Zoltan missed. (Paolo approved this part of my initial patch).
13598
13599 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
13600
13601         * profiler.c: disable recording statistical events at report time.
13602
13603 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13604
13605         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
13606         to byteswap arrays of enum values, too (bug #72080).
13607
13608 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13609
13610         * appdomain.c (set_domain_search_path): Allow this to be called if
13611         domain->setup is not yet set.
13612
13613         * loader.c (mono_method_get_index): New helper function.
13614
13615         * loader.c reflection.c: Use mono_method_get_index ().
13616
13617         * class.c (mono_class_get_method_from_name_flags): New helper method.
13618
13619         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
13620         this.
13621
13622         * class.c (mono_class_get_cctor): New helper method.
13623
13624         * string-icalls.c object.c class.c marshal.c reflection.c: Use
13625         mono_class_get_method () to look up methods.
13626
13627 2005-02-01  Miguel de Icaza  <miguel@novell.com>
13628
13629         * console-io.c: Fix the build, this should work on Windows.
13630
13631 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
13632
13633         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
13634         be set to null to keep things valid
13635
13636 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13637
13638         * icall.c: added Console 2.0 icalls.
13639         * Makefile.am: added console-io.[ch]
13640         * console-io.[ch]: internal calls for Console 2.0 API.
13641
13642 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13643
13644         * class.c: make sure we consider all the interfaces
13645         when calculating max_interface_id (bug found by
13646         Jeroen Frijters running ikvm).
13647
13648 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13649
13650         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
13651         valuetype fields to null.
13652
13653         * object.c (set_value): Ditto. Fixes #71669.    
13654
13655 2005-01-31  Martin Baulig  <martin@ximian.com>
13656
13657         * metadata.c (mono_metadata_has_generic_params): New public
13658         function; checks whether something is a generic method.
13659
13660 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13661
13662         * appdomain.c: fix infinite recursion when adding assemblies.
13663
13664 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13665
13666         * object.c: Fix small typo to return all items for Environment.
13667         GetCommandLineArgs.
13668
13669 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13670
13671         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
13672         reflection.c: more domain and assembly-unload related fixes
13673         and memory leaks plugs.
13674
13675 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13676
13677         * 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.
13678
13679 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13680
13681         * loader.c (mono_method_signature): Make this method lazy
13682         (mono_get_method_from_token): Don't computate the signature here.
13683
13684         Doing this saves quite a bit of memory. I got 90 kb on starting up
13685         monodoc. It should also save some disk reads on startup.
13686
13687         * *: MonoMethod->signature might be NULL now. You *MUST* use
13688         mono_method_signature.
13689
13690 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
13691
13692         * object.c (mono_runtime_get_main_args): Return an array from the
13693         current domain here. Fixes #71938.
13694
13695 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13696
13697         * monitor.c: formatting changes to comply with the
13698         mono coding style and remove #ifdefs from the code.
13699
13700 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13701
13702         * metadata.c, private.h: remove some unneeded data
13703         and use a more compact representation for table schemas.
13704
13705 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13706
13707         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
13708         to get a better distribution in hash tables.
13709         * *.c: use mono_aligned_addr_hash() where appropriate.
13710         * assembly.c: make var static.
13711
13712 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13713
13714         * domain-internals.h: Put MonoJitInfo on a diet.
13715
13716         * domain.c: Fix a warning.
13717
13718 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13719
13720         * gc.c: rework the gc handles code to reuse handles
13721         when freed.
13722
13723 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13724
13725         * domain.c: fixed long standing bug in mono_string_equal() which
13726         was brought to light with the ldstr changes.
13727
13728 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13729
13730         * reflection.c: Remove warning by adding missing include for marshal.h
13731
13732 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13733
13734         * domain.c, object.c: change the ldstr_table to hold
13735         MonoString* as keys: makes the runtime isinterned lookup
13736         faster and simplifies memory management.
13737
13738 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
13739  
13740         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
13741         possible to add imperative security checks before calling the icall.
13742         * reflection.c: Return security attributes on the original MonoMethod
13743         (and not the wrapped one). This fix permissions on icalls.
13744
13745 2005-01-25  Dick Porter  <dick@ximian.com>
13746
13747         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
13748         the check for mktime() support actually test the mktime() return
13749         value.  "Fixes" bug 71682, though the output is still different to
13750         MS.
13751
13752 2005-01-25  Martin Baulig  <martin@ximian.com>
13753
13754         * class.c (mono_class_is_assignable_from): Make this work for
13755         generic instances.
13756
13757 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
13758
13759         * marshal.c (mono_string_utf8_to_builder)
13760         (mono_string_builder_to_utf16): We might not have ownership of the
13761         string. In thise case, we need to create a new buffer.
13762
13763         * object-internals.h (mono_stringbuilder_capacity): sb->str might
13764         be null, in which case, use the default capacity.
13765
13766 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13767
13768         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
13769         GC events to the profiler.
13770
13771 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13772
13773         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
13774         if you don't want the GC to run.
13775
13776 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
13777
13778         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
13779         start providing a GC API and keeping different implementations in
13780         their own file.
13781         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
13782
13783 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13784
13785         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
13786         mmap rather than allocating a huge buffer.
13787         (mono_debug_close_mono_symbol_file): Free the buffer allocated
13788         above.
13789
13790 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13791
13792         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
13793         and CheckExecutionRights.
13794         * reflection.c|h: Keep the index of the declarative security to be 
13795         used, instead of the pointer, when AOT compiler is used. Also add 
13796         class initialization when requesting demands.
13797         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
13798         CheckExecutionRights. Both properties are now FALSE by default, and
13799         unmodifiable, unless the --security option is used.
13800
13801 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13802
13803         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
13804         reflection.c: properly refcount images and assemblies, many leaks fixed.
13805
13806 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13807
13808         * threadpool.c: increase the timeout for threads in the thread pool to
13809         10s.  Fixes bug #67159.
13810
13811 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
13812
13813         * class-internals.h: Sun's compiler insists on explicit
13814         signed on bit fields to handle then correctly.
13815
13816 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
13817
13818         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
13819         Make the size of the array fit only the number of invalid path
13820         chars that we have.
13821
13822         * class.c (_mono_class_get): Improve the error reporting when a
13823         class referenced is not found, to assist debugging. 
13824
13825 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
13826
13827         * threads.c: fix off-by-one error.
13828         * domain.c: free data allocated in the domain.
13829
13830 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13831
13832         * reflection.c (mono_method_body_get_object): Fill out exception info
13833         as well.
13834
13835         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
13836         structure.
13837         
13838 2005-01-19  Martin Baulig  <martin@ximian.com>
13839
13840         * loader.c (mono_get_method_constrained): Make this work again.
13841
13842 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13843
13844         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
13845         guint16 to match the managed side.
13846
13847         * reflection.c (mono_reflection_body_get_object): Fill out local
13848         variables array.
13849
13850         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
13851         as well.
13852
13853         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
13854         'local_var_sig_token'.
13855
13856 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13857
13858         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
13859         System.Drawing.
13860
13861         * reflection.c (mono_method_body_get_object): Handle abstract and
13862         runtime methods.
13863
13864 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
13865
13866         * marshal.c, loader.c, class-internals.h, reflection.c:
13867         store the emthod data for a wrapper in an array instead of a list.
13868
13869 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
13870
13871         * marshal.c: change the code to allocate memory more
13872         conservatively for method wrappers.
13873
13874 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13875
13876         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
13877         fields from MonoClass to the marshal info structure where they belong.
13878
13879 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13880
13881         * class.c, object.c, class-internals.h, marshal.c: rearrange
13882         some fields and tweak some types to lower memory usage.
13883
13884 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
13885
13886         * threads.c (signal_thread_state_change): Handle the case when the
13887         target thread is the current thread.
13888
13889         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
13890
13891         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
13892         emit_ptr_to_object_conv. 
13893
13894         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
13895         marshalling. Fixes #71352.
13896
13897 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13898
13899         * metadata.h, blob.h: move table enum to blob.h so it can be included
13900         in any header.
13901         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
13902         cut the size of MonoImage/MonoDynamicImage.
13903
13904 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
13905
13906         * profiler.c (mono_profiler_install_simple): Fix default arguments.
13907
13908 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
13909
13910         * reflection.c, reflection.h, icall.c: add a function to check
13911         if an attribute type is defined for a metadata object.
13912
13913 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
13914
13915         * object-internals.h: Added some needed fields from StringBuilder class.
13916         * marshal.c: Set the maxCapacity when creating a StringBuilder.
13917
13918 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
13919
13920         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
13921         threads before shutting down the runtime.
13922
13923         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
13924
13925 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13926
13927         * object-internal.h, threads.c: implement stacksize and 
13928         parameterized thread start functionality (requires
13929         matching corlib). Marked broken code for later removal.
13930
13931 2005-01-12  Martin Baulig  <martin@ximian.com>
13932
13933         * class-internals.h (MonoGenericClass): Moved the `initialized'
13934         flag to MonoDynamicGenericClass, removed `init_pending'.
13935         (MonoGenericInst): Added `is_reference' flag.
13936
13937 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
13938
13939         * reflection.c (mono_image_create_pefile): Only set the pe_offset
13940         inside the MSDOS header. Fixes #71201.
13941
13942         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
13943         gc thread.
13944         (mono_domain_finalize): Ditto.
13945
13946 2005-01-12  Martin Baulig  <martin@ximian.com>
13947
13948         * class.c (mono_get_shared_generic_class): Use the cache for
13949         non-dynamic generic classes.
13950
13951         * class-internals.h (mono_class_create_generic_2): Removed
13952         function prototype, this function is now static inside class.c.
13953
13954         * class.c (mono_class_create_generic_2): Made this static, only
13955         call it from mono_class_init() and mono_class_setup_parent().
13956         (collect_implemented_interfaces_aux): Call mono_class_init() on
13957         the interfaces we collect.
13958         (mono_class_setup_vtable): Call mono_class_init (class->parent).
13959
13960 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13961
13962         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
13963         it a real thread handle.
13964
13965         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
13966         MonoJitExceptionInfo, since each catch clause needs its own variable.
13967         
13968 2005-01-11  Dick Porter  <dick@ximian.com>
13969
13970         * image.c (mono_pe_file_open): New variant on mono_image_open()
13971         that does not set up the CLI metadata; used for FileVersionInfo so
13972         it can get the data for windows binaries too.
13973         
13974         * process.c (process_read_string_block): Don't read off the end of
13975         the StringTable block.
13976
13977         These both fix bug 70766.
13978
13979 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
13980
13981         * gc.c: set some fields to NULL at GC cleanup time.
13982         * threads.c: if we quit the main thread, call exit ().
13983
13984 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13985
13986         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
13987
13988 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
13989
13990         * threads.h, threads.c, object.c: added accessor and settor for
13991         main_thread. Handle it specially when exiting from it: wait
13992         for other foreground threads to exit.
13993
13994 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13995
13996         * process.c, verify.c: remove some bloat.
13997
13998 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13999
14000         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
14001         the calling convention to cdecl under win32.
14002
14003 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
14004
14005         * object.c (mono_object_get_size): New function to get the size of
14006         an object instance.
14007
14008         * profiler.c (simple_allocation): Use above.
14009
14010 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
14011
14012         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
14013         ves_icall_System_AppDomain_getRootDomain (as it's not required to
14014         get an appdomain by it's id and we can't assume the root's id is 0).
14015         * domain-internals.h: Change the function prototype to match.
14016         * icall.c: Change the icall table for AppDomain.
14017
14018 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
14019
14020         * locales.c (string_invariant_compare_char): Only compute
14021         GUnicodeTypes in the case where we need them.  Test for ordinality
14022         first and return if so.
14023
14024         From the commit:
14025
14026                 /*
14027                  * FIXME: here we must use the information from c1type and c2type
14028                  * to find out the proper collation, even on the InvariantCulture, the
14029                  * sorting is not done by computing the unicode values, but their
14030                  * actual sort order.
14031                  */
14032
14033 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14034
14035         * loader.c: for P/Invoke methods, allow the "Internal" shared
14036         library name to refer to the calling process symbol namespace.
14037
14038 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14039
14040         * Makefile.am: Add the security manager to the build.
14041         * security-manager.c|h: New. Initialization of the security manager.
14042
14043 2005-01-07  Dick Porter  <dick@ximian.com>
14044
14045         * threads.c: 
14046         * monitor.c: Update thread state during Monitor and WaitHandle
14047         waits.  Fixes bug 71031.
14048
14049 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14050
14051         * reflection.c (property_encode_signature): Correctly handle when the
14052         property has no methods.
14053
14054 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14055
14056         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
14057         
14058         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
14059         fields from mb, not rmb. Fixes #71017.
14060
14061         * marshal.c (emit_ptr_to_str_conv): Add support for 
14062         ByValTStr -> string conversion. Fixes #71015.
14063
14064         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
14065
14066         * mempool.c (mono_mempool_contains_addr): New helper function.
14067
14068 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * metadata.c (mono_metadata_compute_size): Fix size calculation of
14071         HasSematics encoded fields.
14072         
14073         * metadata.c (mono_type_to_unmanaged): Improve error message for 
14074         invalid string marshalling.
14075
14076         * metadata.c: Fix warnings.
14077         
14078 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14079
14080         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
14081         profiler support.
14082
14083 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14084
14085         * domain.c object.c domain-internals.h: Revert part of r38077 since the
14086         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
14087         tests.
14088
14089 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
14092         so methods containing these can be AOTed.
14093
14094 2005-01-03  Martin Baulig  <martin@ximian.com>
14095
14096         * loader.c (find_method): Removed the hack for generic instances.
14097         (method_from_memberref): If our parent is a generic instance, pass
14098         its generic type definition to find_method() and then inflate the
14099         method.
14100         (mono_get_method_constrained): Pass the generic type definition to
14101         find_method() and inflate the method later.
14102
14103         * class-internals.h (MonoStats): Added `generic_class_count'.
14104
14105         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
14106         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
14107
14108         * reflection.c (mono_custom_attrs_from_params): Don't ignore
14109         generic type definitions.
14110
14111 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14112
14113         * loader.c icall.c: Fix warnings.
14114
14115 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
14116
14117         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
14118         blittable types. Fixes #70864.
14119
14120 2004-12-29  Martin Baulig  <martin@ximian.com>
14121
14122         * icall.c
14123         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
14124
14125         * reflection.c (mono_method_get_object): Create a
14126         "System.Reflection.MonoGenericMethod" for inflated methods; don't
14127         call mono_get_inflated_method().
14128
14129         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
14130
14131 2004-12-27  Martin Baulig  <martin@ximian.com>
14132
14133         * class-internals.h (MonoMethod): Added `is_inflated' flag.
14134         (MonoMethodInflated): Added `inflated' field.
14135
14136         * class.c (mono_class_inflate_generic_method): Don't really
14137         inflate the method here; just set the `is_inflated' flag in the
14138         MonoMethod.
14139         (mono_class_get_inflated_method): Actually inflate the method here
14140         if it's not already inflated; we use the MonoMethodInflated's new
14141         `inflated' field as a cache.
14142
14143 2004-12-26  Martin Baulig  <martin@ximian.com>
14144
14145         * class.c
14146         (inflate_generic_class): Moved some code out of inflate_generic_type().
14147         (mono_class_inflate_generic_method): If we're already inflated,
14148         inflate the context and use the declaring method; ie. make sure
14149         the declaring method of an inflated method is always the generic
14150         method definition.
14151         (mono_class_create_from_typedef): Create
14152         `class->generic_container->context->gclass'.
14153
14154 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14155
14156         * metadata-internals.h, marshal.c, reflection.c: More
14157         MonoGHashTable->GHashTable.
14158
14159         * domain-internals.h, class.c: Change MonoGHashTable's into
14160         GHashTables for some cases where no gc stuff is used
14161
14162         All users: update apis
14163
14164 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
14165
14166         * metadata.c (builtin_types): Make this `const'. Makes this get
14167         put into the shareable section.
14168         (mono_metadata_init): Casts to make gcc happy.
14169
14170 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
14173
14174 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
14175
14176         * icall.c: Added an internal call to retrieve the position and length
14177         of assembly-level declarative security attributes (RequestMinimum, 
14178         RequestOptional and RequestRefuse). This is used by the Assembly class
14179         to re-create the corresponding permission sets.
14180
14181 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
14182
14183         * marshal.c: fix the stelemref wrapper to be type correct
14184         (and faster).
14185
14186 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14187
14188         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
14189         to do key & 0x7fffffff. Hashtable already does this. It just
14190         results in longer code.
14191
14192 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
14193
14194         * appdomain.c: Bump corlib version.
14195         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
14196         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
14197         * reflection.c|h: Add functions to get declarative security infos
14198         (blob position and length) for assemblies, classes and methods.
14199
14200 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
14201
14202         * reflection.c: sort the constant table (bug #70693).
14203
14204 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
14205
14206         * object-internals.h, threads.c, domain.c: add accessors for
14207         the MonoThread and MonoDomain tls keys.
14208
14209 2004-12-18  Martin Baulig  <martin@ximian.com>
14210
14211         * class.c (inflate_generic_type): If we're inflating a generic
14212         instance, set `ngclass->context->container = context->container';
14213         ie. the container we inflated into.
14214
14215         * metadata.c (mono_metadata_parse_generic_param): Reflect above
14216         inflate_generic_type() changes.
14217
14218 2004-12-17  Martin Baulig  <martin@ximian.com>
14219
14220         * class-internals.h
14221         (MonoGenericClass): Replaced `MonoType *generic_type' with
14222         `MonoClass *generic_class'.  Removed `dynamic_info'; if
14223         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
14224         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
14225
14226 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
14227
14228         * exception.c (mono_exception_from_token): New helper function.
14229
14230 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
14231
14232         * assembly.c (mono_assembly_load_with_partial_name): Call 
14233         mono_assembly_loaded before invoking the preload hooks. Fixes
14234         #70564.
14235
14236         * object-internals.h (MonoThread): Change culture_info and 
14237         ui_culture_info into an array.
14238
14239         * threads.c: Cache culture info objects from more than one appdomain.
14240
14241         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
14242         current UI culture.
14243
14244 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
14245
14246         * threads.h threads.c appdomain.c: Clear the culture_info field of
14247         all threads during unloading if they point to an object in the dying
14248         appdomain.
14249
14250 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
14251
14252         * culture-info.h (TextInfoEntry): New struct
14253         * object-internals.h: sync with managed
14254         * locales.c: fill the `text_info_data' field
14255         * culture-info-tables.h: update
14256
14257 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
14258
14259         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
14260         collector.
14261
14262 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
14263
14264         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
14265         (ves_icall_ModuleBuilder_getMethodToken): Ditto
14266
14267 2004-12-12  Martin Baulig  <martin@ximian.com>
14268
14269         * mono-debug-debugger.c (write_type): If we're an enum and the
14270         builtin types have already been initialized, call mono_class_init().
14271
14272 2004-12-11  Martin Baulig  <martin@ximian.com>
14273
14274         * metadata.c (mono_metadata_load_generic_params): Added
14275         `MonoGenericContainer *parent_container' argument; automatically
14276         compute `container->is_method'; pass the correct owner to
14277         get_constraints().      
14278
14279         * reflection.c (compare_genericparam): Sort the GenericParam table
14280         according to increasing owners. 
14281
14282 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
14283
14284         * profiler.c: allow disabling the default profiler.
14285
14286 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
14287
14288         * decimal.c, icall.c: allow disabling System.Decimal support.
14289
14290 2004-12-09  Marek Safar <marek.safar@seznam.cz>
14291
14292         * reflection.c: Add support for null attribute arguments.
14293
14294 2004-12-09  Martin Baulig  <martin@ximian.com>
14295
14296         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
14297         names to get rid of compiler warnings.
14298
14299 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14300
14301         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
14302         mono_marshal_load_type_info (). Fixes #69625.
14303         (mono_marshal_get_ptr_to_struct): Likewise.
14304
14305 2004-12-08  Martin Baulig  <martin@ximian.com>
14306
14307         * mono-debug.h: Bumped version number to 47.
14308
14309         * mono-debug-debugger.c
14310         (mono_debugger_event_handler, mono_debugger_event): Take two
14311         guint64 arguments insteed of a gpointer and a guint32.  
14312
14313 2004-12-08  Martin Baulig  <martin@ximian.com>
14314
14315         * debug-mono-symfile.h
14316         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
14317         `address' to `native_offset'.
14318
14319 2004-12-08  Martin Baulig  <martin@ximian.com>
14320
14321         * class.c (mono_class_create_from_typespec): Only inflate if we
14322         either have `context->gclass' or `context->gmethod'.
14323
14324 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14325
14326         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
14327
14328         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
14329
14330         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
14331
14332         * reflection.c (mono_assembly_get_object): Remove the workaround put
14333         in for the release.
14334         
14335         * appdomain.c: Use the corlib_internal field from MonoAssembly.
14336
14337         * appdomain.c: Bump corlib version.
14338
14339         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
14340         be visible in other appdomains.
14341
14342 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
14343
14344         * threads.c: Interlocked inc and dec for longs were messed up,
14345         use a KISS based impl for this. Fixes 70234
14346
14347 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
14348
14349         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
14350
14351 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
14352
14353         * icall.c: fix to follow policy not to allow struct
14354         arguments in icalls.
14355
14356 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14357
14358         * process.c: make the patch that handles spaces in file paths work
14359         on mono/windows too.
14360
14361 2004-12-06  Martin Baulig  <martin@ximian.com>
14362
14363         * class.c (mono_class_create_generic): Call
14364         mono_class_setup_supertypes() if we're dynamic.
14365         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
14366
14367 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
14368
14369         * object-internals.h: Add new fields to MonoThread.
14370
14371         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14372
14373         * icall.c threads-types.h threads.c: Add new icalls.
14374
14375         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
14376
14377         * object-internals.h (MonoReflectionAssembly): Sync object layout with
14378         managed side.
14379
14380         * appdomain.c: Bump corlib version.
14381
14382         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
14383         internal assemblies. Fixes #69181.
14384
14385 2004-12-05  Martin Baulig  <martin@ximian.com>
14386
14387         * class.c (mono_class_inflate_generic_signature): Make this a
14388         no-op if `context' is NULL or we don't have any type parameters;
14389         also copy `sentinelpos'.        
14390
14391 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
14392
14393         * image.c: Add unbox_wrapper_cache.
14394
14395         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
14396
14397         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
14398         function generator.
14399         
14400         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
14401         Fixes #70173.
14402
14403         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
14404         
14405 2004-12-04  Martin Baulig  <martin@ximian.com>
14406
14407         * loader.c (mono_method_get_signature_full): New public function;
14408         like mono_method_get_signature(), but with an additional
14409         `MonoGenericContext *' argument.
14410
14411         * class.c (mono_class_inflate_generic_signature): Formerly known
14412         as inflate_generic_signature(); make this public.
14413
14414 2004-12-04  Martin Baulig  <martin@ximian.com>
14415
14416         * metadata.c
14417         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
14418         instead of a `MonoGenericContainer *'.  
14419         (mono_metadata_parse_array_full): Likewise.
14420         (mono_metadata_parse_signature_full): Likewise.
14421         (mono_metadata_parse_method_signature_full): Likewise.
14422         (mono_metadata_parse_generic_inst): Likewise.
14423         (mono_metadata_parse_generic_param): Likewise.
14424         (mono_metadata_parse_mh_full): Likewise.
14425         (mono_type_create_from_typespec_full): Likewise.
14426
14427 2004-12-03  Martin Baulig  <martin@ximian.com>
14428
14429         * class-internals.h (MonoGenericContainer): Replaced the
14430         `MonoGenericContext * pointer with a `MonoGenericContext'
14431         structure and made it the first element.
14432
14433 2004-12-03  Martin Baulig  <martin@ximian.com>
14434
14435         * class.c
14436         (inflate_generic_type): Set the `context->container' when creating
14437         a new MonoGenericContext.
14438         (mono_class_inflate_generic_method): Likewise.
14439         (mono_class_create_from_typespec): Just use `context->container'
14440         to get the container.
14441
14442         * loader.c (method_from_methodspec): Set `context->parent' from
14443         `context->container' - and if that's a method container, use its
14444         parent.  Also set the `context->container' when creating a new
14445         MonoGenericContext.
14446         (mono_get_method_from_token): Use just `context->container' to get
14447         the container.
14448
14449         * metadata.c (do_mono_metadata_parse_generic_class): Also set
14450         `gclass->context->container'.
14451
14452         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
14453         the `context->container' when creating a new MonoGenericContext.
14454
14455 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
14456
14457         * reflection.c (compare_genericparam): Sort params with identical
14458         owner by their number. Fixes gen-111 on sparc.
14459
14460 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
14463         around the domain changes.
14464
14465         * appdomain.c (mono_domain_unload): Handle the case when the thread
14466         calling Unload is itself being aborted during unloading. Fixes #70022.
14467
14468         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
14469
14470         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
14471         checkpoint_func as an icall so it gets a wrapper.
14472         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
14473         in the cross-appdomain wrappers too.
14474
14475         * threads.c (mono_thread_has_appdomain_ref): Make this public.
14476
14477         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
14478
14479         * reflection.c: Fix some memory leaks.
14480         
14481 2004-12-02  Martin Baulig  <martin@ximian.com>
14482
14483         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
14484
14485         * metadata.c (generic_class_cache): New static hashtable.
14486         (mono_metadata_lookup_generic_class): New public method.
14487
14488 2004-12-02  Martin Baulig  <martin@ximian.com>
14489
14490         * class.c (mono_class_create_from_typedef): Call
14491         mono_class_setup_parent() and mono_class_create_mono_type() before
14492         parsing the interfaces.
14493
14494 2004-12-02  Martin Baulig  <martin@ximian.com>
14495
14496         * metadata.c (generic_inst_cache): New static hashtable.
14497         (mono_metadata_lookup_generic_inst): New public function.
14498         (mono_metadata_inflate_generic_inst): New public function.
14499         (mono_metadata_parse_generic_inst): New public function.
14500         (do_mono_metadata_parse_generic_class): Use the new
14501         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
14502         since this'll also use the cache.
14503
14504         * reflection.c (mono_reflection_bind_generic_method_parameters):
14505         Use mono_metadata_lookup_generic_inst() to use the new cache.
14506
14507         * class.c (inflate_mono_type): Use
14508         mono_metadata_inflate_generic_inst() to inflate a generic
14509         instance; this'll also use the new cache.
14510
14511         * loader.c (method_from_methodspec): Use
14512         mono_metadata_parse_generic_inst() and
14513         mono_metadata_inflate_generic_inst() rather than parsing it
14514         manually, so we can use the new cache.
14515
14516 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14517
14518         * threads.c (wait_for_tids): Do not incorrectly free threads when 
14519         the wait times out.
14520
14521 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14522
14523         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
14524         iter->args based on whether parameters are passed in registers (i.e.
14525         MONO_ARCH_REGPARMS is defined)
14526
14527 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
14528
14529         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
14530         the exception message. Fixes #70070.
14531         (method_from_methodspec): Fix warnings.
14532
14533 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14534
14535         * process.c: (complete_path) return the path quoted
14536
14537 2004-12-01  Martin Baulig  <martin@ximian.com>
14538
14539         * class-internals.h (MonoGenericInst): New structure.
14540         (MonoGenericClass): Replaced `type_argc', `type_argv' and
14541         `is_open' with `MonoGenericInst *inst'.
14542         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
14543         `is_open' with `MonoGenericInst *inst'.
14544
14545 2004-11-30  Martin Baulig  <martin@ximian.com>
14546
14547         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
14548
14549         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
14550         to `generic_class_cache'.
14551
14552         * metadata.c
14553         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
14554         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
14555         (mono_generic_inst_is_valuetype): Renamed to
14556         mono_generic_class_is_valuetype().
14557
14558         * class-internals.h
14559         (MonoGenericInst): Renamed to MonoGenericClass.
14560         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
14561         (MonoClass): Renamed `generic_inst' to `generic_class'.
14562         (MonoGenericContext): Renamed `ginst' to `gclass'.
14563
14564         * object-internals.h
14565         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
14566
14567         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
14568         mono_reflection_generic_class_initialize().
14569
14570         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
14571         now known as "System.Reflection.MonoGenericClass".
14572         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
14573
14574 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
14575
14576         * class-internals.h: Added a flag field to MonoClass to cache the
14577         declarative security attributes actions associated with the class.
14578         * domain-internals.h: Added booleans to MonoJitInfo to cache the
14579         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
14580         applicable to the JITted method.
14581         * reflection.c|h: Added functions to extract (as flags) which security
14582         actions are available (declaratively) for a method, class or assembly.
14583         * metadata.c|h: Added functions to search the declarative security
14584         table in the metadata.
14585         
14586 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
14587
14588         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
14589         EXPORTEDTYPES are already in the class name cache, so there is no
14590         need to add extra code here to look at them. Just removes a bit of
14591         cruft.
14592
14593         (ves_icall_System_Environment_get_TickCount): No need for #if
14594         WINDOWS. We already have the code in io-layer.
14595
14596 2004-11-28  Martin Baulig  <martin@ximian.com>
14597
14598         * loader.c
14599         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
14600         Fixes gen-112.cs.
14601
14602 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
14603
14604         * assembly.c (do_mono_assembly_open): Instead of having a
14605         conditional WITH_BUNDLE, incorporate support for bundles here, by
14606         having a global `bundles' variable holding a pointer to the actual
14607         bundles. 
14608
14609         (mono_register_bundled_assemblies): New API call used by the
14610         bundle code. 
14611
14612         See mkbundle.1 for details.
14613         
14614 2004-11-27  Martin Baulig  <martin@ximian.com>
14615
14616         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
14617         the vtable for generic methods.
14618
14619 2004-11-26  Martin Baulig  <martin@ximian.com>
14620
14621         * metadata.c
14622         (mono_metadata_generic_method_hash): New public function.
14623         (mono_metadata_generic_method_equal): Likewise.
14624
14625         * class-internals.h
14626         (MonoGenericContainer): Added `GHashTable *method_hash'.
14627
14628         * reflection.c (ReflectionMethodBuilder): Added
14629         `MonoGenericContainer *generic_container'.
14630         (reflection_methodbuilder_to_mono_method): Don't create a new
14631         MonoGenericContainer each time we're called.
14632         (mono_reflection_bind_generic_method_parameters): Use
14633         `container->method_hash' to cache the results so we don't create a
14634         different method if we're called several times with the same
14635         arguments.
14636
14637         * loader.c (method_from_methodspec): Use the new
14638         `container->method_hash' here, too.
14639
14640 2004-11-26  Martin Baulig  <martin@ximian.com>
14641
14642         * class.c (inflate_generic_signature): Correctly compute
14643         `res->has_type_parameters'.
14644         (mono_class_vtable): Use the `has_type_parameters' flag to
14645         determine whether we're a generic method.
14646
14647         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
14648
14649 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14650
14651         * object.c (mono_runtime_run_main): Fix a small memory leak.
14652
14653 2004-11-25  Martin Baulig  <martin@ximian.com>
14654
14655         * class.c (set_generic_param_owner): Fixed the loop.
14656
14657 2004-11-25  Martin Baulig  <martin@ximian.com>
14658
14659         * object.c (mono_class_vtable): Don't create any JIT wrappers for
14660         generic methods.
14661
14662 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14663
14664         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
14665         names. Fixes #69787.
14666
14667 2004-11-24  Martin Baulig  <martin@ximian.com>
14668
14669         * class.c (mono_class_create_generic_2): If we don't have a
14670         `ginst->parent', inflate `gklass->parent' to get our parent.
14671
14672 2004-11-24  Martin Baulig  <martin@ximian.com>
14673
14674         * reflection.c (compare_genericparam): Correctly sort the
14675         GenericParam table; fixes #69779.
14676
14677 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
14678
14679         * reflection.c: When writing a PE file, don't create a huge
14680         buffer in memory. Just write the arrays we have to the file.
14681         This reduces memory usage.
14682
14683         * metadata-internals.h: MonoDynamicStream pefile is no longer used
14684         globally.
14685
14686 2004-11-17  Martin Baulig  <martin@ximian.com>
14687
14688         * class.c (mono_class_init): Don't setup `class->parent' for
14689         dynamic instances; moved this to mono_class_generic_2().
14690         (mono_class_create_generic): Also set `klass->inited' for dynamic
14691         generic instances.
14692         (mono_class_create_generic_2): Don't do anything for dynamic
14693         generic instances.  Set `klass->parent' here and also call
14694         mono_class_setup_parent() here. 
14695
14696         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
14697         `MonoType *parent' argument; set `ginst->parent' before calling
14698         mono_class_create_generic_2(), so we set the correct parent.
14699
14700 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
14701
14702         * reflection.c: allow getting attributes from ModuleBuilder
14703         (used by ikvm).
14704
14705 2004-11-17  Martin Baulig  <martin@ximian.com>
14706
14707         * class.c (mono_class_create_from_typedef): If a type parameter is
14708         inherited from an outer class, set its owner to that class.
14709
14710 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
14711
14712         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
14713           for (int*) written size. This fixes bug #69592.
14714
14715 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14716
14717         * icall.c: Added IsAuthenticodePresnet internal call.
14718         * image.c|h: New function that check a MonoImage for an Authenticode
14719         signature in the certificate PE data directory.
14720         * security.c|h: New internal call to ask the runtime if an 
14721         Authenticode signature seems referenced in the PE header.
14722
14723 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
14724
14725         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
14726
14727         * reflection.c (mono_image_create_pefile): Free the assembly streams
14728         after writing out the assembly file.
14729
14730         * object.c (mono_runtime_run_main): Fix small memory leak.
14731
14732         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
14733         property access modifiers. Fixes #69389.
14734
14735 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14736
14737         * domain.c, object.c, object-internals.h, domain-internals.h,
14738         object.h, marshal.c: keep dynamic code info per domain.
14739
14740 2004-11-15  Martin Baulig  <martin@ximian.com>
14741
14742         * class.c (mono_type_get_name_recurse): Put type arguments in
14743         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
14744         see bug #68387.
14745
14746 2004-11-15  Martin Baulig  <martin@ximian.com>
14747
14748         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
14749         (mono_class_setup_vtable): When computing `the_cname' for a
14750         generic instance, don't include the namespace since we'd otherwise
14751         add it twice.
14752
14753 2004-11-15  Martin Baulig  <martin@ximian.com>
14754
14755         * class.c (mono_class_create_generic): Changed return type to void.
14756         (mono_class_create_generic_2): New public function; setup
14757         `class->method', `class->field' and `class->interfaces' here
14758         instead of in mono_class_init().
14759
14760         * class.h (mono_class_create_generic): Moved to class-internals.h.
14761
14762 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
14763
14764         * reflection.c (mono_image_create_pefile): take a file HANDLE.
14765         rather than writing to memory, write to this file. Right now,
14766         we are just writting into a buffer, and copying that. However
14767         we can avoid the buffer later.
14768
14769         (mono_dynamic_stream_reset): new function
14770
14771         * icall.c, object-internals.h: update for the above.
14772
14773 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
14774
14775         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
14776         have been using gc'd memory. First it is slower, unlikely
14777         the comment in the source code said, secondly, it increases
14778         our footprint to do it in the gc.
14779
14780         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
14781         the method so that it does not have to copy to managed code.
14782
14783 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14784
14785         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
14786
14787 2004-11-12  Martin Baulig  <martin@localhost>
14788
14789         * reflection.c (mono_image_create_token): Allow generic method
14790         definitions here, since they may appear in an `.override'; see
14791         gen-98/gen-99 for an example.
14792
14793 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
14794
14795         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
14796         #69365.
14797
14798         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
14799         descriptive.
14800
14801 2004-11-11  Martin Baulig  <martin@ximian.com>
14802
14803         * class.c (mono_class_setup_vtable): In an explicit interface
14804         implementation, the method name now includes the arity.
14805
14806 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
14807
14808         * object.c (mono_array_full_copy): Fix warning.
14809
14810 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
14811
14812         * appdomain.c: Removed look_for_method_by_name(). Use the new method
14813         mono_class_get_method_from_name() instead.
14814         
14815         * class-internals.h: Added two new types of wrappers. 
14816         Added MonoRemotingTarget enum. Added new trampoline function type, which
14817         takes an additional MonoRemotingTarget value as parameter, so it is
14818         possible to request a trampoline for a specific target.
14819         
14820         * class.c: Added new mono_class_get_method_from_name() method.
14821         
14822         * class.h: In MonoRemoteClass, we can have now to vtables, one for
14823         general remoting sinks and one specific for cross domain calls.
14824         
14825         * debug-helpers.c: Added new wrapper names.
14826         
14827         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
14828         of a remote class.
14829         
14830         * image.c: Porperly delete value objects form the remoting invoke hashtable.
14831         
14832         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
14833         with several other methods (mono_marshal_get_xappdomain_dispatch,
14834         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
14835         and others) can generate a fast remoting wrapper for cross domain calls.
14836         More information can be found in docs/remoting.
14837         Other changes: Removed mono_find_method_by_name, and used
14838         mono_class_get_method_from_name instead.
14839         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
14840         is stored in the remoting invoke hashtable.
14841         
14842         * marshal.h: published the new method for getting the xdomain wrapper,
14843         and also added a method for getting the adequate wrapper for a given
14844         method and target.
14845         
14846         * object-internals.h, object.c: Added a couple of methods for capying and
14847         cloning arrays.
14848         Modified mono_install_remoting_trampoline, which takes the new remoting
14849         trampoline that has a remoting target as parameter.
14850         mono_class_proxy_vtable now also takes a remoting target as parameter, and
14851         will return the most suitable vtable for the target.
14852         Added mono_remote_class_vtable, which returns the vtable of a remote class
14853         (which can be the normal remoting vtable or the xdomain vtable).
14854         
14855         * threads.c: the xdomain invoke and dispatch wrappers must also be
14856         protected against interruptions.
14857
14858 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14859
14860         * icall.c: use memmove in BlockCopyInternal when the source and
14861         destination arrays are the same.
14862
14863 2004-11-09  Martin Baulig  <martin@ximian.com>
14864
14865         * class-internals.h (MonoGenericContainer): Removed `method' and
14866         `signature', replaced them with `is_method' and `is_signature'
14867         flags.  Added `context'.
14868
14869         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
14870         instead of a `MonoGenericContainer *'.
14871
14872         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
14873         for dynamic type parameters.
14874         (mono_metadata_load_generic_params): Setup `container->context'.
14875
14876         * reflection.c (mono_reflection_setup_generic_class): Setup
14877         `tb->generic_container->context'.
14878         (do_mono_reflection_bind_generic_parameters): Use
14879         mono_class_inflate_generic_type() to correctly inflate types,
14880         rather than using our own hack just for MONO_TYPE_VAR.
14881
14882 2004-11-09  Martin Baulig  <martin@ximian.com>
14883
14884         * class.c (mono_class_inflate_generic_method): Small fix; don't
14885         crash here.
14886
14887         * icall.c
14888         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
14889         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
14890         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
14891         (ves_icall_Type_BindGenericParameters): Likewise.
14892         (ves_icall_Type_get_IsGenericInstance): Likewise.
14893         (ves_icall_Type_GetGenericParameterPosition): Likewise.
14894         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
14895         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
14896         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14897
14898 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14899
14900         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
14901         assembly versions and public key tokens. Fixes #69113.
14902
14903 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
14904
14905         * metadata.c: fix bug introduced with the type cache changes
14906         on 2004-11-06.
14907
14908 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
14909
14910         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
14911         the MonoClass pointer instead of the token in exception clauses.
14912         * reflection.c: updates for the above and make the code not depend
14913         on the structure of MonoExceptionClause.
14914
14915 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14916
14917         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14918         Add support for dynamic assemblies. Fixes #69114.
14919
14920         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
14921
14922 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
14923
14924         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
14925         since most only those methods use it. the code member of
14926         MonoMethodPInvoke was dead, so that can be removed too. Also,
14927         remove inline_count (again, not used), and move slot so that it
14928         can share bits with some other flags. This saves 8 bytes in the
14929         structure and gives us about 50 kb back for mcs helloworld.cs
14930
14931         * *.[ch]: Do naming changes for the above.
14932
14933         * loader.c (mono_method_get_header): Lazily init the header
14934         on first access.
14935         (mono_get_method_from_token): don't init the header here
14936         (mono_free_method): the header may never be allocated
14937
14938         Overall, this saves 150 kb of unmanaged allocations
14939         for mcs helloworld.cs. That accounts for 10% of the unmanaged
14940         memory at runtime.
14941         
14942         * loader.c, loader.h (mono_method_get_header): new accessor.
14943
14944         * *.[ch]: use the above method. Prepares us to lazily load
14945         the header.
14946
14947         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
14948         three warnings, which are actual bugs (see 69206).
14949
14950         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
14951         unused. Saves a cool 4 bytes / method.
14952
14953 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
14954
14955         * metadata.c (builtin_types): Add types for System.Object here.
14956         (mono_metadata_parse_type_full): Cache MonoType*'s that are
14957         for a class or valuetype from klass->this_arg or klass->byval_arg.
14958
14959         On mcs for a hello world, this gets us down from 21836 MonoType's
14960         to 14560.
14961
14962         (mono_metadata_free_type): Account for the above change.
14963
14964 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
14965
14966         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
14967         exception instead of asserting if name is null.
14968         (ves_icall_System_AppDomain_GetData): Ditto.
14969
14970 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
14971
14972         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
14973         EnumBuilder.
14974
14975         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
14976         Return NULL when the domain does not have entry_assembly set.
14977
14978         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
14979         Add a 'resource_modules' argument.
14980         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
14981
14982         * reflection.c (mono_reflection_create_runtime_class): Move setting
14983         of wastypebuilder here, so mono_get_type_object () returns a MonoType
14984         for enums too.
14985
14986         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
14987         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
14988         Throw an ArgumentNullException if 'ptr' is null.
14989
14990         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
14991         assemblies here. Fixes #69020.
14992
14993 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
14994
14995         * reflection.c (build_compressed_metadata): Fix the previous patch for
14996         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
14997         the stack.
14998
14999 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
15000
15001         * assembly.c (mono_assembly_names_equal): Allow a match if one of
15002         the cultures is false. Fixes #69090.
15003
15004         * reflection.c (build_compressed_metadata): Fix invalid memory read 
15005         detected by valgrind.
15006         
15007         * reflection.c (mono_reflection_get_type): Avoid triggering a 
15008         TypeResolve multiple times for the same type. Fixes #65577.
15009
15010 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
15011
15012         * marshal.c: Avoid using ldftn to call managed functions. It is
15013         much slower than just a call.
15014
15015         * reflection.c (mono_module_get_object): free the basename we
15016         allocate here from glib.
15017         
15018         * reflection.c (ensure_runtime_vtable): make sure to free
15019         overrides.  Also, we were allocating an array of MonoMethod not an
15020         array of MonoMethod*.
15021
15022         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
15023
15024         * image.c (mono_image_close): free image->guid here.
15025
15026 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15027
15028         * reflection.c: Fix some spec conformance issues with the PE file
15029         structures so mcs compiled apps run on the Net 2.0 beta.
15030
15031 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
15032
15033         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
15034         Implement this. Fixes #67264.
15035
15036         * debug-helpers.h debug-helpers.c marshal.c: Move 
15037         mono_find_method_by_name to debug-helpers.c.
15038
15039 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
15040
15041         * object.c (mono_release_type_locks): type_initialization_hash is
15042         a GHashTable.
15043
15044         * reflection.c object.c object-internals.h: Fix warnings.
15045
15046         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
15047         without accessors. Fixes #61561.
15048
15049         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
15050         application base from the root domain if not set. Fixes #65641.
15051         (mono_runtime_init): Fix warning.
15052
15053 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15054
15055         * appdomain.c: call mono_thread_pool_init.
15056         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
15057         of worker threads based on the number of CPUs and the environment
15058         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
15059         for non-windows (windows) systems.
15060
15061 2004-10-27  Chris Toshok  <toshok@ximian.com>
15062
15063         * mono-debug-debugger.c (write_class): don't call mono_class_init
15064         here, as even with the check for (!klass->init_pending), we get
15065         into a situation where we're hitting cycles in class
15066         initialization.  Fixes #68816.
15067
15068 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15069
15070         * image.c: Avoid overwriting values in the loaded_images_hash when an
15071         assembly is loaded multiple times. Fixes #61152.
15072
15073         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
15074         so multiple satellite assemblies for the same name can be loaded.
15075         Fixes #68259.
15076
15077         * mono_domain_assembly_preload: Actually return the loaded assembly, 
15078         not NULL.
15079
15080         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
15081         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
15082
15083         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
15084         pending finalizers are not invoked after the appdomain has been 
15085         unloaded. Fixes #67862.
15086
15087 2004-10-22  Martin Baulig  <martin@ximian.com>
15088
15089         * mono-debug-debugger.c
15090         (mono_debugger_runtime_invoke): Don't box valuetypes.
15091
15092 2004-10-22  Chris Toshok  <toshok@ximian.com>
15093
15094         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
15095         don't hide private methods.
15096
15097 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
15098
15099         * icall.c: Allows the runtime to "share" (when known) the public key
15100         token of an assembly. This avoid the need to recalculate the token 
15101         (from the public key) in managed code.
15102
15103 2004-10-21  Chris Toshok  <toshok@ximian.com>
15104
15105         * debug-helpers.c (append_class_name): argh, revert last patch.
15106         
15107 2004-10-21  Chris Toshok  <toshok@ximian.com>
15108
15109         * debug-helpers.c (append_class_name): use '+' as the delimiter,
15110         not '/', so that it matches what the debugger uses to look up
15111         methods.
15112
15113 2004-10-21  Martin Baulig  <martin@ximian.com>
15114
15115         * mono-debug-debugger.c (mono_debugger_throw_exception): New
15116         public method; this is called each time an exception is thrown and
15117         allows the debugger to use exception catch points.
15118
15119 2004-10-21  Martin Baulig  <martin@ximian.com>
15120
15121         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
15122         the stack pointer and the exception object in some struct and pass
15123         that to the debugger.
15124
15125 2004-10-21  Chris Toshok  <toshok@ximian.com>
15126
15127         * mono-debug-debugger.c (do_write_class): add instance/static
15128         event support.  We don't expose "raise" or "other" yet.
15129         (event_is_static): new method.
15130
15131 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
15132
15133         * mono-debug-debugger.c
15134         (mono_debugger_handle_exception): Remove
15135         bogus return value for fussy compilers.
15136
15137 2004-10-20  Martin Baulig  <martin@ximian.com>
15138
15139         * mono-debug-debugger.c
15140         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
15141         (mono_debugger_handled_exception): Likewise.
15142
15143 2004-10-20  Martin Baulig  <martin@ximian.com>
15144
15145         * mono-debug-debugger.h (MonoDebuggerEvent): Added
15146         MONO_DEBUGGER_EVENT_EXCEPTION.
15147
15148         * mono-debug-debugger.c (mono_debugger_handle_exception): New
15149         public function to send the debugger a notification for an
15150         exception and inform it about a catch/finally clause.
15151
15152 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
15153
15154         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
15155         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
15156         fix 2.95 build. 
15157
15158         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
15159
15160 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15161
15162         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
15163         marshalled as [In,Out]. Fixes #58325.
15164
15165 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
15166
15167         * reflection.c (mono_method_body_get_object): Implement some fields.
15168
15169 2004-10-12  Martin Baulig  <martin@ximian.com>
15170
15171         * reflection.c (mono_reflection_bind_generic_parameters): Small
15172         fix, correctly retrieve our parent from a generic instance.
15173
15174 2004-10-12  Martin Baulig  <martin@ximian.com>
15175
15176         * metadata.c (mono_metadata_generic_param_equal): We always have
15177         an owner.
15178
15179         * class.c
15180         (mono_class_from_generic_parameter): We need to have an owner.
15181         (my_mono_class_from_generic_parameter): Likewise.
15182
15183         * reflection.c (mono_reflection_setup_generic_class): Renamed to
15184         mono_reflection_create_generic_class() and added a new
15185         mono_reflection_setup_generic_class().  
15186         (mono_reflection_initialize_generic_param): If we're a nested
15187         generic type and inherited from the containing class, set our
15188         owner to the outer class.
15189
15190 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
15191
15192         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
15193
15194         * reflection.c (mono_method_body_get_object): New function to create
15195         a MethodBody object.
15196
15197         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
15198
15199 2004-10-11  Martin Baulig  <martin@ximian.com>
15200
15201         * metadata.c (_mono_metadata_type_equal): Renamed to
15202         do_mono_metadata_type_equal() and made static.
15203
15204 2004-10-11  Martin Baulig  <martin@ximian.com>
15205
15206         * appdomain.c: Bump corlib version number to 28.
15207
15208 2004-10-10  Martin Baulig  <martin@ximian.com>
15209
15210         * class-internals.h
15211         (MonoGenericInst): Added `MonoGenericContainer *container'.
15212         (MonoGenericMethod): Likewise.
15213         (MonoGenericContext): Likewise.
15214         (MonoGenericParam): Added `MonoGenericContainer *owner'.
15215
15216         * metadata.c
15217         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
15218         (do_mono_metadata_parse_generic_inst): Likewise.
15219         (mono_metadata_parse_type_full): New public method.  This is the actual
15220         mono_metadata_parse_type() implementation - with an additional
15221         `MonoGenericContainer *' argument.
15222         (mono_metadata_parse_array_full): Likewise.
15223         (mono_metadata_parse_signature_full): Likewise.
15224         (mono_metadata_parse_method_signature_full): Likewise.
15225         (mono_metadata_parse_mh_full): Likewise.
15226         (mono_type_create_from_typespec): Likewise.
15227         (mono_metadata_interfaces_from_typedef_full): New public method;
15228         this is similar to the other _full() methods, but we take a
15229         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
15230         (mono_metadata_parse_generic_param): Take an additional
15231         `MonoGenericContainer *' argument and lookup the MonoGenericParam
15232         from that container.
15233         (mono_metadata_generic_param_equal): New static method to compare
15234         two type parameters.
15235         (_mono_metadata_type_equal): New static method; takes an
15236         additional `gboolean signature_only' argument - if true, we don't
15237         compare the owners of generic parameters.
15238         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
15239         with a TRUE argument - do a signature-only comparision.
15240
15241         * loader.c: Use the new _full() methods and pass the
15242         MonoGenericContainer to them.
15243
15244         * object-internals.h (MonoReflectionTypeBuilder): Added
15245         `MonoGenericContainer *generic_container' field.
15246         (MonoReflectionMethodBuilder): Likewise.
15247
15248 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
15251         case initial images of dynamic assemblies.
15252
15253         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
15254
15255         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
15256
15257         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
15258         length of event->other array.
15259         (typebuilder_setup_events): Ditto.
15260
15261         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
15262         'assembly_by_name' and add an 'assemblies' list.
15263
15264         * assembly.h assembly.c: Add a new search hook for determining whenever
15265         an assembly is already loaded. Use this instead of searching in the
15266         loaded_assemblies list.
15267
15268         * domain.c appdomain.c: Implement the new search hook so loaded 
15269         assemblies are now scoped by appdomain. Fixes #67727.
15270
15271 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
15272
15273         * threads.c (mono_thread_attach): Initialize synch_lock field so
15274         mono_thread_detach works again.
15275
15276         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
15277         'lib' too. Fixes #63130.
15278
15279 2004-10-06  Jackson Harper  <jackson@ximian.com>
15280
15281         * culture-info-tables.h: regenerated.
15282
15283 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
15284
15285         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
15286         implemented by other interfaces in the result. Fixes #65764.
15287         
15288         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15289         Handle unloadable modules without crashing.
15290
15291         * image.c (load_modules): Revert the previous patch since modules must
15292         have a fixed index inside the array.
15293         
15294         * image.c (load_modules): Don't include native modules in the modules
15295         array.
15296
15297 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15298
15299         * reflection.h: Add param_defaults field.
15300
15301         * reflection.c: Add support for parameter defaults in dynamic methods.
15302         Fixes #64595.
15303
15304         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
15305         an empty string when a type has no namespace. Fixes #64230.
15306
15307 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
15308
15309         * tabledefs.h: Added "internal" security actions to support non-CAS
15310         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
15311         Note: they do not seems to be used anymore in 2.0 (new metadata format)
15312
15313 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
15314
15315         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
15316         constructor of abstract class. Fixes #61689.
15317
15318 2004-10-04  Martin Baulig  <martin@ximian.com>
15319
15320         * class-internals.h (MonoGenericContainer): New type.
15321         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
15322         `MonoGenericContainer *generic_container'.
15323         (MonoClass): Replaced `gen_params' and `num_gen_params' with
15324         `MonoGenericContainer *generic_container'.
15325
15326         * metadata.c (mono_metadata_load_generic_params): Return a
15327         `MonoGenericContainer *' instead of a `MonoGenericParam *';
15328         removed the `num' argument.
15329
15330 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15331
15332         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
15333         for dynamic images.
15334
15335         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
15336         machine fields.
15337
15338         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
15339
15340         * reflection.c: Save pe_kind and machine values into the generated
15341         image file.
15342
15343         * appdomain.c: Bump corlib version number.
15344
15345         * object-internals.h: Reorganize layout of LocalBuilder.
15346
15347         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
15348         New helper function.
15349
15350         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
15351         created MonoType for dynamic types. Fixes #66180.
15352
15353 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
15354
15355         * threadpool.c: the ares hashtable needs a critical section around it.
15356         this prevents some nasty segfaults
15357
15358 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15359
15360         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
15361         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
15362         bug 67324).
15363         
15364 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15365
15366         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
15367         
15368 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15369
15370         * image.c: Always canonicalize image file names, to avoid loading
15371         the same assembly twice when referenced using a relative path.
15372
15373 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15374
15375         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
15376
15377         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
15378
15379         * marshal.c: Fix warnings.
15380
15381 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
15382
15383         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
15384         attempting to marshal the delegate_trampoline as the method_addr.
15385         This patch has a static hashtable of marshalled delegates so that 
15386         we can map delegate_trampoline addresses back to delegates.  This
15387         allows a delegate passed to managed code to be passed back into native
15388         code.  Fixes #67039
15389
15390 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15391
15392         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
15393
15394         * reflection.c (method_encode_code): Align method headers properly.
15395         Fixes #66025.
15396
15397 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15398
15399         * marshal.c: In the runtime invoke wrapper, reset the abort
15400         exception if it is cached. This avoids the automatic rethrowal of 
15401         the exception after the catch of the wrapper. Also check for pending
15402         interruptions before calling the managed method. This is done using
15403         the new method emit_thread_force_interrupt_checkpoint, since the
15404         normal checkpoint method is ignored when running the invoke wrapper.
15405         * object.c: If the abort exception is rethrown, set the abort_exc
15406         field of the thread, so it will be rethrown aftere every catch.
15407         * threadpool.c: Only run an interruption checkpoint if what has been
15408         requested is a stop of the thread (aborts will be ignored).
15409         * threads.c: By default, a thread will now never be interrumped while
15410         running the runtime invoke wrapper (this ensures that runtime_invoke
15411         will always return to the caller if an exception pointer is provided).
15412         There is a new special method mono_thread_force_interruption_checkpoint()
15413         to force an interruption checkpoint even if running a protected
15414         wrapper, which is used by the same runtime invoke wrapper to do a check
15415         at a safe point.
15416
15417 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15418
15419         * object.c, object-internals.h: Implemented mono_release_type_locks,
15420         which releases the cctor locks held by a thread.
15421         * threads.c, threads.h: In thread_cleanup, release cctor locks held
15422         by a thread. Added mono_thread_exit() method to be used to safely stop
15423         a thread.
15424
15425 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15426
15427         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15428         Move null check before dereference.  Avoid indexing beyond the end
15429         of the 'modules' array.
15430
15431 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15432
15433         * metadata-internals.h (MonoImage): Add module_count field.
15434         * image.c (load_modules): Set image->module_count.
15435         (mono_image_load_file_for_image): Use image->module_count.
15436         * reflection.c (mono_image_load_module): Append to image->modules array 
15437         of dynamic assembly.
15438         (mono_module_get_object): Fix loop to actually increment index.
15439         Use image->module_count.
15440         * assembly.c (mono_assembly_load_references): Use image->module_count.
15441         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
15442         Likewise.
15443
15444 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15445
15446         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
15447         Avoid assert on generic types.
15448
15449 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
15450
15451         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
15452
15453         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
15454
15455         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
15456         function to convert a MarshalSpec structure to its managed counterpart.
15457
15458         * reflection.c: Fix warnings.
15459         
15460         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
15461         field.
15462
15463         * icall.c (mono_create_icall_signature): Fix build.
15464
15465 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15466
15467         * icall.c: Add MakePointType icall.
15468
15469         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
15470         warnings.
15471
15472 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15473
15474         * threadpool.c: reuse allocated slots in the queue.
15475
15476 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15477
15478         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
15479
15480         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
15481
15482         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
15483         previous change.
15484
15485         * tabledefs.h: Add constants for pinvoke attributes BestFit and
15486         ThrowOnUnmappableChar.
15487
15488         * icall.c (ves_icall_Type_GetPacking): New icall.
15489
15490 2004-09-24  Martin Baulig  <martin@ximian.com>
15491
15492         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
15493
15494 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15495
15496         * appdomain.c:
15497         (mono_domain_set): allow setting a domain that is being unloaded.
15498         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
15499         being unloaded.
15500
15501 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15502
15503         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
15504         the GetCustomAttributes icall.
15505
15506 2004-09-23  Martin Baulig  <martin@ximian.com>
15507
15508         * object-internals.h (MonoReflectionGenericParam): Replaced
15509         'has_ctor_constraint', `has_reference_type' and `has_value_type'
15510         with `guint32 attrs'.
15511
15512 2004-09-23  Martin Baulig  <martin@ximian.com>
15513
15514         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
15515
15516 2004-09-23  Martin Baulig  <martin@ximian.com>
15517
15518         * object-internals.h (GenericParameterAttributes): New enum.
15519
15520 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15521
15522         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
15523         
15524         * class.c (init_events): Fill out event->other field.
15525
15526         * class.c: Fix warnings.
15527
15528         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
15529
15530 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15531
15532         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
15533         walk which doesn't supply the IL offset.
15534
15535 2004-09-22  Martin Baulig  <martin@ximian.com>
15536
15537         * reflection.c (mono_reflection_setup_internal_class): If we're
15538         System.ValueType, System.Object or System.Enum, set
15539         `klass->instance_size' and create the vtable.
15540         (mono_reflection_create_internal_class): If we're an enum type,
15541         get the base class from our current corlib.
15542
15543 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
15544
15545         * reflection.h (MonoResolveTokenError): New type.
15546
15547         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
15548         icall.
15549
15550         * icall.c: Add an 'error' argument to the ResolveToken icalls.
15551
15552 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
15553
15554         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
15555         Support also calling constructors, but only for already allocated objects.
15556
15557 2004-09-17  Geoff Norton <gnorton@customerdna.com>
15558
15559         * reflection.c (type_get_qualified_name): If the klass is null
15560         return the typename to avoid a NullRefEx.
15561         (encode_cattr_value): Get the qualified name of the boxed type,
15562         not the underlying enumtype.  Fixes #62984.
15563
15564 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
15565
15566         * marshal.c: Fix problems with previous checkin.
15567
15568 2004-09-21    <vargaz@freemail.hu>
15569
15570         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
15571         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
15572
15573         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
15574
15575 2004-09-21  Geoff Norton <gnorton@customerdna.com>
15576
15577         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
15578         should only return a type for pointers, arrays, and passbyref types.
15579         Fixes bug #63841.
15580
15581 2004-09-21  Martin Baulig  <martin@ximian.com>
15582
15583         * domain.c (mono_debugger_check_runtime_version): New public
15584         function.
15585
15586         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
15587
15588 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
15589
15590         * reflection.c: Added missing sort to the declarative security 
15591         attributes table. MS implementation stops seeing the attributes if the
15592         token number regress in the table (as shown by ildasm and permview).
15593
15594 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * object-internals.h (MonoReflectionModule): Add 'token' field.
15597         
15598         * reflection.c (mono_reflection_get_token): Add support for Module
15599         and Assembly.
15600         (mono_module_get_object): Set 'token' field.
15601         (mono_module_file_get_object): Set 'token' field.
15602
15603         * icall.c: Add new Assembly and Module icalls.
15604
15605         * appdomain.c: Bump corlib version.
15606
15607 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
15608
15609         * loader.h loader.c class.h class.c: Add helper functions for obtaining
15610         tokens of metadata objects.
15611
15612         * reflection.h reflection.c (mono_reflection_get_token): New function
15613         to obtain the token of a metadata object.
15614
15615         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
15616
15617 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15618
15619         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
15620         
15621         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
15622
15623 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
15624
15625         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
15626         * object-internals.h: Added 3 MonoArray* members to MonoReflection
15627         AssemblyBuilder to access the permissions set in the class lib.
15628         * reflection.c: Added security attributes encoding step in 
15629         mono_image_build_metadata.
15630         * tabledefs.h: Added new security actions defined in 2.0:
15631         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
15632
15633 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15634
15635         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
15636         macro parameter.
15637
15638 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15639  
15640         * locales.c: nullify the ICU_collator member of CompareInfo when it is
15641           finalized. There where random SIGSEVs at program termination, when
15642           an object being finalized was trying to do a string comparison and
15643           the current culture was already finalized.
15644  
15645 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15646
15647         * threads.c: call thread_cleanup before finishing the thread if we get
15648         there.
15649
15650 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
15651
15652         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
15653         assemblies from the parent. Fixes #65665.
15654
15655 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
15656
15657         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
15658         modifiers.
15659
15660 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
15661
15662         * reflection.h: add prototype for mono_get_dbnull_object
15663         * reflection.c: add prototypes for get_default_param_value_blobs 
15664         and mono_get_object_from_blob for fussier compilers
15665
15666 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
15667  
15668         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
15669         false deadlock checks in class initialization.
15670  
15671 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15672
15673         * image.c (mono_image_addref): Fix comment.
15674
15675         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
15676         possible.
15677
15678 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
15679
15680         * reflection.c (mono_param_get_objects): Modified to return
15681         ParameterInfo.DefaultValue object.
15682
15683         (get_default_param_value_blobs):
15684         (mono_get_object_from_blob):
15685         (mono_get_dbnull_object): New helper routines. 
15686
15687         * object.c (mono_get_constant_value_from_blob): New helper routine
15688         carved out from get_default_field_value ()
15689
15690         * object-internals.h (mono_get_constant_value_from_blob): Added
15691         function declaration.
15692
15693 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15694
15695         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
15696         referenced assemblies. Fixes #62135.
15697
15698         * exception.h exception.c (mono_get_exception_file_not_found2): New
15699         helper function.
15700
15701 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * class.h class.c: Add mono_type_get_underlying_type ().
15704
15705 2004-09-09  Geoff Norton <gnorton@customerndna.com>
15706
15707         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
15708         Fix GetTypes() to support dynamically created assemblies.
15709
15710 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
15711
15712         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
15713         
15714         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
15715         previous patch.
15716
15717         * reflection.h reflection.c loader.c: Allow dynamic construction of
15718         pinvoke methods. Fixes #65571.
15719         
15720         * reflection.c (mono_reflection_get_type): Revert previous change since
15721         it causes regressions.
15722
15723 2004-09-08  Martin Baulig  <martin@ximian.com>
15724
15725         * class.c (class_compute_field_layout): Don't call
15726         mono_class_layout_fields() for open generic instances.
15727
15728 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
15729         * threads.c appdomain.c: fix typo in GC macro
15730
15731 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15732
15733         * threads.c: don't call mono_thread_detach() in start_wrapper(),
15734         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
15735
15736 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
15737
15738         * image.c (mono_image_close): Applied patch from 
15739         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
15740         assembly is loaded multiple times from data.
15741         
15742         * image.c (mono_image_open): Fix warning.
15743
15744 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15745
15746         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
15747         once. Fixes #58334.
15748         
15749         * reflection.c (mono_reflection_create_runtime_class): Initialize
15750         klass->nested_classes. Fixes #61224.
15751
15752 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15753
15754         * threads.c: sched_yield() on exit, to allow threads to quit.
15755
15756 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15757
15758         * object.c (mono_unhandled_exception): Remove leftover debug code.
15759
15760 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
15761
15762         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
15763
15764 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * marshal.c (emit_marshal_array): Really null terminate string arrays.
15767         
15768         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
15769
15770 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15771
15772         * marshal.c (emit_marshal_array): Null terminate string arrays.
15773         
15774         * marshal.c (raise_auto_layout_exception): Fix warning.
15775
15776         * reflection.c (mono_param_get_objects): Initialize the default value
15777         with DBNull.Value, not null. Fixes #62123.
15778
15779 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
15780
15781         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
15782         throw an exception with a cute explanation.
15783
15784 2004-09-06  Dick Porter  <dick@ximian.com>
15785
15786         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
15787         Close the new process's thread handle, as we don't use it.  The
15788         handle stays around forever otherwise.
15789
15790 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15791
15792         * object.c (arith_overflow): Fix warning.
15793
15794         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
15795         calling conventions in method refs. Fixes #65352.
15796
15797         * reflection.c: Fix warnings.
15798
15799 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15800
15801         * icall.c: Add a new icall for Array.Clear
15802
15803 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15804
15805         * object.c: When allocating an array, we have to throw
15806         an overflow exception if any of the lengths are < 0.
15807
15808 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15809
15810         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
15811         properly. Also move implementation of string array marshalling to 
15812         managed code. Fixes #42316.
15813
15814 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15815
15816         * assembly.c: provide more information when loading an assembly fails.
15817
15818 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15819
15820         * filewatcher.c: don't expect the development fam package to be
15821         installed.
15822
15823 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
15824
15825         * marshal.c: Make a copy of the signature cookie since it will be
15826         freed by the caller.
15827         
15828         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
15829
15830         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
15831
15832         * metadata.c (mono_metadata_free_marshal_spec): New function to free
15833         marshal specs.
15834
15835         * marshal.c: More refactoring.
15836         
15837         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
15838         smaller functions.
15839
15840 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
15841
15842         * object.c: In mono_message_invoke, fill the output parameter array after
15843           calling the managed method (it was done before the call). This fixes
15844           bug #59299.
15845
15846 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15847
15848         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
15849         as well.
15850
15851 2004-09-02  Martin Baulig  <martin@ximian.com>
15852
15853         * class.c (mono_class_instance_size): Don't allow generic type
15854         definitions or open generic instances.
15855         (mono_class_array_element_size): If we're a value type, call
15856         mono_class_instance_size() on the original class.
15857
15858         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
15859         handle generic instances.
15860
15861         * mono-debug-debugger.c (write_type): Handle generic instances
15862         like classes.
15863
15864 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15865
15866         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
15867         the allocation request fails. Fixes #65089.
15868
15869         * object.c (mono_runtime_free_method): Do not call mono_free_method.
15870         
15871         * object.c (mono_runtime_free_method): New function to free a dynamic
15872         method.
15873
15874         * marshal.c (mono_delegate_free_ftnptr): New function to free the
15875         delegate trampoline.
15876
15877         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
15878         with hasthis as dynamic,
15879
15880         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
15881
15882         * domain.c (mono_jit_info_table_remove): New function to remove an
15883         entry from the jit info table.
15884
15885         * class-internals.h (MonoMethod): Add 'dynamic' field.
15886
15887         * loader.c: Fix warnings.
15888
15889 2004-09-01  Martin Baulig  <martin@ximian.com>
15890
15891         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
15892         instead of mono_debugger_lock() because the latter one is a no-op
15893         unless running in the debugger.
15894
15895 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15896
15897         * class.c (class_compute_field_layout): Classes with auto-layout or
15898         reference fields are not blittable.
15899         
15900 2004-09-01  Dick Porter  <dick@ximian.com>
15901
15902         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
15903         mono_image_get_filename() to get the assembly location.
15904
15905         * icall.c:
15906         * metadata.h: Fix compile warnings
15907
15908 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * class.c (class_compute_field_layout): System.Object is blittable.
15911
15912         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
15913         as in/out. Fixes #59909.
15914
15915 2004-09-01  Martin Baulig  <martin@ximian.com>
15916
15917         * metadata.h (MONO_TYPE_ISREFERENCE): Call
15918         mono_metadata_generic_inst_is_valuetype() if we're a generic
15919         instance to check whether our underlying type is a reference type.
15920
15921 2004-09-01  Martin Baulig  <martin@ximian.com>
15922
15923         * metadata.c (mono_type_size): If we're a generic instance, call
15924         mono_class_value_size() for value types.
15925
15926 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
15927
15928         * marshal.c: Implement more custom marshalling functionality. Fixes
15929         #64915.
15930
15931 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15932
15933         * mono-debug.c, debug-mono-symfile.c: add some locking love.
15934
15935 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
15938
15939         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
15940
15941         * icall.c: Fix some warnings.
15942
15943         * threads.c (abort_appdomain_thread): Fix unref errors.
15944         (mono_thread_current): Fix THREAD_DEBUG define.
15945
15946 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15947
15948         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
15949
15950         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
15951
15952 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
15955         string arrays.
15956
15957 2004-08-28  Martin Baulig  <martin@ximian.com>
15958
15959         * metadata.c
15960         (mono_metadata_generic_inst_is_valuetype): New public function.
15961
15962         * metadata.h (MONO_TYPE_ISSTRUCT): Call
15963         mono_metadata_generic_inst_is_valuetype() if we're a generic
15964         instance to check whether our underlying type is a valuetype.
15965
15966 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15967
15968         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
15969         #63768.
15970
15971 2004-08-25  Martin Baulig  <martin@ximian.com>
15972
15973         * loader.c (mono_get_method_from_token): Abstract methods can also
15974         be generic and thus have type parameters.
15975
15976         * metadata-internals.h
15977         (MonoDynamicImage): Added `GPtrArray *gen_params'.
15978
15979         * reflection.c (mono_image_get_generic_param_info): Don't create a
15980         metadata row, just add an entry to the `gen_params' array.
15981         (build_compressed_metadata): Sort the `gen_params' array and then
15982         actually create the metadata.
15983
15984 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15985
15986         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
15987
15988 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
15991
15992 2004-08-24  Martin Baulig  <martin@ximian.com>
15993
15994         * class.cs (mono_class_is_subclass_of): Like an interface, a
15995         generic instance also derives from System.Object.
15996
15997 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
15998
15999         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
16000         custom modifiers to be in any order. Fixes #61990.
16001
16002 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16003
16004         * object.c: Register mono_object_new_fast icall.
16005         
16006         * object.c (mono_class_get_allocation_ftn): Return to calling
16007         mono_object_new_fast, since it seems faster to compute the object 
16008         size in unmanaged code than passing it as a parameter.
16009
16010         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
16011
16012         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
16013         this function with Boehm as the oom handler, so we don't have to check
16014         the result of GC_malloc.
16015
16016         * object.c: Remove checks for oom.
16017
16018         * object.h object.c (mono_class_get_allocation_ftn): New function to
16019         return the icall which can be used to allocate an instance of a given
16020         class. 
16021
16022         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
16023
16024         * class-internals.h: Add 'enabled' field.
16025
16026 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
16027
16028         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
16029
16030 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
16031         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
16032         value 0x0010.
16033
16034 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16035
16036         * appdomain.c: use the Tls function for appdomain too,
16037         at Zoltan's request. Actually return in mono_context_get
16038
16039         * appdomain.c, profiler.c, threads.c: use __thread
16040
16041 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16042
16043         * appdomain.c threads.c: Call GC_CreateThread on windows.
16044
16045         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
16046         multiple libraries since this don't work on windows.
16047
16048 2004-08-18  Martin Baulig  <martin@ximian.com>
16049
16050         * class-internals.h
16051         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
16052         MonoMethodHeader.
16053
16054         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
16055         MonoMethodNormal since we also need it for abstract and interface
16056         methods.
16057
16058         * reflection.c
16059         (build_compressed_metadata): Sort the GenericParam table.
16060         (mono_image_create_token): Added `gboolean create_methodspec'
16061         argument; this is false when generating a MethodImpl token.
16062         (reflection_methodbuilder_to_mono_method): Abstract and interface
16063         methods may also have generic parameters.
16064
16065 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16066
16067         * appdomain.c: thread local alloc
16068
16069 2004-08-17  Martin Baulig  <martin@ximian.com>
16070
16071         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
16072
16073         * icall.c
16074         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
16075         argument.
16076
16077         * class.c (mono_type_get_full_name): New public function.
16078         (mono_type_get_name): Don't include the type arguments.
16079
16080 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16081
16082         * Makefile.am: Build static versions of libmetadata and libmonoruntime
16083         for inclusion into the mono executable.
16084
16085 2004-08-16  Martin Baulig  <martin@ximian.com>
16086
16087         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
16088         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
16089
16090 2004-08-14  Martin Baulig  <martin@ximian.com>
16091
16092         * class.c (dup_type): Also copy the `byref' field.
16093
16094 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16095
16096         * reflection.c (create_dynamic_mono_image): Revert the last change 
16097         since it breaks bootstrap.
16098
16099 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16100
16101         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
16102
16103         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
16104         not free them with g_free.
16105
16106 2004-08-11  Martin Baulig  <martin@ximian.com>
16107
16108         * reflection.c (mono_reflection_setup_internal_class): Also call
16109         mono_class_setup_mono_type() if we already have a `tb->type.type'.
16110
16111 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
16112
16113         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
16114         called during default (first) AppDomain creation. Keep track of
16115         Evidence when loading assemblies.
16116
16117 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16118
16119         * opcodes.c, opcodes.h: reduce runtime relocations.
16120
16121 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16122
16123         * culture-info.h, locales.c: fixes and chages to sue the new
16124         optimized format of the locale data.
16125         * culture-info-tables.h: regenerated.
16126
16127 2004-08-06  Geoff Norton <gnorton@customerdna.com>
16128         
16129         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
16130
16131 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
16132
16133         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
16134         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
16135         * domain-internals.h: icall declaration.
16136         * icall.c: icall registration.
16137         * object-internals.h: New fields in MonoAssembly for CAS.
16138
16139 2004-08-05  Duncan Mak  <duncan@ximian.com>
16140
16141         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16142         CEE_LDELEM_ANY.
16143
16144 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16145
16146         * reflection.c: fix to deal with object[] arrays in custom ctors
16147         (bug #62550).
16148
16149 2004-08-05  Martin Baulig  <martin@ximian.com>
16150
16151         * class.c (mono_class_array_element_size): Added support for
16152         generic instances and correctly handle "recursive" types.
16153
16154 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16155
16156         * assembly.c: Fix warnings.
16157
16158 2004-08-04  Martin Baulig  <martin@ximian.com>
16159
16160         * class.c
16161         (mono_type_get_name_recurse): Added `gboolean include_arity'
16162         argument specifying whether or not we should include the generic
16163         arity in the type name.
16164         (_mono_type_get_name): New static function.
16165         (mono_class_setup_vtable): If we're a generic instance, don't
16166         include the generic arity in the names of explicit method
16167         implementations.        
16168
16169 2004-08-03  Martin Baulig  <martin@ximian.com>
16170
16171         * class.c (mono_type_get_name_recurse): Enclose the generic type
16172         arguments in `<', '>'.
16173
16174 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16175
16176         * gc.c: make GC warning messages use the trace API, they are just
16177         noise to most of the users.
16178
16179 2004-08-03  Martin Baulig  <martin@ximian.com>
16180
16181         * debug-mono-symfile.c (read_string): Correctly read the string.
16182
16183 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16184
16185         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
16186         
16187         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
16188         icalls.
16189         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
16190
16191 2004-07-30  Martin Baulig  <martin@ximian.com>
16192
16193         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
16194         Reflect latest symbol writer changes.   
16195
16196 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16197
16198         * object.c: always create an object if null is passed
16199         to Invoke() where a valuetype is expected.
16200
16201 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16202
16203         * marshal.c (mono_marshal_init): make managed
16204         signatures match native ones better for 64bits.
16205
16206 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16207
16208         * appdomain.c: hack to build correctly the private bin path on windows.
16209         Fixes bug #61991.
16210
16211 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16212
16213         * assembly.c: Load mscorlib from the correct framework directory
16214           (mono/<version>/mscorlib.dll).
16215         * appdomain.h: Added prototypes for new functions.
16216         * internals.h: Added some prototypes.
16217         * domain.c: When initializing the runtime, get from the executable and
16218           the configuration files the runtime version that the app supports.
16219           Added support methods for reading app.exe.config. Added list of versions
16220           supported by the JIT. Added two new methods: mono_init_from_assembly,
16221           which initializes the runtime and determines the required version from
16222           the provided exe file, and mono_init_version, which initializes
16223           the runtime using the provided version.
16224         * icall.c: Get machine.config from version-specific directory.
16225         * reflection.c: When generating an image, embed the version number
16226           of the current runtime.
16227
16228 2004-07-28  Dick Porter  <dick@ximian.com>
16229
16230         * socket-io.c
16231         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
16232         returned sockaddr size before creating the remote address object.
16233         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
16234         61608.
16235
16236 2004-07-28  Dick Porter  <dick@ximian.com>
16237
16238         * locales.c (string_invariant_compare_char): Fix invariant char
16239         compares between upper and lower cases.  Fixes bug 61458.
16240
16241 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
16242         
16243         * marshal.c: actually cache stelem.ref wrappers.
16244         
16245 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16246
16247         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
16248         sections and remove the mono_cli_rva_map () function.
16249
16250 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16251
16252         * debug-mono-symfile.c: fix one more endianess issue, from a patch
16253         by Geoff Norton (<gnorton@customerdna.com>).
16254
16255 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16256
16257         * class.c: fix class loads for pointer types (typeof(int) !=
16258         typeof(int*)).
16259
16260 2004-07-27  Martin Baulig  <martin@ximian.com>
16261
16262         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
16263         reading the debugging information from an external ".mdb" file.
16264
16265 2004-07-24  Martin Baulig  <martin@ximian.com>
16266
16267         * reflection.c (mono_image_get_type_info): Only write a class
16268         layout entry if we actually have a size or a packing size.
16269
16270 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16271
16272         * reflection.c (type_get_fully_qualified_name): 
16273         insert cast to get type checking of ?: with non-gcc compilers
16274
16275 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16276
16277         * rand.c: use g_getenv for both lookups of
16278         MONO_EGD_SOCKET
16279
16280 2004-07-17  Martin Baulig  <martin@ximian.com>
16281
16282         * reflection.c (mono_reflection_bind_generic_method_parameters):
16283         Set `gmethod->reflection_info'.
16284
16285 2004-07-17  Martin Baulig  <martin@ximian.com>
16286
16287         * class.c (mono_class_create_from_typedef): Insert the newly
16288         created class into the hash table before computing the interfaces
16289         since we could be called recursively.
16290
16291 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16292
16293         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
16294         function to implement stelem.ref in managed code
16295         * class-internals.h, debug-helpers.c: a new wrapper type
16296         for the above.
16297
16298 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16299
16300         * gc.c: allow GC handles to work even when no GC is compiled in.
16301         Fix part of bug #61134 (GetAddrOfPinnedObject).
16302
16303 2004-07-13  Peter Williams  <peter@newton.cx>
16304  
16305         * process.c (complete_path): Make sure we don't attempt to execute
16306         directories.
16307  
16308 2004-07-12  Geoff Norton <gnorton@customerdna.com>
16309
16310         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
16311           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
16312           and will add/subtract the hour if needed
16313
16314 2004-07-12  Martin Baulig  <martin@ximian.com>
16315
16316         * reflection.c (mono_field_get_object): If we have
16317         `field->generic_info', take the attributes from
16318         `field->generic_info->generic_type'.    
16319
16320 2004-07-12  Martin Baulig  <martin@ximian.com>
16321
16322         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
16323         This function must be called before initializing the runtime.
16324         (mono_debug_init_1): New function; call this after initializing
16325         the runtime, but before loading the assembly.  It tells the
16326         debugger to load corlib and the builtin types.
16327
16328         * mono-debug-debugger.c: Did some larger changes in the debugging
16329         code; support recursive class declarations, make sure we actually
16330         add all classes.
16331
16332 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16333
16334         * debug-helpers.c: undo my previous patch and fixed the real issue in
16335         ../mini/exceptions-x86.c
16336
16337 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16338
16339         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
16340         when no HOME env. variable was set and a NullRef was thrown in a .cctor
16341         called from other .cctors.
16342
16343 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
16344
16345         * loader.c: Removed the mono_loader_wine_init hack now that we are
16346         doing a managed version of Windows.Forms.
16347
16348 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16349
16350         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
16351         threadpool.c, threads.c: remove static data from rootset.
16352
16353 2004-07-09  Dick Porter  <dick@ximian.com>
16354
16355         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
16356         Don't do any more processing if the matched length was 0.  It was
16357         increasing the size of the string before.  Fixes bug 61167.
16358
16359 2004-07-09  Dick Porter  <dick@ximian.com>
16360
16361         * socket-io.h:
16362         * socket-io.c
16363         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
16364         Add support for SO_PEERCRED if its available.
16365
16366 2004-07-09  Peter Bartok <pbartok@novell.com>
16367         * loader.c: winelib.exe.so error message is now only displayed if
16368         MONO_DEBUG is set. To help us avoid questions when people are trying
16369         out the new Managed.Windows.Forms.
16370
16371 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16372
16373         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
16374         for isinst and castclass wrappers.
16375
16376         * class-internals.h icall.c: Move registration and lookup of JIT icalls
16377         to libmetadata from the JIT, so they could be used by the marshalling
16378         code and the interpreter.
16379
16380         * marshal.c: Register marshalling related JIT icalls here instead of
16381         in mini.c. Use CEE_MONO_ICALL instead of the family of 
16382         CEE_MONO_PROC<x> opcodes to call marshalling functions.
16383
16384         * metadata.h: Remove unneeded marshalling conversions.
16385
16386         * opcodes.c: Update for new opcodes.
16387         
16388 2004-07-08  Martin Baulig  <martin@ximian.com>
16389
16390         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
16391         (mono_debug_get_domain_data): Make this function static.
16392
16393 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16394
16395         * gc.c, object.h: add nice GC handle API for embedders.
16396
16397 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16398
16399         * reflection.c: more changes for the new api
16400
16401         * object.c: When we reflect on a field w/ a constant value, it
16402         will not have a memory location, so we must access metadata. Also,
16403         allow easier reading of strings so that we can read them from
16404         the constant data.
16405
16406         * class.c (mono_class_layout_fields): no need for literal fields here.
16407
16408         * class-internals.h: api changes for const fields
16409
16410         * icall.c (ves_icall_get_enum_info): use new apis for const fields
16411
16412 2004-07-06  Martin Baulig  <martin@ximian.com>
16413
16414         * mono-debug.h: Increment version number to 44.
16415
16416         * mono-debug.c (mono_debug_add_wrapper): The second argument is
16417         now a gpointer, rewrote this whole method.
16418
16419         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
16420         function.  Add information about the wrapper in a new "misc table".
16421
16422         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
16423         for the new misc table.
16424
16425 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16426
16427         * metadata-internals.h image.c: Add a cache for helper signatures.
16428
16429         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
16430
16431 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16432
16433         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
16434         delegates from a delegate. Fixes #61033.
16435         
16436         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
16437         marshalling of stringbuilder arrays. Fixes #59900.
16438
16439 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16440
16441         * icall.c: Add EnumBuilder:setup_enum_type icall.
16442
16443 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16444
16445         * icall.c: Added a new icall for the property version of
16446         OffsetOfStringData.
16447
16448 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16449
16450         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
16451         it has a constant size across platforms.
16452
16453         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
16454         stack trace.
16455
16456 2004-06-29  Martin Baulig  <martin@ximian.com>
16457
16458         * mono-debug.c (mono_debug_add_method): Protect the whole function
16459         in mono_debugger_lock(), not just parts of it.
16460
16461 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16462
16463         * reflection.c: make sure padding bytes in heaps are zeroed.
16464
16465 2004-06-24  David Waite  <mass@akuma.org>
16466
16467         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
16468         image.c, loader.c, locales.c, marshal.c, metadata.c,
16469         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
16470         string-icalls.c, threads.c: change to C90-style comments from C99 /
16471         C++ -style
16472
16473 2004-06-24  Dick Porter  <dick@ximian.com>
16474
16475         * threads.c
16476         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
16477         return createdNew.  Fixes bug 60412.
16478
16479         * threads-types.h: 
16480         * icall.c: Add createdNew parameter to CreateMutex icall
16481
16482 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16483
16484         * reflection.c, object-internals.h: save default value in params.
16485
16486 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16487
16488         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
16489         no need to build a new path combining that with the application base.
16490         Fixes bug #60442.
16491
16492 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16493
16494         * reflection.c: fixed minor standard compliance issues.
16495
16496 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16497
16498         * reflection.c: fixed issue with encoding some custom attributes
16499         (arrays in properties and fields, bug #60411).
16500
16501 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16502
16503         * reflection.c: fix start address when copying the public key token.
16504
16505 2004-06-23  Martin Baulig  <martin@ximian.com>
16506
16507         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
16508         the `exc' object in a static object to put it into the GC's root set.
16509
16510 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
16511
16512         * reflection.c: make mono_reflection_setup_internal_class ()
16513         callable a second time to setup a new parent class.
16514
16515 2004-06-23  Dick Porter  <dick@ximian.com>
16516
16517         * threads.c: Check for WAIT_IO_COMPLETION return values.
16518
16519 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
16520
16521         * appdomain.c: Removed the g_free on the public key token. Now copy 
16522         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
16523         * assembly.c: Added public key token string value when loading 
16524         assemblies. Fix bug #60439.
16525         * icall.c: Added missing informations (like public key) in 
16526         GetReferencedAssemblies. Fix #60519.
16527         * image.h: Changed definition for public key token from const char*
16528         public_tok_value to guchar public_key_token [17];
16529         * reflection.c: Updated for changes to public key token.
16530
16531 2004-06-22  Lluis Sanchez Gual
16532
16533         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
16534         for the field in base classes.
16535
16536 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16537
16538         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
16539         mark headers as not supported, they are installed only for use by the
16540         debugger.
16541
16542 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
16543
16544         * *.c, *.h: avoid namespace pollution in public headers.
16545
16546 2004-06-21  Martin Baulig  <martin@ximian.com>
16547
16548         * exception.c (mono_get_exception_security): It's in
16549         "System.Security", not in "System".
16550
16551         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
16552         the exception classes.
16553
16554 2004-06-21  Martin Baulig  <martin@ximian.com>
16555
16556         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
16557         Protect the exception object from being finalized.
16558
16559 2004-06-21  Martin Baulig  <martin@ximian.com>
16560
16561         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
16562         public function.
16563
16564 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
16565
16566         * reflection.c: Load the assembly in mono_reflection_type_from_name,
16567         if it was not loaded before. Fix parts of #60439.
16568
16569 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
16570
16571         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
16572         code that was broken since Ben's change: wrappers are now
16573         dependent on the method signature only again.
16574
16575 2004-06-21  Martin Baulig  <martin@ximian.com>
16576
16577         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
16578         added interface support.
16579
16580 2004-06-21  Martin Baulig  <martin@ximian.com>
16581
16582         * class.c (mono_vtable_get_static_field_data): New public method.
16583
16584 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
16585
16586         * filewatcher.c : Windows build fix to be compliant with API changes.
16587
16588 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16589
16590         * class.h, class.c: more accessors.
16591         * metadata.h, metadata.c: prepare for hiding MonoType and
16592         MonoMethodSignature: people should use the accessors from now on
16593         outside of the tree.
16594
16595 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16596
16597         * *.c, *.h: more API cleanups.
16598
16599 2004-06-18  Jackson Harper  <jackson@ximian.com>
16600
16601         * assembly.c: Trace loading assemblies.
16602         * loader.c: Trace loading native libraries.
16603         * mono-config.c: Trace loading config files.
16604         
16605 2004-06-18  Dick Porter  <dick@ximian.com>
16606
16607         * locales.c: Tell ICU the lengths of strings, it can cope with
16608         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
16609
16610 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16611
16612         * image.c: swapped name/filename;
16613
16614 2004-06-18  Martin Baulig  <martin@ximian.com>
16615
16616         * mono-debug-debugger.c (write_class): Write the parent class at
16617         the end of the header.
16618
16619 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16620
16621         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
16622
16623 2004-06-17  Raja R Harinath  <rharinath@novell.com>
16624
16625         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
16626         (bundle_obj): New conditional define.
16627         (BUILT_SOURCES): Remove.
16628         ($(bundle_srcs)): Make parallel-make safe.
16629         (libmonoruntime_la_LIBADD): Make unconditional.
16630         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
16631         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
16632
16633 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
16634
16635         * culture-info-tables.h: It was inconsistent with the latest
16636           supp info files.
16637
16638 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
16639
16640         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
16641         be loaded.
16642
16643         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
16644         with gcc 2.95.
16645
16646 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16647
16648         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
16649         cleaned up public header threads.h.
16650
16651 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16652
16653         * Makefile.am, *.c, *.h: more API cleanups.
16654
16655 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16656
16657         * Makefile.am: removed monosn from compilation.
16658         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
16659         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
16660         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
16661         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
16662         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
16663         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
16664
16665 2004-06-15  Jackson Harper  <jackson@ximian.com>
16666
16667         * assembly.c: Make locales lower case when searching the GAC for
16668         assemblies. gacutil will always make locales lowercase when
16669         installing so this effectively makes them case insensitive.
16670         
16671 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
16672
16673         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
16674         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
16675           parameter which allows to choose whether the wait can be interrupted or 
16676           not. Also added the method mono_monitor_enter(), which locks the monitor
16677           using an infinite wait and without allowing interruption.
16678           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
16679           interrupted.
16680         * object.h: Added new fields in MonoThread. suspend_event holds the event
16681           used to susped/resume the thread. synch_lock is the lock object to use for
16682           modifying the thread state.
16683         * threads.c: Use the new synch_lock object for locking, instead of "this",
16684           which can generate deadlocks.
16685           Moved thread state change in Thread.Sleep and Thread.Join from managed
16686           to unmanaged code. This avoids a deadlock when the thread was suspended
16687           just after acquiring the thread lock.
16688           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
16689           Implemented Thread.Suspend using an event instead of ThreadSuspend,
16690           which is not fully implemented in the io-layer.
16691         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
16692
16693 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
16694
16695         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
16696         threads-types.h: more API cleanups.
16697
16698 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16699
16700         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
16701         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
16702         threadpool.c, threads.c: first pass at the exported API cleanup.
16703
16704 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16705
16706         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
16707
16708 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16709
16710         * icall.c: added internalGetHome.
16711
16712 2004-06-14  Dick Porter  <dick@ximian.com>
16713
16714         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
16715         possible to return successfully when '.' or '..' were the only
16716         entries in a directory, but were skipped.  The MonoIOStat was not
16717         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
16718         Fixes bug 59574.
16719
16720 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16721
16722         * reflection.c: make binaries run on .Net 1.1 by default.
16723
16724 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16725
16726         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
16727
16728 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
16729
16730         * marshal.c: keep track of struct size with explicit layout
16731         (bug #59979).
16732
16733 2004-06-12  Martin Baulig  <martin@ximian.com>
16734
16735         * mono-debug-debugger.c: Comment out a debugging g_message().
16736
16737 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16738
16739         * reflection.c, reflection.h: do not free custom attrs that are cached.
16740         * icall.c: use braces to make code clearer.
16741
16742 2004-06-11  Martin Baulig  <martin@ximian.com>
16743
16744         * class.h (MonoInflatedField): New type.
16745         (MonoClassField): Replaced `MonoType *generic_type' with
16746         `MonoInflatedField *generic_info'.
16747
16748         * icall.c
16749         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
16750
16751 2004-06-11  Martin Baulig  <martin@ximian.com>
16752
16753         * reflection.c (mono_image_create_method_token): Correctly encode
16754         varargs methods.
16755
16756 2004-06-11  Martin Baulig  <martin@ximian.com>
16757
16758         * metadata.c (mono_metadata_parse_method_signature): When parsing
16759         a MethodDef which has VarArgs, also set sentinelpos if we don't
16760         have any parameters.
16761
16762 2004-06-11  Martin Baulig  <martin@ximian.com>
16763
16764         * verify.c (mono_method_verify): In CEE_CALL, use
16765         mono_method_get_signature() to get the method's signature, unless
16766         we're a PInvoke method.
16767
16768 2004-06-10  Jackson Harper  <jackson@ximian.com>
16769
16770         * assembly.c: Use <path>/lib/mono/gac for the extra paths
16771         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
16772         logical name as the supplied path is just a prefix to the gac not
16773         the direct path to it.
16774         
16775 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
16776
16777         * reflection.c: make the token for a created method match
16778         the token of the MethodBuilder it was created from
16779         (IKVM requires this behaviour now).
16780
16781 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
16782
16783         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
16784         reflection.c, socket-io.c: leak fixes.
16785
16786 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16787
16788         * icall.c: handle sentinel pos in vararg methods in position different
16789         from 0.
16790
16791 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16792
16793         * culture-info-tables.h: freshly generated.
16794
16795 2004-06-09  Martin Baulig  <martin@ximian.com>
16796
16797         * loader.c (mono_get_method_constrained): Call `mono_class_init
16798         (constrained_class)'.   
16799
16800 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
16801
16802         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
16803         any methods. Fixes #59629.
16804
16805 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16806
16807         * culture-info-tables.h: reflecting locale-builder updates.
16808
16809 2004-06-08  Dick Porter  <dick@ximian.com>
16810
16811         * object.h:
16812         * locales.c: Fixed compile warnings, including a real bug in
16813         CompareInfo_internal_compare.
16814         
16815 2004-06-08  Dick Porter  <dick@ximian.com>
16816
16817         * locales.c
16818         (ves_icall_System_Globalization_CompareInfo_internal_index):
16819         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16820         Double-check the resuls of usearches, because ICU currently
16821         ignores most of the collator settings here.  Fixes bug 59720.
16822         
16823 2004-06-08  Dick Porter  <dick@ximian.com>
16824
16825         * locales.c
16826         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16827         Fix memory leak and segfault-causing typo.  No idea how this one
16828         lasted so long without being noticed.
16829
16830 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
16831
16832         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
16833         any methods. Fixes #59629.
16834
16835 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16836
16837         * assembly.c:
16838         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
16839         own the critical section before). Removed dead code (that's done
16840         in the preload hook).
16841
16842         (mono_assembly_load_with_partial_name): call the preload hook.
16843
16844 2004-06-08  Martin Baulig  <martin@ximian.com>
16845
16846         * metadata.c (mono_metadata_signature_alloc): Default
16847         `sentinelpos' to -1.
16848
16849         * reflection.c (mono_image_get_array_token): Likewise.
16850
16851 2004-06-08  Martin Baulig  <martin@ximian.com>
16852
16853         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
16854
16855         * metadata.c (mono_metadata_parse_method_signature): When parsing
16856         a MethodDef which has VarArgs, set sentinelpos.
16857
16858         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
16859         `gint16' since we're using -1 for non-varargs methods.
16860
16861         * reflection.c
16862         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
16863         (method_encode_signature): Added varargs support.
16864         (method_builder_encode_signature): Likewise.
16865         (mono_image_get_varargs_method_token): New static method.
16866         (mono_image_create_method_token): New public method; this is
16867         called via an icall instead of mono_image_create_token() when
16868         calling a varargs method.       
16869
16870 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
16871
16872         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
16873
16874 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16875
16876         * culture-info-tables.h : Reflecting the latest locale-builder that
16877           fixed empty array representation ({} to {0}).
16878
16879 2004-06-07  Jackson Harper  <jackson@ximian.com>
16880
16881         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
16882         looking up extra gac paths. This allows MONO_GAC_PATH to act
16883         exactly like a prefix.
16884         
16885 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16886
16887         * reflection.c (mono_reflection_type_from_name): Make a copy of the
16888         type name before modifying it. Fixes #59405.
16889
16890 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16891
16892         * culture-info.h: added fields for "all datetime patterns".
16893         * locales.c: (  ves_icall_System_Globalization_CultureInfo
16894           _construct_datetime_format ()): fill xxx_patterns fields.
16895         * object.h: added fields for "all datetime patterns" to
16896           MonoDateTimeFormatInfo.
16897         * culture-info-tables.h: reflecting locale-builder updates.
16898
16899 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16900
16901         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
16902         the event has no add and remove methods. Fixes #59629.
16903
16904 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
16905
16906         * object.c: Fixed possible integer overflow when allocating large
16907         strings.
16908
16909 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16910
16911         * culture-info-tables.h: reflecting locale-builder updates.
16912
16913 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16914
16915         * culture-info-tables.h: reflecting locale-builder updates.
16916
16917 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
16918
16919         * culture-info-tables.h: reflecting locale-builder updates.
16920
16921 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
16922
16923         * threads.c: Made Thread.Sleep abortable.
16924
16925 2004-06-02  Martin Baulig  <martin@ximian.com>
16926
16927         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
16928
16929         * debug-mono-symfile.h: Bumped symbol file version number to 37.
16930
16931 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
16932
16933         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
16934
16935 2004-05-30  Jackson Harper  <jackson@ximian.com>
16936
16937         * reflection.c: Do not hardcode assembly versions or public key
16938         tokens anymore. All of this except the corlib section was dead
16939         code anyways.
16940         
16941 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * object.c (mono_runtime_invoke_array): Automatically create boxed
16944         objects for byref valuetypes if needed. Fixes #59300.
16945         
16946         * object.c (mono_method_return_message_restore): Handle 
16947         MONO_TYPE_OBJECT as well.
16948
16949 2004-05-28  Jackson Harper  <jackson@ximian.com>
16950
16951         * reflection.c: The modified type encoding was causing build
16952         problems. Reverted for now.
16953         
16954 2004-05-28  Jackson Harper  <jackson@ximian.com>
16955
16956         * reflection.c/h: Take an assembly ref so that we dont create
16957         fully qualified names when encoding types in the same assembly as
16958         the custom attribute being emitted.
16959         * appdomain.c: Increment version number.
16960         
16961 2004-05-26  Duncan Mak  <duncan@ximian.com>
16962
16963         * icall.c
16964         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
16965         Set the full version number (major, minor, build, revision).
16966
16967 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
16968
16969         * marshal.c (emit_struct_conv): increment src/dst after blit
16970         (mono_marshal_get_managed_wrapper,
16971         mono_marshal_get_native_wrapper): make sure we have marshalling
16972         info before marshalling params (info computation affects
16973         blittable)
16974
16975         * class.c (class_compute_field_layout): correctly deal with
16976         blittable
16977         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
16978         value types (as per what windows dows by default)
16979         (mono_class_setup_mono_type): System.ValueType is blittable
16980         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
16981         blittable
16982
16983         * marshal.c (mono_marshal_load_type_info): flag types  as
16984         non-blittable if the native layout doesn't match the managed
16985         layout
16986
16987 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16988
16989         * appdomain.c: don't add stuff in the private search path that is
16990         above the application base. If application base is not set, there's
16991         no private search path.
16992
16993 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16994
16995         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
16996         byref struct arguments in native->managed marshalling.
16997
16998 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
16999
17000         * marshal.c (mono_marshal_get_runtime_invoke): correctly
17001         cache methods using signature (special case for methods
17002         that are value type or string class)
17003         
17004         * image.c (mono_image_close): clean up allocated GSList's
17005         in runtime_invoke_cache.
17006
17007 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17008
17009         * mono-config.c: set the correct path for mono_cfg_dir on windows when
17010         there's no MONO_CFG_DIR environment variable defined.
17011
17012 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17013
17014         * threads.c: windows version must be >= 0x0500 to include OpenThread.
17015
17016 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
17017
17018         * threadpool.c: Really wait for 500ms after the async call, even if the wait
17019           is interrumped.
17020         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
17021           before waiting for it, and call CloseHandle after the wait to unref it.
17022           This will make sure that handles are not disposed too early.
17023
17024 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17025
17026         * appdomain.c:
17027         * appdomain.h:
17028         * icall.c: removed
17029         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
17030         needed now.
17031
17032         * object.c: se the application_base only for the domain that runs
17033         Main. Fixes bug #59216,
17034
17035 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17036
17037         * appdomain.c:
17038         * object.c: only the domain in which Main is run have
17039         SetupInformation.ConfigurationFile set, so moved a few lines from
17040         appdomain.c to object.c.
17041
17042 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17043
17044         * appdomain.c: we tried to load [name].(dll|exe), but according
17045         to bug #57710, we must also try [culture]/[name].(dll|exe) and
17046         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
17047         There's a test case attached to bug #58922.
17048
17049 2004-05-27  Dick Porter  <dick@ximian.com>
17050
17051         * icall.c:
17052         * file-io.c: Implemented icalls for locking and unlocking regions
17053         in a file.
17054         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
17055         FALSE on error (fixes both compiler warning and real bug.)
17056
17057 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
17058
17059         * culture-info-tables.h: reflecting locale-builder updates.
17060
17061           (Added missing ChangeLog entry for 05/26)
17062
17063 2004-05-27  Jackson Harper  <jackson@ximian.com>
17064
17065         * locales.c: Fix some cut and paste errors.
17066         
17067 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17068
17069         * mono-config.c: set the correct path for config. directory on windows.
17070
17071 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17072
17073         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
17074           on win32.
17075
17076 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
17079         from pinvoke functions.
17080         
17081         * marshal.c (mono_ftnptr_to_delegate): Implement this.
17082
17083 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17084
17085         * culture-info-tables.h: reflecting locale-builder updates.
17086
17087 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17088
17089         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
17090         #59086.
17091
17092 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
17093
17094         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
17095         * icall.c: Modified icalls for RNG.
17096         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
17097         Windows (CryptoAPI).
17098
17099 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * locales.c: Fix build.
17102
17103 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17104
17105         * culture-info-tables.h: reflecting locale-builder updates.
17106
17107 2004-05-25  Jackson Harper  <jackson@ximian.com>
17108
17109         * locales.c: When creating the current culture use the $LANGs
17110         specific culture. So DateTimeFormat and NumberFormat entries are created.
17111         
17112 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
17115         a char array as parameter.
17116
17117 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
17118
17119         * image.c: In mono_image_open(), always use an absolute path name to
17120           look for already loaded images.
17121
17122 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
17123
17124         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
17125         missing in the windows build (like older cygwin include files).
17126
17127 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
17128
17129         * icall.c: Fixed check for possible integer overflow in Buffer_
17130         BlockCopy icall. Replaced comments style // by /* */.
17131
17132 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17133
17134         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
17135         
17136         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
17137         check after MONO_VTADDR. Fixes pinvoke2.exe.
17138
17139         * marshal.h marshal.c metadata.h: Add beginnings of support for
17140         ftnptr -> delegate marshalling.
17141
17142 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17143
17144         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
17145         * threads.c: Fix warnings.
17146
17147 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17148
17149         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
17150         * icall.c: Registered icalls for Suspend and Resume.
17151         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
17152           Thread.Abort.
17153         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
17154         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
17155         * process.c: Use WaitForSingleObjectEx.
17156         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
17157           checkpoints.
17158         * threads.c, threads.h: Make use of new Ex wait methods. Improved
17159           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
17160           for Suspend and Resume. Added new mono_thread_stop, used for stoping
17161           background threads. Added basic support for Abort in Windows.
17162           Start new threads using a managed delegate invoke wrapper. This wrapper
17163           has an interruption checkpoint that is needed since an interruption
17164           can be requested before the thread leaves the unmanaged code that starts 
17165           the thread.
17166         * marshal.c: Added interruption checkpoint after every native call, and
17167           also before managed calls for wrappers called from unmanaged code to
17168           go into managed code.
17169         * object.h: Added new field in MonoThread to keep track of interruption
17170           requests.
17171
17172 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17173
17174         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
17175         calls.
17176
17177 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17178
17179         * appdomain.c:
17180         * assembly.c:
17181         * gc.c:
17182         * locales.c:
17183         * mono-config.c:
17184         * rand.c: getenv -> g_getenv (windows!)
17185
17186         * process.c: complete_path is also used on non-windows platforms.
17187
17188 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17189
17190         * icall.c: new signature for Process_Start.
17191
17192         * process.[ch]: new signature for Process_Start. If we're on windows
17193         and UseShellExecute is false, we have to search for the program by
17194         ourselves if we don't get a full path.
17195
17196 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17197
17198         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
17199         marshalling and call CleanUpNativeData if needed. Fixes #58646.
17200
17201 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17202
17203         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
17204         Fixes bug #58373.
17205
17206 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17207
17208         * process.c: use double quotes to quote program name and arguments on
17209         windows. Fixes bug #58575.
17210
17211 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17212
17213         * file-io.c: don't return "." and ".." when using windows Find*File.
17214
17215 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
17216
17217         * marshal.c: Don't pass wrappers to message init because method 
17218         addressed used to lookup metadata. part of remoting[2|3] fix.
17219
17220 2004-05-15  Jackson Harper  <jackson@ximian.com>
17221
17222         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
17223         path is essentially the same as MONO_PATH except that it points to
17224         GACs instead of lib directories.
17225         * loader.h: The user gac is gone so we dont need function to
17226         enable/disable it.
17227         * mono-config.c: user gac option is now gone.
17228         
17229 2004-05-15  Jackson Harper  <jackson@ximian.com>
17230
17231         * culture-info.h: Make defines more consistent, add calendar data
17232         to the culture info table.
17233         * culture-info-tables.h: Add basic calendar data. Basically
17234         everyone gets default gregorian until all the data is
17235         updated.
17236         * locales.c: Use the new consistent defines. Set calendar data for
17237         culture info objects.
17238         * object.h: add a field for calendar data to CultureInfo
17239         
17240 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17241
17242         * image.c: image->runtime_invoke_cache is keyed on signatures now.
17243         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
17244         a signature.
17245         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
17246         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
17247         an extra param that is the pointer of the method to invoke. The IL for
17248         the invoke method is no longer specific to the method, but to the
17249         signature of the method. Thus, we can share the same code for multiple
17250         methods. This reduces the number of methods that have to be compiled.
17251
17252 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17253
17254         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
17255
17256         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17257
17258         * icall.c: Optimize Buffer.BlockCopy.
17259
17260 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17261
17262         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
17263         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
17264         quote). Changed them to "MMMM yyyy".
17265
17266 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
17267
17268         * rand.c
17269         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
17270
17271 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * reflection.h: Updated after changes to managed structures.
17274
17275         * appdomain.c: Bump corlib version.
17276
17277 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17278
17279         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
17280         windows.
17281
17282 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17283
17284         * Makefile.am: link to ../os/libmonoos.la on windows.
17285
17286         * assembly.c:
17287                 -If MONO_DEBUG, warn about non-existing directories in
17288                 MONO_PATH.
17289                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
17290                 compile time variable.
17291                 -Removed init_default_path and call mono_set_rootdir from
17292                 libmonoos.a instead (windows only).
17293
17294         * assembly.h: declare mono_assembly_getrootdir().
17295
17296         * domain.c:
17297         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
17298
17299         * loader.c: s/getenv/g_getenv/
17300
17301 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17302
17303         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
17304
17305         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
17306
17307         * metadata.h: Add new marshalling conversions.
17308
17309         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
17310         function.
17311
17312         * reflection.c (mono_reflection_get_type): Lookup the type in all
17313         modules of a multi-module assembly. Fixes #58291.
17314
17315 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17316
17317         * threads.c: Before aborting a background, set the StopRequested
17318         state.  This avoids throwing the Abort exception.
17319         In mono_thread_manage, don't continue with the shutdown until all
17320         aborted threads have actually stopped.
17321
17322 2004-05-10  Jackson Harper  <jackson@ximian.com>
17323
17324         * locales.c: Remove the modifier from culture names.
17325         
17326 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17327
17328         * Makefile.am: monosn is not installed any more. It has been deprecated
17329         in favor of sn.
17330
17331 2004-05-07  Jackson Harper  <jackson@ximian.com>
17332
17333         * locales.c
17334         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
17335         Fix array construction, add bailout if the length is 0.
17336
17337 2004-05-07  Dick Porter  <dick@ximian.com>
17338
17339         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
17340         machine doesn't have a DNS entry.  Patch by Urs Muff
17341         (umuff@quark.com), fixes bug 57928.
17342
17343 2004-05-06  Jackson Harper  <jackson@ximian.com>
17344
17345         * reflection.c: Handle null PublicTokens properly. alloc mem for
17346         assembly names culture so we dont crash when freeing it.
17347         
17348 2004-05-06  Jackson Harper  <jackson@ximian.com>
17349
17350         * assembly.c: Check the usergac when loading with partial names.
17351         
17352 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17353
17354         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
17355         does nothing for now (not required for Linux/Windows) but the class
17356         library can call it (and a newer or modified runtime could need it).
17357         * icall.c: Registred icall.
17358
17359 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17360
17361         * loader.c: prints a message on module loading error we set MONO_DEBUG
17362         environment variable.
17363
17364 2004-05-05  Jackson Harper  <jackson@ximian.com>
17365
17366         * appdomain.c: Handle PublicKeyToken=null properly.
17367         
17368 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17369
17370         * environment.c|h: Added icall ves_icall_System_Environment_
17371         GetOSVersionString to get the current OS version as a string.
17372         * icall.c: Registred icall.
17373
17374 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
17375
17376         * object.c: in mono_object_get_virtual_method(), take into account that
17377         non-virtual methods don't have a slot in the vtable. Check needed when
17378         the object is a proxy.
17379
17380 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
17383         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
17384
17385         * object.c (mono_class_compute_gc_descriptor): Fix warning.
17386
17387         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
17388         passed when a valuetype is expected.
17389
17390         * object.c (mono_unhandled_exception): Only set the exit code if the
17391         exception happens in the main thread. Fixes thread5.exe.
17392
17393         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
17394         invalid names. Fixes #58047.
17395
17396 2004-05-03  Jackson Harper  <jackson@ximian.com>
17397
17398         * assembly.c: This line was committed accidently and is unneeded.
17399         
17400 2004-05-03  Jackson Harper  <jackson@ximian.com>
17401
17402         * icall.c: Add new icall for Assembly::LoadWithPartialName
17403         * assembly.c/.h: new function that probes the GAC to load partial
17404         assembly names by Paolo Molaro.
17405         
17406 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17407
17408         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
17409         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
17410         (type_get_fully_qualified_name): Added PublicKeyToken when building a
17411         full type name.
17412
17413 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17414
17415         * appdomain.c: fixed check for 'neutral' culture and removed warning.
17416         * reflection.c: fix bug when parsing a full type name and Version is not
17417         the last thing in the string.
17418
17419 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
17420
17421         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
17422         crashes when it is freed.
17423
17424 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17425
17426         * assembly.c: print the compat warning to stderr.
17427
17428 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
17429
17430         * assembly.c (mono_assembly_load_references): Add a compatibility
17431         hack to run old applications that might be still referencing the
17432         3300-based assemblies, only do this for System.xxx.
17433
17434 2004-05-01  Jackson Harper  <jackson@ximian.com>
17435
17436         * appdomain.c: If the culture is neutral we set it to "".
17437         
17438 2004-04-29  Jackson Harper  <jackson@ximian.com>
17439
17440         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
17441
17442 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
17443  
17444         * string-icalls.c: added low overhead function for copying chars
17445         * icall.c: added needed icall for the above function
17446  
17447 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17448
17449         * icall.c: fix return value of get_global_assembly_cache.  Implemented
17450         Environment.GetLogicalDrives.
17451
17452 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
17453
17454         * rand.c: try and talk to egd or prngd
17455         for random bytes if opening devices fail.
17456
17457 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17458
17459         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
17460         alignment for the type using the native alignment of its members 
17461         instead of using klass->min_align.
17462
17463         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
17464
17465 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17466
17467         * file-io.c:
17468         * socket-io.c: added check for sys/aio.h.
17469
17470 2004-04-28  Dick Porter  <dick@ximian.com>
17471
17472         * threads.c: Don't abort a thread thats already aborting, when
17473         terminating everything.
17474
17475 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17476
17477         * icall.c: added 2 new async calls for Socket.
17478
17479         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
17480         IO on *nix systems.
17481
17482         * threadpool.c: removed unused variable.
17483
17484 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
17485
17486         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
17487
17488 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17489
17490         * locales.c: put back string_invariant_tolower () and
17491         string_invariant_toupper ().
17492
17493 2004-04-26 David Waite <mass@akuma.org>
17494
17495         * file-io.h:
17496         * socket-io.h:
17497         * threads.h:
17498         * unicode.h: remove comma from end of enumeration declarations
17499
17500 2004-04-26 David Waite <mass@akuma.org>
17501
17502         * debug-mono-symfile.h:
17503         * decimal.c:
17504         * mono_debug.h:
17505         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
17506
17507
17508 2004-04-26  Jackson Harper  <jackson@ximian.com>
17509
17510         * appdomain.c: Increment version number.
17511         
17512 2004-04-26  Jackson Harper  <jackson@ximian.com>
17513
17514         * appdomain.c: Set assembly references public token value when
17515         PublicKeyToken is specified, not the hash_value. Free public token
17516         values when free assembly name data. Previously the public key
17517         token was hex decoded, however we are using hex encoded public key
17518         tokens, so this is not neccasary.
17519         * assembly.c: Lookup assemblies in the gac if their public token
17520         value is set. Add function to allow enabling user gac
17521         lookups. Specify whether or not the assembly was loaded from the
17522         GAC. Compare full assembly names when checking the cache for
17523         assemblies (Temporarily disabled see comment in code). Remove
17524         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
17525         specifies trace-loader they get extra info to stdout on the
17526         loading of assemblies.
17527         * image.h: Add a field for an assembly references public token
17528         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
17529         whether an assembly has been loaded from the GAC.
17530         * image.c: Remove a corlib -> mscorlib name mapping.
17531         * loader.h: Add function to enable/disable the user gac.
17532         * mono-config.c: Check if the usergac is enabled in the config
17533         file.
17534         * icall.c: New icall to determine whether or not an assembly has
17535         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
17536         * tabldefs.h: Add constant for assemblyref flag that specifies a
17537         full public key is used instead of a public token.
17538         * reflection.c: Remove mscorlib -> corlib mappings. Set
17539         PublicTokenValue instead of hash value. This value is a hex
17540         string so it does not need to be expanded.
17541
17542 2004-04-26  Martin Baulig  <martin@ximian.com>
17543
17544         * mono-debug-debugger.c (mono_debugger_initialize): Set
17545         `mono_debugger_initialized' before calling mono_debug_lock().
17546
17547 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
17548
17549         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
17550           InternalToUpper/InternalToLower.
17551         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
17552           removed invariant culture shortcut.  This is now done in managed code.
17553         * locales.c: (string_invariant_toupper/tolower) removed.
17554
17555 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17556
17557         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
17558         Added Poll internal call.
17559
17560         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
17561         call for Poll. Select was too heavy for polling a single socket.
17562
17563         * threadpool.[ch]: added mono_threadpool_cleanup.
17564         * threads.c: use it. Don't use Thread_Abort on windows.
17565
17566 2004-04-23  Martin Baulig  <martin@ximian.com>
17567
17568         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
17569
17570 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
17571
17572         * icall.c: Registred new icalls for key pair protection and added an
17573         icall for Environment.GetFolderPath on Windows.
17574         * security.c|h: Added new icalls for key pair protection.
17575
17576 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17577
17578         * socket-io.c: don't display the non-supported family warning for known
17579         families. Now this is not displayed on windows when checking support
17580         for IPv4/IPv6.
17581
17582 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17583
17584         * class.c: don't display the layout warning for static fields.
17585
17586 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
17587
17588         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
17589         * locales.c, locales.h: Added new icalls for culture-specific
17590         Char.ToLower and Char.ToUpper.
17591
17592 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17593
17594         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
17595         by David Waite.
17596
17597 2004-04-20  Martin Baulig  <martin@ximian.com>
17598
17599         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
17600         of the type name before passing it to mono_reflection_type_from_name().
17601
17602 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17603
17604         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
17605         encodings here. Fixes #56965.
17606
17607 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
17608
17609         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17610         fix test on strstr result not that I can see anything that
17611         relies on the result.
17612
17613 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17614
17615         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
17616         Fixes #57081.
17617
17618         * marshal.c (mono_marshal_get_string_encoding): New helper function.
17619
17620         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
17621         function to determine which marshalling to use for strings. Fixes
17622         #56965.
17623
17624         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
17625
17626         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
17627
17628 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
17629
17630         * icall.c: #include mono-config.h
17631
17632 2004-04-15  Jackson Harper  <jackson@ximian.com>
17633
17634         * culture-info-tables.h: Fix date formats for en-US culture.
17635         
17636 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
17637
17638         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
17639         ThreadPool.SetMinThreads.
17640         * threadpool.c: Implemented ThreadPool.GetMinThreads and
17641         ThreadPool.SetMinThreads.
17642
17643 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17644
17645         * mono-config.c: also load the .config file in the directory
17646         where the assembly was found.
17647
17648 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17649
17650         * assembly.c: load per-assembly config files.
17651         * icall.c: decrapified code to get the config dir and moved to
17652         mono-config.c.
17653         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
17654         per-assembly config files. When doing a dll map lookup give precedence
17655         to the per-assembly data.
17656
17657 2004-04-14  Martin Baulig  <martin@ximian.com>
17658
17659         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
17660         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
17661         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
17662
17663         * mono-debugger-debugger.c: While the debugger is locked, remember
17664         whether the symbol tables have changes and send one single
17665         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
17666
17667 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17668
17669         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
17670
17671         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
17672         function.
17673
17674         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
17675         account when marshalling string arrays. Fixes #56965.
17676
17677 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
17678
17679         * icall.c: Add new icalls mapping for security.
17680         * security.c|h: Add internal calls for WindowsIdentity,
17681         WindowsImpersonationContext and WindowsPrincipal.
17682
17683 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
17684
17685         * class.c: Added comment to ensure the System.MonoDummy class
17686         is removed when no longer necessary
17687
17688 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17689
17690         * appdomain.c: Pass arguments to the bootstraping exceptions to
17691         minimize JITed methods at boot
17692
17693         * metadata.c (mono_exception_from_name_two_strings): Allow for the
17694         second string to be null.
17695
17696         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17697         Change the protocol to minimize the JIT methods at startup.  Now
17698         it Returns the internal codepage, if the value of "int_code_page"
17699         is 1 at entry, and we can not compute a suitable code page
17700         number, returns the code page as a string.
17701
17702 2004-04-13  Jackson Harper  <jackson@ximian.com>
17703
17704         * culture-info-tables.h: Fix number of decimal digits for all
17705         english locales.
17706
17707 2004-04-13  Jackson Harper  <jackson@ximian.com>
17708
17709         * icall.c: Clairfy out of sync error message. It is not always
17710         your corlib that is out of sync.
17711
17712 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
17715         properties when only the set accessor is overriden. Fixes #55874.
17716
17717 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
17718
17719         * assembly.c (mono_assembly_load_references): Make this thread safe.
17720         Fixes #56327.
17721
17722 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17723
17724         * monosn.c: Add missing initialization calls.
17725
17726 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
17727
17728         * locales.c:
17729         ves_icall_System_Globalization_CultureInfo_construct_number_format
17730         Fix g_assert so it compiles on fussier compilers re int/ptr
17731         mismatch
17732
17733 2004-04-08  Dick Porter  <dick@ximian.com>
17734
17735         * socket-io.h:
17736         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
17737         53992.  Also rearrange the code so that the internal calls return
17738         an error value and exceptions are thrown from managed code.
17739
17740         * icall.c: Add type info to the socket icalls.
17741
17742 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17743
17744         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
17745         owes me a beer.
17746
17747 2004-04-07  Martin Baulig  <martin@ximian.com>
17748
17749         * class.c (mono_class_from_generic_parameter): Don't default
17750         `klass->parent' to `mono_defaults.object_type'.
17751
17752 2004-04-07  Martin Baulig  <martin@ximian.com>
17753
17754         * reflection.c (mono_reflection_initialize_generic_parameter): Set
17755         `param->pklass->reflection_info'.       
17756
17757 2004-04-07  Jackson Harper  <jackson@ximian.com>
17758
17759         * culture-info-tables.h: Fix date separator symbol.
17760         
17761 2004-04-07  Martin Baulig  <martin@ximian.com>
17762
17763         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
17764         from System.Type to System.MonoType.
17765
17766 2004-04-07  Martin Baulig  <martin@ximian.com>
17767
17768         * reflection.h
17769         (MonoReflectionGenericParam): Added `has_reference_type' and
17770         `has_value_type' fields.
17771
17772         * reflection.c (mono_image_get_generic_param_info): Encode the
17773         correct flags if we have the `class' or `struct' constraint.
17774
17775 2004-04-07  Martin Baulig  <martin@ximian.com>
17776
17777         * reflection.h
17778         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
17779
17780 2004-04-07  Jackson Harper  <jackson@ximian.com>
17781
17782         * appdomain.c: Revert extra patches, just wanted to bump the
17783         version number.
17784         
17785 2004-04-07  Jackson Harper  <jackson@ximian.com>
17786
17787         * Makefile.am: Add culture-info private headers.
17788         * icall.c: Add new icalls for contructing locales.
17789         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
17790         * locales.h: Declare new culture info construction methods.
17791         * object.h: Add new fields used to avoid the CultureMap to
17792         MonoCultureInfo.
17793         * culture-info.h: Definition of structs used in the culture info
17794         tables.
17795         * culture-info-tables.h: Autogenerated tables that contain culture
17796         info data. This file was generated with the locale-builder tool.
17797         * appdomain.c: Incement corlib version number.
17798         
17799 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
17800
17801         * appdomain.c: (mono_runtime_init) move mono_thread_init
17802         to before mono_object_new calls so critical sections
17803         are initialized before use.
17804
17805 2004-04-07  Martin Baulig  <martin@ximian.com>
17806
17807         * icall.c
17808         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
17809         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
17810         (ves_icall_MonoGenericParam_initialize): Removed.
17811         (monogenericparam_icalls): Removed.
17812         (generictypeparambuilder_icalls): Added new table for
17813         System.Reflection.Emit.GenericTypeParameterBuilder.
17814
17815         * reflection.c
17816         (mono_reflection_define_generic_parameter): Removed.
17817         (mono_reflection_initialize_generic_parameter): This is now called
17818         from GenericTypeParameterBuilder's .ctor.
17819
17820 2004-04-06  Martin Baulig  <martin@ximian.com>
17821
17822         * class.c (mono_class_init): Don't inflate nested classes in a
17823         generic instance.
17824         (mono_type_get_name_recurse): Include the generic arguments for
17825         generic instances and generic type declarations.
17826         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
17827         (_mono_class_get_instantiation_name): Removed.
17828         (mono_class_create_generic): Always use `gklass->name' as our name.
17829
17830         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
17831
17832         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
17833         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
17834         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
17835         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
17836         closed generic methods here.
17837
17838         * reflection.c
17839         (mono_reflection_generic_inst_get_nested_types): Removed.
17840         (inflate_mono_method): Copy the generic parameters from the
17841         MonoMethodHeader into out MonoGenericMethod.
17842
17843 2004-04-06  Martin Baulig  <martin@ximian.com>
17844
17845         * row-indexes.h
17846         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
17847
17848         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
17849
17850         * reflection.c (build_compressed_metadata): If we have any entries
17851         in the GenericParam, MethodSpec or GenericParamConstraint tables,
17852         set the header version to 1.1.
17853
17854 2004-04-06  Martin Baulig  <martin@ximian.com>
17855
17856         * class.c (mono_class_init): If we're a generic instance,
17857         initialize our nested classes, too.
17858         (_mono_class_get_instantiation_name): Deal with the new `!%d'
17859         suffix. 
17860
17861 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17862
17863         * process.c: quote the argument passed to the shell on windows.
17864
17865 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * threads.c (mono_alloc_special_static_data): Allow this to be
17868         called during startup.
17869
17870 2004-04-02  Martin Baulig  <martin@ximian.com>
17871
17872         * icall.c
17873         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
17874
17875 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * icall.c: Fix build.
17878
17879 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
17880
17881         * Makefile.am: Added security.c|h.
17882         * icall.c: Added icall for get_UserName;
17883         * security.c: New file for security related icalls. Added function
17884         get_UserName for System.Environment (fix #56144).
17885         * security.h: New. Header file for security.c
17886
17887 2004-04-02  Dick Porter  <dick@ximian.com>
17888
17889         * icall.c: Deleted the icalls that were obsoleted some time ago
17890         by the ICU string code, and which were mixed into the icall
17891         rearranging.  Fixes bug 55969.
17892
17893         * string-icalls.h: 
17894         * string-icalls.c: Deleted the code that those icalls reference.
17895
17896 2004-04-01  Martin Baulig  <martin@ximian.com>
17897
17898         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
17899
17900         * class.c (mono_class_from_generic_parameter): Don't set 
17901         TYPE_ATTRIBUTE_INTERFACE.
17902         (my_mono_class_from_generic_parameter): Likewise.
17903
17904 2004-04-01  Martin Baulig  <martin@ximian.com>
17905
17906         * loader.c (find_method): Added an optional `MonoClass *ic'
17907         argument to search in a specific interface.
17908         (mono_get_method_constrained): New public function.
17909
17910 2004-04-01  Martin Baulig  <martin@ximian.com>
17911
17912         * reflection.c (mono_image_get_generic_field_token): Use the
17913         `handleref' cache here.
17914
17915 2004-04-01  Martin Baulig  <martin@ximian.com>
17916
17917         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
17918
17919         * reflection.c (create_generic_typespec): Use the `typespec' hash
17920         here, not the `typeref' one.    
17921
17922 2004-04-01  Martin Baulig  <martin@ximian.com>
17923
17924         * class.c (mono_class_inflate_generic_type): Moved the
17925         functionality into a new static inflate_generic_type() which
17926         returns NULL if it didn't do anything.  Only increment the
17927         `mono_stats.inflated_type_count' if we actually inflated
17928         something.
17929         (mono_class_get_full): Check the classes type to see whether we
17930         need to inflate it; also inflate MONO_TYPE_(M)VAR.
17931
17932 2004-04-01  Jackson Harper  <jackson@ximian.com>
17933
17934         * reflection.c: Set culture for assembly references.
17935         
17936 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
17937
17938         * reflection.[ch], icall.[ch], Fix support for pinning variables.
17939
17940 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17941
17942         * assembly.c:
17943         (do_mono_assembly_open): the critical section also covers
17944         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
17945
17946 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17947
17948         * threads.c:
17949         (mono_manage_threads): abort the background threads when finishing.
17950         Fixes bug #47232.
17951
17952 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17953
17954         * gc.c: only close the done_event handle if there was no timeout.
17955         C-ified comments.
17956
17957 2004-03-30  Martin Baulig  <martin@ximian.com>
17958
17959         * icall.c (icall_entries): It's called "System.Activator", not
17960         "System.Activation".    
17961
17962 2004-03-30  Martin Baulig  <martin@ximian.com>
17963
17964         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
17965         (mono_class_create_from_typespec): Likewise.
17966
17967 2004-03-30  Martin Baulig  <martin@ximian.com>
17968
17969         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
17970         `has_ctor_constraint' and `initialized'.
17971
17972 2004-03-30  Martin Baulig  <martin@ximian.com>
17973
17974         * reflection.c (encode_new_constraint): New static function to add
17975         the constructor constraint attribute to a type parameter.
17976         (encode_constraints): Call encode_new_constraint() if necessary.
17977
17978         * reflection.h
17979         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
17980
17981         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
17982         
17983 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
17984
17985         * reflection.c, icall.c: add support for pinning variables. 
17986
17987 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
17988
17989         * marshal.c (mono_marshal_get_managed_wrapper):
17990         init bool local with zero rather than null.
17991
17992 2004-03-29  Martin Baulig  <martin@ximian.com>
17993
17994         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
17995         the "official" behavior here.
17996         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
17997
17998 2004-03-29  Martin Baulig  <martin@ximian.com>
17999
18000         * icall.c: Reflect latest API changes.
18001
18002 2004-03-29  Martin Baulig  <martin@ximian.com>
18003
18004         * loader.c (mono_get_method_from_token): Also call
18005         mono_metadata_load_generic_params () for abstract and interface
18006         methods; replace the type arguments in the method signature with
18007         the ones which are loaded from the metadata.
18008
18009 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
18010
18011         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
18012         of the lock is not the current thread. MS.NET don't do it, in spite of
18013         what the documentation says. See bug #56157.
18014
18015 2004-03-28  Martin Baulig  <martin@ximian.com>
18016
18017         * class.c (mono_class_init): Don't call init_properties() and
18018         init_events() for generic instances; set `prop->parent' when
18019         inflating properties.
18020
18021         * reflection.c (mono_generic_inst_get_object): Call
18022         `mono_class_init (ginst->klass)'.
18023         (mono_type_get_object): Only create a MonoGenericInst if your
18024         generic type is a TypeBuilder.
18025         (do_mono_reflection_bind_generic_parameters): Only set
18026         `ginst->is_dynamic' if our generic type is a TypeBuilder.
18027
18028 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18029
18030         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
18031         Fixes #56091.
18032
18033 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18034
18035         * icall.c: added Kill_internal icall.
18036         * process.[ch]: added Kill_internal icall.
18037
18038 2004-03-25  Martin Baulig  <martin@ximian.com>
18039
18040         * class.h (MonoStats): Added `generic_instance_count',
18041         `inflated_method_count', `inflated_type_count' and
18042         `generics_metadata_size'.       
18043
18044 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18045
18046         * reflection.c: no warnings now.
18047
18048 2004-03-25  Martin Baulig  <martin@ximian.com>
18049
18050         * class.c (mono_class_get_full): New public function; does a
18051         mono_class_get(), but also takes a `MonoGenericContext *'.
18052
18053         * loader.c (mono_field_from_memberref): Renamed to
18054         `field_from_memberref', made static and added `MonoGenericContext *'
18055         argument.
18056         (mono_field_from_token): Added `MonoGenericInst *' argument.
18057         (method_from_memberef): Likewise.
18058         (mono_get_method_from_token): Likewise.
18059         (mono_get_method_full): New public function; does a
18060         mono_get_method(), but also takes a `MonoGenericContext *'.
18061
18062         * verify.c (mono_method_verify): Get the method's generic context
18063         and pass it to mono_field_from_token(), mono_get_method_full() and
18064         mono_class_get_full().
18065
18066 2004-03-25  Martin Baulig  <martin@ximian.com>
18067
18068         * class.c (mono_class_inflate_generic_type): Take a
18069         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
18070         `MonoGenericMethod *'.
18071
18072 2004-03-25  Martin Baulig  <martin@ximian.com>
18073
18074         * loader.h (MonoMethodInflated): Store the MonoGenericContext
18075         instead of the MonoGenericMethod here.
18076
18077 2004-03-25  Martin Baulig  <martin@ximian.com>
18078
18079         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
18080         each time we create a new MonoGenericInst, we also create a new
18081         context which points back to us.
18082
18083         * class.c (inflate_method): Use `ginst->context' instead of
18084         creating a new context.
18085
18086         * loader.c (method_from_memberref): Use
18087         `klass->generic_inst->context' instead of creating a new context.
18088
18089 2004-03-25  Martin Baulig  <martin@ximian.com>
18090
18091         * class.h (MonoGenericContext): New struct.
18092         (MonoGenericMethod): Removed `generic_inst'.
18093
18094         * class.c (mono_class_inflate_generic_method): Take a
18095         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
18096
18097 2004-03-25  Martin Baulig  <martin@ximian.com>
18098
18099         * loader.h (MonoMethodInflated): New typedef.
18100
18101         * metadata.h (MonoMethodSignature): Removed `gen_method', make
18102         `generic_param_count' consume just 30 bits, added `is_inflated'
18103         and `has_type_parameters' flags (one bit each).
18104
18105         * class.c (mono_class_inflate_generic_method): Create a
18106         MonoMethodInflated instead of a MonoMethodNormal and set
18107         `is_inflated' in the method signature.
18108
18109         * class.h (MonoGenericMethod): Removed `generic_method'.
18110
18111 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
18112
18113         * image.c: Make sure the name of a MonoImage is always an absolute path.
18114           This fixes bug #54415.
18115
18116 2004-03-24  Martin Baulig  <martin@ximian.com>
18117
18118         * class.c (mono_class_setup_vtable): If we're a generic instance,
18119         use our generic type's vtable size.
18120
18121 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
18124         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
18125         problems.
18126
18127 2004-03-23  Martin Baulig  <martin@ximian.com>
18128
18129         * class.h (MonoDynamicGenericInst): Added `int count_events' and
18130         `MonoEvent *events'.
18131
18132         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
18133         (typebuilder_icalls): Added "get_event_info"; calls
18134         mono_reflection_event_builder_get_event_info(). 
18135
18136         * reflection.c (mono_reflection_generic_inst_initialize): Added
18137         `MonoArray *events'.
18138         (mono_reflection_event_builder_get_event_info): New function.
18139
18140 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
18141
18142         * object.h: add mono_type_initialization_init
18143
18144         * object.c (mono_runtime_class_init): 
18145         implement class constructor synchronization rules
18146         to cope with threading issues.  
18147         add mono_type_initialization_init
18148
18149         * appdomain.c (mono_runtime_init): call 
18150         mono_type_initialization_init
18151
18152         * class.h: removing initializing field from MonoVTable
18153
18154 2004-03-23  Martin Baulig  <martin@ximian.com>
18155
18156         * class.c (my_mono_class_from_generic_parameter): Use
18157         `param->name' if it's not NULL. 
18158
18159 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
18160
18161         * class.c: do not insert non-virtual methods in the vtable.
18162         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
18163         that means the method is non-virtual. This never would have
18164         happened before.
18165
18166 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18167
18168         * profiler.c: Added lock for accessing coverage_hash.
18169
18170 2004-03-22  Martin Baulig  <martin@ximian.com>
18171
18172         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
18173         `method->method->signature->generic_param_count != 0' to make it
18174         work for interface methods.
18175
18176 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18177
18178         * process.c: quote the string passed to the shell using g_shell_quote.
18179
18180 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18181
18182         * threads.c:
18183         (mono_threads_manage): don't remove the finalizer thread and self
18184         from the threads hash table so that mono_thread_manage can be called
18185         more than once.
18186
18187 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18188
18189         * process.c: quote the arguments when UseShellExecute is true. Fixes
18190         bug #55790.
18191
18192 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18193
18194         * threads.c: set mono_thread_detach as a cleanup routine for every
18195         thread. This way it's always executed upon thread termination, either
18196         aborted or finished normally. No more xsp hangs!
18197
18198 2004-03-17  Martin Baulig  <martin@ximian.com>
18199
18200         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
18201         `int count_nested' and a `MonoType **nested'.
18202
18203         * reflection.c (mono_reflection_bind_generic_parameters): Moved
18204         most of the functionality into a new static
18205         do_mono_reflection_bind_generic_parameters() and don't take a
18206         `MonoType *nested_in' argument any more.  Don't compute nested
18207         types here.
18208         (mono_reflection_generic_inst_get_nested_types): New public method
18209         to get nested types.
18210
18211         * class.c (mono_class_create_generic): Set `klass->nested_in' if
18212         we're a nested class.
18213
18214         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
18215         mono_reflection_generic_inst_get_nested_types() to compute the
18216         nested types.
18217
18218 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
18221         descriptive error message under windows.
18222         
18223 2004-03-17  Martin Baulig  <martin@ximian.com>
18224
18225         * class.c (dup_type): Added `const MonoType *original' argument;
18226         copy the attrs from the original type.
18227
18228 2004-03-17  Martin Baulig  <martin@ximian.com>
18229
18230         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
18231         `m->generic_inst_cache' here.
18232
18233 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * exception.h exception.c: Add stack_overflow_exception.
18236
18237 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18238
18239         * threadpool.c:
18240         (overlapped_callback): call SetEvent *after* invoking the callback.
18241         No need to call CloseHandle.
18242
18243 2004-03-16  Martin Baulig  <martin@ximian.com>
18244
18245         * reflection.c (mono_image_get_fieldref_token): Take a
18246         `MonoReflectionField *' instead of a `MonoClassField *' and a
18247         `MonoClass *'; store the `MonoReflectionField *' in the hash.
18248
18249 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18250
18251         * appdomain.c: don't add the culture to the filename we're looking for
18252         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
18253
18254 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18255
18256         * locales.c: don't ignore symbols when doing case insensitive compares.
18257         Thanks Dick! Fixes bug #54046.
18258
18259         * threads.c: surround 'threads' usage with enter/leave in
18260         mono_thread_manage.
18261
18262 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
18265         implicitly marshalled as [Out]. Fixes #55450.
18266
18267         (mono_marshal_get_runtime_invoke): Zero out the result if there is
18268         an exception.
18269
18270 2004-03-16  Martin Baulig  <martin@ximian.com>
18271
18272         * class.c (mono_class_from_generic_parameter): Use the actual
18273         parameter name. 
18274
18275 2004-03-16  Martin Baulig  <martin@ximian.com>
18276
18277         * reflection.c (type_get_signature_size): New static function.
18278         Compues the size of the type in a method signature.
18279         (method_get_signature_size): New static function; calls
18280         type_get_signature_size() to compute the actual size of the
18281         method's signature.
18282         (method_encode_signature): Use method_get_signature_size() to get
18283         the signature's size rather than using `nparams * 10'.
18284
18285 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18286
18287         * file-io.h: define here WapiOverlapped on windows. I don't want the
18288         regular OVERLAPPED one.
18289
18290         * file-io.c:
18291         * threadpool.c: somehow, BindIoCompletionCallback is not found.
18292         Disabling AIO on windows.
18293
18294 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18295
18296         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
18297         bug #55385.
18298
18299 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18300
18301         * appdomain.c: upgraded corlib version.
18302
18303         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
18304         and BeginWrite. Allow opening files for asynchrnous operations.
18305
18306         * file-io.h: new struct that maps FileStreamAsyncResult.
18307         * icall.c: added new icalls.
18308         * process.[ch]: support setting child process environment variables
18309         and use the SHELL or COMSPEC when UseShellExecute is true.
18310
18311         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
18312         callback for async. IO is here and also BindHandle.
18313
18314         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
18315         from here.
18316
18317 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * reflection.c (create_custom_attr): Allow len == 0.
18320
18321         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
18322         computation on big-endian machines.
18323
18324 2004-03-13  Martin Baulig  <martin@ximian.com>
18325
18326         * class.h (MonoGenericInst): Added `int count_ifaces'.
18327
18328         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
18329         `ginst->count_ifaces' instead `klass->interface_count' since we
18330         may get called before the vtable is created.
18331
18332         * loader.c (mono_method_get_param_names): If we're a generic
18333         instance, return and don't initialize the class.
18334
18335         * reflection.c (mono_reflection_setup_generic_class): Don't call
18336         ensure_runtime_vtable().
18337         (mono_reflection_bind_generic_parameters): Set
18338         `ginst->count_ifaces'.
18339
18340 2004-03-11  Jackson Harper <jackson@ximian.com>
18341
18342         * icall.c:
18343         * unicode.c:
18344         * unicode.h: Remove unused System.Char icalls.
18345         
18346 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
18347
18348         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
18349         code when we P/Invoke the first library in Windows.Forms, instead
18350         of when we first open the assembly.
18351
18352         * assembly.c: Drop the lookup from here.
18353
18354 2004-03-10  Martin Baulig  <martin@ximian.com>
18355
18356         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
18357         class for properties, fields and events.  Finally fixes #54945.
18358
18359 2004-03-10  Martin Baulig  <martin@ximian.com>
18360
18361         * metadata.c (mono_metadata_class_equal): New static function;
18362         checks whether two generic instances or two generic parameters are
18363         equal.
18364         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
18365         compare classes.        
18366
18367 2004-03-10  Martin Baulig  <martin@ximian.com>
18368
18369         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
18370
18371         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
18372         argument and write it into the `reflection_info' field.
18373
18374         * icall.c
18375         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
18376         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
18377
18378 2004-03-09  Jackson Harper  <jackson@ximian.com>
18379
18380         * char-conversions.h: use 8 bits for numeric data its all we need
18381         * icall.c: numeric data is only 8 bits now.
18382
18383 2004-03-09  Martin Baulig  <martin@ximian.com>
18384
18385         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
18386
18387         * class.c (init_properties, init_events): Initialize the new
18388         `parent' field.
18389
18390         * reflection.c (typebuilder_setup_properties): Likewise.
18391         (typebuilder_setup_events): Likewise.
18392
18393         * reflection.h (MonoEventInfo): Replaced `parent with
18394         `declaring_type' and `reflected_type'.
18395
18396         * icall.c (ves_icall_get_property_info): Distinguish between
18397         declaring and reflected type.
18398         (ves_icall_get_event_info): Likewise.
18399
18400 2004-03-09  Martin Baulig  <martin@ximian.com>
18401
18402         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
18403         (ves_icall_Type_GetField): Correctly set field->klass.
18404
18405 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18406
18407         * loader.h: Fix warning.
18408
18409 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
18410
18411         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
18412         library routine if present.  Notice that it will still continue
18413         executing even if its missing, for those working on the Gtk#
18414         edition of Windows.Forms.
18415
18416         * assembly.c (do_mono_assembly_open): If loading the
18417         System.Windows.Forms call mono_loader_wini_init.
18418
18419 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18420
18421         * class.h: Added MonoRemoteClass struct.
18422         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
18423         function for MonoStrings.
18424         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
18425         Added internal call for getting the proxy type.
18426         * marshal.c: Get the type of transparent proxies from its remote_class.
18427         Added methods that generate the IL for type checks and casts:
18428         mono_marshal_get_isinst, mono_marshal_get_castclass, 
18429         mono_marshal_get_proxy_cancast.
18430         * marshal.h: Declaration of the previous new methods.
18431         * object.c: Added new moethods for creating and updating MonoRemoteClass
18432         instances: mono_remote_class, mono_upgrade_remote_class, 
18433         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
18434         * verify.c: FIx transparent_proxy_fields layout.
18435         * appdomain.c: Bump corlib version.
18436
18437 2004-03-04  Jackson Harper  <jackson@ximian.com>
18438
18439         * icall.c: Add icall to access char conversion tables.
18440         * char-conversions.h: Character conversion tables.
18441         * Makefile.am: Add char-conversions.h private header file.
18442         
18443 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * appdomain.c (unload_thread_main): Increase unloading timeout to
18446         10 sec as a temporary workaround for Nant problems.
18447
18448 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
18449
18450         * gc.c: Add checks for GC_enable and GC_disable.
18451
18452         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
18453         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
18454         (bug #54988).
18455         
18456 2004-02-27  Martin Baulig  <martin@ximian.com>
18457
18458         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18459         `MonoReflectionType *' instead of a `MonoType *'.
18460
18461 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18462
18463         * gc.c (run_finalize): Avoid finalizing the object representing the
18464         finalizer thread.
18465         (finalizer_thread): Fix warning.
18466
18467 2004-02-25  Martin Baulig  <martin@ximian.com>
18468
18469         * class.c (_mono_class_get_instantiation_name): Added `int offset'
18470         argument for nested types.
18471         (mono_class_create_generic): Added support for nested generictypes.
18472
18473         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
18474         `GList *nested'.
18475
18476         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
18477
18478         * reflection.c (method_encode_signature): Increase the minimum
18479         value of `size' from 10 to 11.
18480         (mono_reflection_bind_generic_parameters): Take `int type_argc'
18481         and `MonoType **types' arguments instead of the `MonoArray
18482         *types'; added `MonoType *nested_in'.  Recursively instantiate
18483         nested classes. 
18484
18485 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18486
18487         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
18488         stack_overflow_ex members which are used by exception handling.
18489
18490         * appdomain.c (mono_runtime_init): Initialize the new members.
18491
18492         * gc.c (mono_gc_enable): New helper function.
18493         * gc.c (mono_gc_disable): New helper function.
18494
18495 2004-02-23  Martin Baulig  <martin@ximian.com>
18496
18497         * icall.c: I must have been really stupid - make it actually work
18498         this time ;-)
18499
18500 2004-02-23  Martin Baulig  <martin@ximian.com>
18501
18502         * loader.c (method_from_memberref): Only inflate the method if
18503         it's in another klass.
18504
18505 2004-02-23  Martin Baulig  <martin@ximian.com>
18506
18507         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
18508         (mono_class_init): If we're a generic instance and an interface,
18509         compute `class->interface_id'; also create `class->interfaces'
18510         here and inflate them.
18511
18512         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
18513         `ginst->is_open'.
18514         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
18515
18516         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
18517
18518 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
18519
18520         * reflection.c (method_encode_code): Improved the error message
18521         generated by the exception.
18522
18523 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18524
18525         * icall.c: Martin did not do what he said in the ChangeLog for
18526         2004-02-18, but put back the changes for properties and events.
18527         Commenting those changes out again and adding comment to bug #54518.
18528         
18529         * process.c: removed warning.
18530
18531 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * marshal.c (emit_struct_conv): Print an error message instead of
18534         asserting when a type does not have the StructLayout attribute.
18535
18536 2004-02-20  Martin Baulig  <martin@ximian.com>
18537
18538         * reflection.c (mono_type_get_object): Also use the cache for
18539         generic instances.
18540         (mono_reflection_bind_generic_parameters): Always compute
18541         `ginst->ifaces'.        
18542
18543 2004-02-20  Martin Baulig  <martin@ximian.com>
18544
18545         * class.h (MonoGenericMethod): Removed `klass'.
18546
18547         * class.c (mono_class_inflate_generic_method): Added `MonoClass
18548         *klass' argument.
18549
18550 2004-02-20  Martin Baulig  <martin@ximian.com>
18551
18552         * reflection.c (method_encode_methodspec): Actually use the
18553         uninflated signature for the memberref.
18554
18555 2004-02-20  Martin Baulig  <martin@ximian.com>
18556
18557         * class.h (MonoGenericMethod): Removed `declaring'.
18558
18559         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
18560         is NULL, compute it here.
18561
18562 2004-02-20  Martin Baulig  <martin@ximian.com>
18563
18564         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
18565
18566         * metadata.c (mono_metadata_generic_inst_hash): New method.
18567         (mono_metadata_generic_inst_equal): New method.
18568
18569         * reflection.c (mono_reflection_bind_generic_parameters): Use the
18570         `klass->image->generic_inst_cache' cache to avoid creating
18571         duplicate MonoGenericInst's.
18572
18573         * class.c (mono_class_inflate_generic_type): Use the cache.
18574
18575 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18576
18577         * object.c: fixed gc descriptor calculation for embedded valuetypes.
18578
18579 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18580
18581         * icall.c: added Socket.WSAIoctl icall.
18582
18583         * socket-io.[ch]: implemented
18584         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
18585
18586 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
18587
18588         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
18589
18590 2004-02-18  Urs C Muff  <umuff@quark.com>
18591
18592         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
18593         this work on PPC and other big-endian architectures.
18594
18595         * debug-mono-symfile.h: Prepended the names of all the `guint32'
18596         fields with an underscore to make sure they're only accessed by
18597         the read32() macro.
18598
18599 2004-02-18  Martin Baulig  <martin@ximian.com>
18600
18601         * icall.c: Put the klass->refclass changes back for methods and
18602         fields, but not for properties and events.  We're currently not
18603         distinguishing between DeclaringType and ReflectedType for
18604         properties and events, that's what caused the regressions.
18605
18606 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18607
18608         * object.c:
18609         (mono_async_result_new): the handle can be NULL.
18610
18611         * threadpool.c: Use an event instead of a semaphore, don't initialize
18612         it until needed. This saves quite a few semaphores from being created
18613         when using the threadpool.
18614
18615 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
18616
18617         * object.c (mono_string_is_interned_lookup): Fix interning of long
18618         strings. Fixes #54473.
18619
18620         * domain.c (ldstr_equal): Optimize if the two strings are equal.
18621
18622         * icall.c: Revert the klass->refclass changes since they introduce
18623         regressions (bug #54518).
18624
18625 2004-02-18  Martin Baulig  <martin@ximian.com>
18626
18627         * class.c (mono_class_init): If we're a generic instance and don't
18628         come from a TypeBuilder, inflate our members here.
18629         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
18630         (mono_class_create_generic): New public method.
18631         (mono_class_initialize_generic): Removed.
18632         (get_instantiation_name): Renamed to
18633         _mono_class_get_instantiation_name() and made it public.
18634
18635 2004-02-18  Martin Baulig  <martin@ximian.com>
18636
18637         * class.c (mono_class_inflate_generic_type): Clear the new
18638         instance's `nginst->klass' when inflating a generic instance.
18639         (mono_class_is_subclass_of): Added (basic) support for generic
18640         instances.
18641
18642 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
18643
18644         * appdomain.h, domain.c: use a MonoCodeManager instead of a
18645         MonoMempool to hold compiled native code.
18646
18647 2004-02-17  Martin Baulig  <martin@ximian.com>
18648
18649         * class.h (MonoDynamicGenericInst): Added `count_properties' and
18650         `properties'.
18651
18652         * reflection.c (mono_reflection_generic_inst_initialize): Added
18653         `MonoArray *properties' argument.
18654
18655         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
18656
18657 2004-02-17  Martin Baulig  <martin@ximian.com>
18658
18659         * icall.c (ves_icall_Type_GetFields): Renamed to
18660         ves_icall_Type_GetFields_internal() and added a
18661         `MonoReflectionType *rtype' argument; pass it to
18662         mono_field_get_object() to set the field's "reflected" type.
18663         (ves_icall_Type_GetConstructors): Likewise.
18664         (ves_icall_Type_GetEvents): Likewise.
18665         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
18666         argument; pass it to mono_method_get_object() to set the method's
18667         "reflected" type.       
18668
18669 2004-02-17  Martin Baulig  <martin@ximian.com>
18670
18671         * class.h (MonoDynamicGenericInst): New type.
18672         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
18673
18674         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
18675         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
18676         (ves_icall_MonoGenericInst_GetFields): New interncall.
18677
18678         * class.c (mono_class_from_generic): Don't call
18679         mono_class_initialize_generic() if this is a dynamic instance;
18680         ie. it's being created from a TypeBuilder.
18681         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
18682         `class->byval_arg.type'.
18683
18684         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
18685         to `inflate_method' and made static.
18686         (mono_reflection_inflate_field): Removed.
18687         (mono_reflection_generic_inst_initialize): New public method.
18688
18689         * reflection.h (MonoReflectionGenericInst): Removed `methods',
18690         `ctors' and `fields'; added `initialized'.
18691
18692 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * debug-helpers.c (mono_method_full_name): Fix output for empty
18695         namespaces.
18696
18697 2004-02-12  Martin Baulig  <martin@ximian.com>
18698
18699         * class.h (MonoClassField): Added `MonoType *generic_type'.
18700
18701         * reflection.c (mono_image_get_fieldref_token): Added support for
18702         instantiated generic types.
18703         (field_encode_inflated_field): Removed.
18704         (mono_image_get_inflated_field_token): Removed.
18705         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
18706
18707         * reflection.h (MonoReflectionInflatedField): Removed.
18708
18709 2004-02-12  Martin Baulig  <martin@ximian.com>
18710
18711         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
18712         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
18713
18714         * reflection.c (mono_image_get_methodspec_token): Take a
18715         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
18716         (mono_image_create_token): Check whether we have a
18717         `method->signature->gen_method' and call
18718         mono_image_get_methodspec_token() if appropriate.
18719         (inflated_method_get_object): Removed.
18720         (mono_reflection_bind_generic_method_parameters): Return a
18721         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
18722         (mono_reflection_inflate_method_or_ctor): Likewise.
18723
18724         * reflection.h (MonoReflectionInflatedMethod): Removed.
18725
18726 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
18727
18728         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
18729         for custom valuetype marshalling.
18730
18731         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
18732
18733 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18734
18735         * icall.c: fixed WSAGetLastError_internal name.
18736
18737 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18738
18739         * threads.c (mono_thread_attach): Allow this to be called multiple
18740         times for a thread.
18741         
18742         * threads.c (build_wait_tids): Do not wait for ourselves.
18743
18744         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
18745         appdomain list is empty.
18746
18747         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
18748         memory returned by mono_string_builder_to_utf16, since it points into
18749         managed memory. Thanks to Bernie Solomon for noticing this.
18750
18751         * icall.c: Add AppDomainSetup icalls.
18752
18753         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
18754
18755         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
18756         types.
18757
18758         * reflection.c (reflection_methodbuilder_to_mono_method): Save
18759         custom attributes to the method_aux struct. Also fix array indexes etc.
18760
18761         * loader.c (mono_method_get_param_names): Make dynamic case work again.
18762         
18763 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
18764
18765         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
18766         (both static and runtime) and reduce startup time.
18767
18768 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18769
18770         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
18771         AsAny marshalling conversion instead of crashing.
18772
18773         * marshal.c: Fix warnings.
18774
18775 2004-02-09  Martin Baulig  <martin@ximian.com>
18776
18777         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
18778
18779         * reflection.h (MonoReflectionInflatedMethod): Removed the
18780         `declaring' field, it's now in the unmanaged MonoGenericMethod.
18781
18782         * reflection.c (method_encode_methodspec): Removed the `method'
18783         argument; we get it from `gmethod->declaring'.
18784         (inflated_method_get_object): Removed the `declaring' argument.
18785
18786 2004-02-09  Martin Baulig  <martin@ximian.com>
18787
18788         * class.h (MonoGenericMethod): New type.
18789         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
18790         `generic_method'.
18791
18792         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
18793         a `MonoGenericMethod *gen_method' one.
18794
18795         * class.c (mono_class_inflate_generic_type): Take an additional
18796         `MonoGenericMethod * argument.  This is only non-NULL if we're
18797         inflating types for a generic method.   
18798         (mono_class_inflate_generic_signature): Renamed to
18799         inflate_generic_signature() and made static; take a
18800         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18801         (inflate_generic_header): Take a `MonoGenericMethod *' argument
18802         instead of a `MonoGenericInst *' one.
18803         (mono_class_inflate_generic_method): Likewise.
18804
18805         * reflection.c (encode_generic_method_sig): Take a
18806         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18807         (method_encode_methodspec): Likewise.
18808         (inflated_method_get_object): Likewise. 
18809
18810         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
18811         field with a `MonoGenericMethod *gmethod' one.  
18812
18813 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
18814
18815         * class.h (mono_class_has_parent): add parens to expansion
18816         so you can ! this.
18817
18818 2004-02-08  Martin Baulig  <martin@ximian.com>
18819
18820         * image.h (MonoImage): Removed `generics_cache'.
18821
18822         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
18823         instead of a `MonoType *' argument; removed the `inflate_methods'
18824         argument.  Don't inflate methods here.
18825
18826         * loader.c (find_method): If it's a generic instance, call
18827         mono_class_init() on the `sclass->generic_inst->generic_type'.
18828
18829         * metadata.c (mono_type_size): Make this work on uninitialized
18830         generic instances; call it on the `ginst->generic_type's class.
18831
18832         * reflection.c (mono_reflection_bind_generic_parameters): Call
18833         mono_class_from_generic() to create the `ginst->klass'.
18834
18835 2004-02-08  Martin Baulig  <martin@ximian.com>
18836
18837         * class.h (MonoClass): Changed type of `generic_inst' from
18838         `MonoType *' to `MonoGenericInst *'.
18839
18840 2004-02-08  Martin Baulig  <martin@ximian.com>
18841
18842         * icall.c (ves_icall_Type_BindGenericParameters): Just call
18843         mono_type_get_object(), this is now creating a `MonoGenericInst'
18844         for MONO_TYPE_GENERICINST.
18845         (ves_icall_MonoGenericInst_GetParentType): Likewise.
18846         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
18847
18848         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
18849         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
18850         (inflated_method_get_object): Added `MonoClass *refclass' argument.
18851         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
18852         and reflected type.
18853
18854         * reflection.h (MonoReflectionInflatedMethod): Removed
18855         `declaring_type' and `reflected_type'.
18856
18857 2004-02-08  Martin Baulig  <martin@ximian.com>
18858
18859         * class.h (MonoGenericInst): Added `MonoType *parent' and
18860         `MonoType **ifaces'.
18861
18862         * reflection.h (MonoReflectionGenericInst): Removed `klass',
18863         `parent' and `interfaces'.
18864
18865         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18866         `MonoType *' argument and return a `MonoType *'.
18867
18868         * icall.c
18869         (ves_icall_MonoGenericInst_GetParentType): New interncall.
18870         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
18871
18872 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18873
18874         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
18875         valuetype marshalling.
18876
18877 2004-02-06  Martin Baulig  <martin@ximian.com>
18878
18879         * class.c
18880         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
18881         (my_mono_class_from_generic_parameter): Likewise.
18882
18883 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18884
18885         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
18886         contents of the symbol files lazily.
18887
18888         * object.h (MonoThread): Add 'name' and 'name_len' fields.
18889
18890         * threads.h threads.c icall.c: New icalls for getting and setting the
18891         threads name.
18892
18893 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
18896         Raise an exception when the domain is not found.
18897
18898 2004-02-03  Martin Baulig  <martin@ximian.com>
18899
18900         * reflection.c (mono_image_get_methodspec_token): Use the
18901         uninflated signature; fixes gen-33.
18902
18903 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * gc.c threads.c: Make the finalizer thread a normal managed thread so
18906         the finalizer code can use thread functionality.
18907
18908         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
18909         the finalizer thread.
18910
18911         * threads.c: Make some functions more robust.
18912
18913         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
18914
18915         * metadata.h: Add new marshalling conventions.
18916
18917         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
18918         stringbuilder marshalling. Fixes #53700.
18919
18920         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
18921
18922         * reflection.c (mono_image_get_type_info): Save declarative security
18923         info.
18924
18925         * reflection.c (mono_image_get_field_info): Handle uninitialized 
18926         unmanaged fields as well.
18927
18928         * appdomain.c: Bump corlib version.
18929
18930 2004-02-01  Martin Baulig  <martin@ximian.com>
18931
18932         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
18933         method type arguments.  
18934
18935 2004-01-30  Duncan Mak  <duncan@ximian.com>
18936
18937         * marshal.h: Add prototype for
18938         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
18939         and
18940         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
18941         fix the build.
18942
18943 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
18946         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
18947
18948 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * marshal.c (mono_marshal_get_native_wrapper): Add support for
18951         custom marshalling of valuetypes.
18952
18953         * marshal.c: Fix some warnings.
18954
18955 2004-01-29  Martin Baulig  <martin@ximian.com>
18956
18957         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
18958         for generic method parameters.
18959
18960         * reflection.c (method_encode_methodspec): Write the uninflated
18961         signature into the methodspec table.
18962         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
18963         is always the uninflated method.
18964         (reflection_methodbuilder_to_mono_method): Copy the generic
18965         parameters from the MethodBuilder into `header->gen_params'.
18966
18967 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18968
18969         * class.c (mono_class_from_generic_parameter): Fix warning.
18970
18971 2004-01-27  Martin Baulig  <martin@ximian.com>
18972
18973         * class.c (mono_class_from_generic_parameter): Don't create
18974         `klass->methods' here.  
18975
18976 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
18977
18978         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
18979         extension since it does not work with libraries named lib<FOO>.dll.so.
18980
18981 2004-01-25  Martin Baulig  <martin@ximian.com>
18982
18983         * class.c (mono_class_inflate_generic_type): Added support for
18984         MONO_TYPE_GENERICINST.
18985
18986         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
18987         inflate methods on open constructed types.      
18988
18989 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18990
18991         * object.c: fire ProcessExit event in the root AppDomain after running
18992         Main. Fixes bug #53299.
18993
18994 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18995
18996         * socket-io.c: include the new socket-wrappers.h header.
18997         Use the wrappers instead of the unix socket functions to make the code
18998         more clear.
18999
19000 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
19003
19004         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19005         Fixes #22532.
19006
19007 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
19008
19009         * reflection.c (mono_image_create_pefile): Handle the case when the
19010         entry point is not a MethodBuilder.
19011
19012         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19013         field to ReflectionMethod since it is not allways a builder.
19014
19015         * reflection.c (type_get_fully_qualified_name): New helper function to
19016         return the fully qualified name of a type.
19017
19018         * reflection.c (encode_marshal_blob): Always emit the fully qualified
19019         type name for custom marshallers.
19020
19021         * reflection.c (mono_marshal_spec_from_builder): Ditto.
19022
19023         * class.c (mono_class_setup_vtable): If a parent class already 
19024         implements an interface, use the implementing methods from that class.
19025         Fixes #53148.
19026
19027 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19028
19029         * threadpool.c: just return instead of ExitThread to allow for thread
19030         clean up earlier.
19031
19032 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
19033
19034         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
19035         when closing resource modules.
19036
19037         * reflection.c (mono_image_create_pefile): Handle the case when the
19038         entry point is not a MethodBuilder.
19039
19040         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19041         field to ReflectionMethod since it is not allways a builder.
19042
19043 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
19044
19045         * marshal.c (mono_marshal_get_managed_wrapper): 
19046         mono_marshal_alloc takes native int so CONV_I
19047         the arg for 64bits.
19048
19049 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * reflection.c (fixup_cattrs): New function to fixup the methoddef
19052         tokens in the cattr table. Fixes #53108.
19053
19054 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19055
19056         * loader.c: don't trim ".dll" before looking up in the config file.
19057         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
19058
19059 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
19062         Return the module which contains the resource as well.
19063         (ves_icall_System_Reflection_Module_Close): New icall.
19064
19065         * appdomain.c: Bump corlib version number.
19066
19067         * image.c (mono_image_addref): New public function.
19068
19069         * assembly.c: Call mono_image_addref.
19070
19071         * reflection.c (mono_module_get_object): Increase reference count of 
19072         the image.
19073
19074         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19075         Fixes #22532.
19076
19077         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
19078         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
19079         proper exceptions on DllImport problems.
19080
19081 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
19082
19083         * class.c, metadata.c: eliminate CSIZE macro.
19084
19085 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
19086
19087         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
19088         * object.h: Added async_callback field in MonoAsyncResult.
19089         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
19090         * verify.c: Added async_callback in MonoAsyncResult layout.
19091
19092 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
19093
19094         * reflection.c (mono_reflection_get_custom_attrs): Add support
19095         for Modules.
19096
19097 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19098
19099         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
19100         marshalling.
19101         (mono_marshal_method_from_wrapper): Add null pointer check.
19102
19103 2004-01-16  Martin Baulig  <martin@ximian.com>
19104
19105         * debug-mono-symfile.h: Set version number to 36 and reflect
19106         latest symbol writer changes.
19107
19108 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19109
19110         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
19111         multi-dimensional arrays.
19112         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
19113         (mono_class_from_mono_type): Use bounded_array_class_get.
19114         
19115         * class.c (mono_bounded_array_class_get): New function which takes
19116         a 'bounded' bool argument to distinguish vectors from one dimensional
19117         arrays.
19118
19119         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
19120         bounded_array_class_get if the array has bounds.
19121
19122         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19123         Search modules loaded using AssemblyBuilder:AddModule as well.
19124
19125 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19126
19127         * appdomain.c: increased corlib version.
19128         * filewatcher.c: removed g_print.
19129         * icall.c:
19130         (get_property_info): only allocate what is actually requested.
19131         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
19132
19133 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19134
19135         * Makefile.am: added filewatcher.[ch]
19136         * filewatcher.[ch]: FileSystemWatcher runtime support.
19137         * icall.c: added new FSW icalls.
19138
19139 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19140
19141         * string-icalls.c: fix stringbuilder regression as suggested by
19142         Iain McCoy <iain@mccoy.id.au>.
19143
19144 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19145
19146         * process.c (process_read_stringtable_block): Recognize '007f' as
19147         a language neutral stringtable block.
19148
19149 2004-01-12  Patrik Torstensson
19150
19151         * object.h (MonoStringBuilder) : Changed layout to support our
19152         new stringbuilder class.
19153         * marshal.c: Change marshalling to support the new layout of 
19154         string builder.
19155         * appdomain.c: increased version number because new layout of
19156         string builder.
19157
19158 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
19159
19160         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
19161         assembly name as an string instead of an AssemblyName, since it is
19162         easier to extract info from it.
19163
19164         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
19165         the culture subdirectories too. Fixes #52231.
19166
19167 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19168
19169         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
19170         It takes 2 new parameters with an optional name for the method to look
19171         for and case ignoring info.
19172
19173         * threadpool.c: removed unused variable.
19174
19175 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19176
19177         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
19178         It takes 2 new parameters with an optional name for the property to look
19179         for and case ignoring info.
19180         Fixes bug #52753.
19181
19182 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19183
19184         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
19185         Fix #52451.
19186
19187 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19188
19189         * appdomain.c:
19190         * assembly.c: escape the uri before passing it to g_filename_from_uri.
19191         Fixes bug #52630.
19192
19193 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * reflection.c: Add support for more than one unmanaged resource.
19196
19197         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
19198         in field->def_value, as done in all other cases.
19199
19200         * reflection.c (mono_reflection_get_custom_attrs): Add support for
19201         TypeBuilders.
19202
19203         * reflection.c (mono_reflection_create_runtime_class): Remove 
19204         errorneous assignment to klass->element_class, since it is already
19205         done in mono_reflection_setup_internal_class.
19206
19207 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19208
19209         * gc.c: added missing LeaveCriticalSection.
19210         * icall.c: indented a couple of lines.
19211         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
19212         if we call EndInvoke inside a callback. Fixes bug #52601.
19213
19214 2004-01-07  Martin Baulig  <martin@ximian.com>
19215
19216         * mono-debug-debugger.h
19217         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
19218
19219 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
19220
19221         * appdomain.c: Use messages in NotImplementedException.
19222
19223         * exception.c (mono_get_exception_not_implemented): Now this takes
19224         a message argument.
19225
19226         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
19227         exception instead of g_asserting an aborting when something is not
19228         implemented.
19229
19230         Add some inline docs.
19231
19232 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
19233
19234         * reflection.h: Update after changes to object layout.
19235
19236         * reflection.c: Implement saving of unmanaged aka win32 resources.
19237
19238         * appdomain.c: Bump version number.
19239
19240         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
19241         Handle missing domains gracefully.
19242
19243 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
19244
19245         * file-io.c : On Windows, there are much more invalid_path_chars.
19246
19247 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19248
19249         * class.h, object.c: prepare for GetType () speedup.
19250
19251 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
19252
19253         * profiler.c: workaround for --profile null reference exception on
19254           cygwin. Patch by Patrik Torstensson.
19255
19256 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
19257
19258         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
19259         make work for unaligned access.
19260
19261 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
19262
19263         * class.c: small cleanup (class->fields [i] -> field).
19264         * image.c: check address of metadata is valid.
19265
19266 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * assembly.h assembly.c (mono_assembly_loaded): New public function to
19269         search the list of loaded assemblies.
19270
19271         * reflection.c (mono_reflection_type_from_name): Use 
19272         mono_assembly_loaded instead of mono_image_loaded.
19273
19274         * reflection.c: Fix warnings.
19275
19276 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
19277
19278         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
19279         is dynamic. This is needed since an assembly can contain both dynamic and
19280         non-dynamic images.
19281
19282         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
19283         assembly->dynamic.
19284
19285         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
19286
19287         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
19288         to store modules loaded using AddModule.
19289
19290         * reflection.c (mono_image_fill_file_table): Generalize this so it works
19291         on Modules.
19292
19293         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
19294
19295         * reflection.c (mono_image_fill_export_table_from_module): New function to
19296         fill out the EXPORTEDTYPES table from a module.
19297
19298         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
19299         into a separate function. Also handle loaded non-dynamic modules.
19300
19301         * reflection.c (mono_image_basic_init): Fix memory allocation.
19302
19303         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19304
19305         * assembly.c (mono_assembly_load_references): Make this public.
19306
19307 2003-12-19  Martin Baulig  <martin@ximian.com>
19308
19309         * class.c (mono_class_initialize_generic): Made this static, take
19310         a `MonoGenericInst *' instead of a `MonoClass *'.
19311         (mono_class_from_generic): Call mono_class_initialize_generic()
19312         unless we're already initialized or being called from
19313         do_mono_metadata_parse_generic_inst().
19314
19315         * class.h (MonoGenericInst): Added `initialized' and
19316         `init_pending' flags.
19317
19318         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
19319         `mono_class_init (gklass)' or mono_class_initialize_generic()
19320         here; set `generic_inst->init_pending' while parsing the
19321         `type_argv'.
19322
19323 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
19324
19325         * locales.c: include string.h for memxxx prototypes
19326
19327 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
19330         constructor when accessing literal fields.
19331
19332 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19335
19336         * reflection.c (assembly_add_resource_manifest): New function to fill
19337         the MANIFESTRESOURCE table.
19338
19339         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
19340
19341         * reflection.h: Update to changes in class layout.
19342
19343         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
19344         Reenable call to mono_runtime_is_shutting_down ().
19345
19346         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
19347         determine if the runtime is shutting down.
19348
19349 2003-12-16  Jackson Harper <jackson@ximian.com>
19350
19351         * icall.c: comment out call to mono_runtime_is_shutting_down to
19352         fix build.
19353         
19354 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
19357         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
19358
19359 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
19360
19361         * reflection.c: move definition of swap_with_size
19362         to before its first call
19363
19364 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * appdomain.c (mono_runtime_is_shutting_down): New public function.
19367
19368         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
19369         icall.
19370
19371         * object.c: Fix warnings.
19372
19373         * icall.c (ves_icall_Type_Get...): Only consider inherited static
19374         members if FlattenHierarchy is set.
19375
19376         * reflection.c (mono_image_add_decl_security): New function to emit
19377         declarative security.
19378
19379         * reflection.h reflection.c: Add support for declarative security.
19380
19381         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19382         
19383 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19386         
19387         * appdomain.c verify.c: Moved corlib version checking into its own
19388         function in appdomain.c since it needs to create vtables etc.
19389
19390 2003-12-13  Patrik Torstensson <p@rxc.se>
19391
19392         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
19393         instead of unwrapped server.
19394
19395 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
19396
19397         * verify.c (check_corlib): Fix field index.
19398
19399 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
19402         GetGacPath icall.
19403
19404 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
19405
19406         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
19407         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
19408         cope with sizeof(size_t) != sizeof(guint32).
19409
19410 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19411
19412         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
19413         in case of failure.
19414
19415 2003-12-10  Mark Crichton <crichton@gimp.org>
19416
19417         * icall.c: removed the GetNonZeroBytes.  We now handle this case
19418         in managed code.
19419
19420         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
19421
19422 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
19423
19424         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
19425         marked as deleted.
19426
19427 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19428
19429         * verify.c (check_corlib): Handle the case when the version field is 
19430         initialized by a static constructor.
19431
19432 2003-12-08  Patrik Torstensson  <p@rxc.se>
19433
19434     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
19435
19436 2003-12-08  Martin Baulig  <martin@ximian.com>
19437
19438         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
19439         a MonoReflectionGenericParameter, also take the parameter index
19440         and name as arguments.
19441         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
19442         (ves_icall_MonoGenericParam_initialize): New interncall.
19443         (ves_icall_Type_make_byref_type): New interncall.
19444
19445         * reflection.h (MonoReflectionGenericParam): Derive from
19446         MonoReflectionType, not just from MonoObject.  Added `refobj' and
19447         `index' fields.
19448
19449         * reflection.c (mono_reflection_define_generic_parameter): Create
19450         and return a new MonoReflectionGenericParam; don't initialize the
19451         constraints here.
19452         (mono_reflection_initialize_generic_parameter): New public method;
19453         initializes the constraints and creates the `param->pklass'.
19454
19455 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19456
19457         * reflection.h reflection.c: Use the new fields 'num_types', 
19458         'num_fields' and 'num_methods' to track the number of types etc.
19459
19460         * verify.c (check_corlib): Check corlib version number.
19461
19462 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
19465         function works on all methods.
19466
19467 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19468
19469         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
19470         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
19471         the custom_type_info flag of the transparent proxy.
19472         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
19473         objects that supports IRemotingTypeInfo.
19474         * object.h: Added custom_type_info field in transparent proxy.
19475
19476 2003-12-06  Martin Baulig  <martin@ximian.com>
19477
19478         * class.c (mono_class_create_from_generic): Removed.
19479         (mono_class_from_generic): Check `ginst->klass' before doing
19480         anything else.  This is important to fully support "recursive"
19481         generic types.
19482
19483         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
19484         empty `generic_inst->klass' before doing anything else.
19485
19486 2003-12-06  Dick Porter  <dick@ximian.com>
19487
19488         * verify.c: 
19489         * object.h:
19490         * icall.c:
19491         * locales.c: Use C structs to access class fields.  Don't do a
19492         conversion between MonoString and UChar because both are
19493         platform-endian UTF-16.  Compare now takes startindex and count
19494         parameters.  Add a char overload for IndexOf.  Speed up the
19495         invariant string IndexOf.
19496
19497 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
19498
19499         * Makefile.am (monosn_LDADD): Fix parallel build.
19500
19501 2003-12-04  Martin Baulig  <martin@ximian.com>
19502
19503         * icall.c
19504         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19505         (ves_icall_Type_make_array_type): New interncall.       
19506
19507 2003-12-04  Martin Baulig  <martin@ximian.com>
19508
19509         * locales.c: also change it in the !HAVE_ICU case.
19510
19511 2003-12-04  Dick Porter  <dick@ximian.com>
19512
19513         * icall.c:
19514         * locales.c: construct_compareinfo is now in CompareInfo, not
19515         CultureInfo.
19516
19517 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19518
19519         * image.c (mono_image_load_file_for_image): Cache loaded images in the
19520         image->files array.
19521
19522         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
19523         table as well.
19524
19525         * assembly.c (mono_assembly_load_references): Only load references
19526         once.
19527
19528         * class.c (mono_class_from_name): Avoid linear search of the 
19529         EXPORTEDTYPE table.
19530
19531         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
19532
19533 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19534
19535         * image.h (MonoImage): Add 'field_cache' field.
19536
19537         * loader.c (mono_field_from_token): Cache field lookups.
19538         
19539         * reflection.c (mono_module_get_object): Fix name property.
19540
19541         * icall.c (ves_icall_get_enum_info): Update after changes to 
19542         mono_metadata_get_constant_index ().
19543
19544         * icall.c: Get rid of get_type_info icall, use a separate icall for
19545         each type property to avoid needless memory allocations. Fixes #51514.
19546
19547         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
19548         to avoid needless binary searches.
19549
19550         * class.c (class_compute_field_layout): Move the initialization of
19551         field->def_value to mono_class_vtable ().
19552
19553         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
19554         non-corlib types.
19555
19556         * object.c (mono_object_allocate): Make it inline.
19557
19558         * object.c (mono_object_allocate_spec): Make it inline.
19559         
19560 2003-12-02  Dick Porter  <dick@ximian.com>
19561
19562         * locales.c (create_NumberFormat): NumberFormatInfo construction.
19563         Patch by Mohammad DAMT (mdamt@cdl2000.com).
19564
19565 2003-12-01  Dick Porter  <dick@ximian.com>
19566
19567         * threads.c: Fix signature and call in CreateMutex and
19568         CreateEvent.
19569
19570 2003-12-01  Dick Porter  <dick@ximian.com>
19571
19572         * icall.c: 
19573         * locales.c: Implement string compares and searching
19574
19575         * object.h: Add extra Thread field
19576
19577 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
19578
19579         * reflection.c (fixup_method): Add support for MonoCMethod.
19580
19581 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
19584
19585         * reflection.c (assembly_name_to_aname): Allow extra characters in
19586         assembly names. Fixes #51468.
19587
19588 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * exception.c (mono_exception_from_name_domain): New helper function.
19591
19592         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
19593         exception object in the correct domain.
19594
19595         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
19596         formatting + make a copy a the input data.
19597
19598         * loader.c (mono_get_method_from_token): Methods which contain
19599         native code do not have entries in the ImplMap.
19600
19601         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
19602         Thanks to Gonzalo for spotting this.
19603         
19604         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
19605         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
19606
19607         * assembly.h (mono_assembly_load_from): Split the second part of 
19608         assembly loading into a new public function.
19609
19610         * exception.h (mono_get_exception_bad_image_format): New function.
19611
19612 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19615         Enumerate all modules inside a dynamic assembly. Fixes #51293.
19616         
19617         * icall.c: Add new icall for creating dynamic methods.
19618
19619         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
19620
19621         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
19622
19623         * reflection.c (mono_reflection_create_dynamic_method): New icall to
19624         create a dynamic method.
19625
19626         * reflection.c (resolve_object): New helper function.
19627
19628         * reflection.c: Generalize ReflectionMethodBuilder and the functions
19629         which manipulate it so they can also work on dynamic methods.
19630
19631         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
19632         creating the MonoReflectionMethodAux structure if it is not needed.
19633         
19634         * reflection.h verify.c: Update after changes to object layout.
19635
19636         * reflection.c (method_builder_encode_signature): Fix compilation on
19637         gcc 2.95.x.
19638
19639 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
19640
19641         * appdomain.h: Added support for context static fields. Added static_data
19642           field to MonoAppContext and renamed thread_static_fields to a more
19643           generic special_static_fields in MonoAppDomain, since it can now contain
19644           context static fields.
19645         * domain.c: Updated hashtable name.
19646         * object.c: Replaced field_is_thread_static() for a more generic
19647           field_is_special_static() which also checks for context static attribute.
19648           In mono_class_vtable(), added support for static context fields.
19649         * threads.c: Changed methods that manage thread static fields to more
19650           generic methods so they can be reused both for thread and context static
19651           data.
19652         * threads.h: Declared some new methods.
19653
19654 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * reflection.h: Update after changes to the managed types.
19657
19658         * reflection.c (encode_custom_modifiers): New helper function.
19659
19660         * reflection.c (method_encode_signature): Emit custom modifiers.
19661
19662         * reflection.c (field_encode_signature): Emit custom modifiers.
19663
19664 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
19667
19668         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
19669         implementation.
19670
19671         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
19672         icall.
19673
19674         * object.c (mono_field_get_value_object): New function.
19675
19676         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
19677         specific.
19678
19679 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
19682         return a preallocated out-of-memory exception instance.
19683
19684         * object.c (out_of_memory): Use the new function.
19685
19686         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
19687         flag is before the custom modifiers. Fixes #49802.
19688
19689 2003-11-16  Martin Baulig  <martin@ximian.com>
19690
19691         * class.c (mono_class_is_open_constructed_type): Implemented the
19692         MONO_TYPE_GENERICINST case.
19693
19694 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19695
19696         * assembly.c (mono_assembly_fill_assembly_name): New function to
19697         fill out the MonoAssemblyName structure.
19698         (mono_assembly_open): Use the new function.
19699
19700         * icall.c (fill_reflection_assembly_name): New helper function.
19701
19702         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
19703         new function.
19704
19705         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
19706
19707 2003-11-15  Martin Baulig  <martin@ximian.com>
19708
19709         * class.c (mono_class_is_open_constructed_type): New public
19710         function; checks whether a type is an open constructed type,
19711         ie. whether it still contains type parameters.
19712         (mono_class_inflate_generic_type): If we're a type parameter and
19713         the inflated type is also a MONO_TYPE_(M)VAR, return the original
19714         type.
19715
19716         * class.h (MonoGenericInst): Added `guint32 is_open'.
19717
19718         * loader.c (method_from_methodspec): Check whether we're an open
19719         or closed constructed type and set `ginst->is_open'.
19720
19721         * reflection.c (mono_reflection_bind_generic_parameters): Check
19722         whether we're an open or closed constructed type and set
19723         `ginst->is_open'.
19724         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
19725         from open constructed types.
19726
19727 2003-11-15  Martin Baulig  <martin@ximian.com>
19728
19729         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19730         a generic instance (instead of a generic type declaration) with
19731         unbound generic parameters, bind them to our actual types.
19732
19733 2003-11-14  Martin Baulig  <martin@ximian.com>
19734
19735         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
19736
19737         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19738         an interface type, populate `res->interfaces' with instantiated
19739         versions of all the interfaces we inherit.
19740
19741 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
19742
19743         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
19744         when MONO_PATH is set but doesn't contain the install dir.
19745
19746 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19747
19748         * icall.c:
19749         (ves_icall_Type_GetInterfaces): don't return an interface twice when
19750         it's also implemented in base classes. Fixes bug #50927.
19751
19752 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
19755         if this method is called from a finalizer. Fixes #50913.
19756
19757 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
19758
19759         * threads.c: Implement VolatileRead/VolatileWrite
19760
19761         * icall.c: Add new icalls for VolatileRead/VolatileWrite
19762
19763 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
19766         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
19767         2.95.3.
19768
19769         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
19770         from Peter Ross (pro@missioncriticalit.com).
19771         
19772 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
19773
19774         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
19775
19776 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * assembly.c (mono_assembly_load_references): Disable check because it
19779         triggers on older corlibs which lots of people have.
19780
19781 2003-11-12  Jackson Harper  <jackson@ximian.com>
19782
19783         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
19784         load corlib.dll if mscorlib.dll is not found.
19785         * assembly.h: Remove corlib name define.
19786         * class.c:
19787         * domain.c:
19788         * image.c: Change corlib name to mscorlib.
19789         
19790 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
19793
19794 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
19795
19796         * appdomain.h: Added loader_optimization here to sync with the C#
19797         code, and add disallow_binding_redirects field.
19798
19799 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
19802
19803         * reflection.c (mono_image_build_metadata): Fix crash on modules
19804         with no types.
19805
19806         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
19807
19808         * icall.c (ves_icall_get_method_info): Return callingConvention as
19809         well.
19810
19811         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
19812         namespaces from the EXPORTEDTYPE table as well.
19813
19814         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
19815         from all modules inside the assembly.
19816         
19817 2003-11-11  Martin Baulig  <martin@ximian.com>
19818
19819         * reflection.c (mono_reflection_bind_generic_parameters): Make
19820         this work for interfaces.
19821
19822 2003-11-11  Martin Baulig  <martin@ximian.com>
19823
19824         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
19825
19826 2003-11-11  Martin Baulig  <martin@ximian.com>
19827
19828         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
19829         "MonoInflatedMethod" and "MonoInflatedCtor".
19830
19831 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19832
19833         * reflection.c (resolution_scope_from_image): Use the assembly table
19834         from the manifest module, since other modules don't have it.
19835
19836         * debug-helpers.c (mono_type_full_name): New helper function.
19837
19838         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
19839
19840         * image.c (mono_image_load_file_for_image): New public function which
19841         is a replacement for the load_file_for_image in class.c.
19842
19843         * assembly.c (mono_assembly_load_module): A wrapper for the function
19844         above which does assembly association and reference loading too.
19845
19846         * class.c (mono_class_from_name): Call mono_assembly_load_module.
19847
19848 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19849
19850         * appdomain.c: not all of the attributes for the full assembly name
19851         are required and the order doesn't matter. Fixes bug #50787.
19852
19853 2003-11-10  Dick Porter  <dick@ximian.com>
19854
19855         * locales.c: Use platform-endian UTF16
19856
19857 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19860         
19861 2003-11-10  Martin Baulig  <martin@ximian.com>
19862
19863         * metadata.c
19864         (mono_metadata_load_generic_params): Make this actually work.
19865
19866         * reflection.c (mono_reflection_bind_generic_parameters): If our
19867         parent is a generic instance, pass all the `types' to it, no
19868         matter whether it has the same number of type parameters or not.
19869
19870 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19873
19874         * assembly.c (mono_assembly_load_references): Move the image<->assembly
19875         assignment code to this function so it gets called recursively for all
19876         modules.
19877
19878         * image.c (load_modules): Remove the assembly assignment since it is
19879         now done by mono_assembly_load_references.
19880         
19881         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19882         Add 'module' argument.
19883         (mono_module_get_types): New helper function.
19884         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
19885
19886 2003-11-08  Martin Baulig  <martin@ximian.com>
19887
19888         * class.c (mono_class_inflate_generic_method): Interface method
19889         don't have a header.
19890
19891         * reflection.c (mono_image_get_methodspec_token): Take an
19892         additional `MonoGenericInst *' argument instead of reading it from
19893         the header; this is necessary to support interfaces.
19894         (mono_image_create_token): Pass the `MonoGenericInst *' from the
19895         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
19896         (inflated_method_get_object): Take an additional `MonoGenericInst *'
19897         argument.
19898
19899         * reflection.h (MonoReflectionInflatedMethod): Added
19900         `MonoGenericInst *ginst'.
19901
19902 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
19905
19906 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
19907
19908         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
19909
19910 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * reflection.c 
19913         (reflection_methodbuilder_from_method_builder):
19914         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
19915         initialize a ReflectionMethodBuilder structure.
19916         (mono_image_get_methodbuilder_token):
19917         (mono_image_get_ctorbuilder_token): New functions to emit memberref
19918         tokens which point to types in another module inside the same assembly.
19919
19920         * reflection.c: Use the new helper functions.
19921         
19922         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
19923
19924         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
19925         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
19926
19927         * reflection.c (resolution_scope_from_image): Emit a moduleref if
19928         neccesary.
19929
19930         * reflection.c (mono_image_build_metadata): Emit metadata only for the
19931         current module. Emit the manifest only for the main module.
19932
19933         * reflection.c (mono_image_create_token): Add assertion when a 
19934         memberref needs to be created.
19935
19936         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
19937
19938         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
19939         larger buffer for the custom attribute blob. Fixes #50637.
19940         
19941 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19942
19943         * threadpool.c: notify listener on async processing handles after
19944         invoking the async callback. Thanks to Zoltan.
19945
19946 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19947
19948         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
19949         avoid code duplication.
19950
19951         * reflection.h (MonoDynamicImage): New type which is currently unused,
19952         but will be used through the ref.emit code in place of 
19953         MonoDynamicAssembly.
19954
19955         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19956         object layout.
19957
19958         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
19959         a MonoDynamicImage instead of just a MonoImage.
19960         
19961         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
19962         icalls to ModuleBuilder but keep their semantics, so they will work
19963         with moduleb->assemblyb. This will change later.
19964         
19965 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19966
19967         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19968         object layout.
19969
19970         * reflection.c (mono_image_build_metadata): Avoid creation of a default
19971         main module, since it is now done by the managed code.
19972
19973 2003-11-03  Martin Baulig  <martin@ximian.com>
19974
19975         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
19976         `ginst->klass' here.
19977         (method_encode_methodspec): Don't use the `ginst->generic_method's
19978         klass if it's a generic instance, use `ginst->klass' in this case.
19979
19980 2003-11-03  Martin Baulig  <martin@ximian.com>
19981
19982         * reflection.c (mono_image_get_generic_method_param_info):
19983         Removed, use mono_image_get_generic_param_info() instead.
19984         (mono_image_get_type_info): Write the GenericParam table before
19985         the Method table.  This is neccessary because in the GenericParam
19986         table, type parameters of the class (ie. '!0' etc.) must come
19987         before the ones from its generic methods (ie. '!!0' etc).
19988
19989 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19990
19991         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
19992
19993 2003-11-02  Martin Baulig  <martin@ximian.com>
19994
19995         * reflection.c (create_generic_typespec): Take a
19996         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
19997         the generic parameters from it.
19998
19999 2003-11-02  Martin Baulig  <martin@ximian.com>
20000
20001         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
20002         instead of a `MonoClassField *' since we just need the type.
20003         (create_generic_typespec): New static function.  Creates a
20004         TypeSpec token for a generic type declaration.
20005         (mono_image_get_generic_field_token): New static function.
20006         (mono_image_create_token): If we're a FieldBuilder in a generic
20007         type declaration, call mono_image_get_generic_field_token() to get
20008         the token.
20009
20010 2003-11-02  Martin Baulig  <martin@ximian.com>
20011
20012         * reflection.h
20013         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
20014         `MonoReflectionGenericInst *declaring_type' and
20015         `MonoReflectionGenericInst *reflected_type' fields.
20016
20017         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
20018         `MonoReflectionGenericInst *declaring_type' and a
20019         `MonoReflectionGenericInst *reflected_type' argument instead of a
20020         single `MonoReflectionGenericInst *type' one.  Set
20021         `res->declaring_type' and `res->reflected_type' from them.
20022         (mono_reflection_inflate_field): Likewise.      
20023
20024 2003-11-02  Martin Baulig  <martin@ximian.com>
20025
20026         * class.c (mono_class_setup_vtable): Don't store generic methods
20027         in the vtable.  
20028
20029 2003-11-02  Martin Baulig  <martin@ximian.com>
20030
20031         * reflection.h (MonoReflectionGenericInst): Added
20032         `MonoReflectionType *declaring_type'.
20033
20034         * reflection.c (mono_reflection_bind_generic_parameters): Use
20035         `if (tb->parent)' instead of `klass->parent'.
20036
20037 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
20040         with an empty ASSEMBLY table.
20041
20042         * reflection.c (mono_image_build_metadata): Avoid using the same loop
20043         variable in the inner and outer loops.
20044
20045 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20046
20047         * metadata.h (mono_metadata_make_token): Put parentheses around macro
20048         argument.
20049
20050         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
20051         
20052         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
20053         icalls. Instead, do everything in managed code. This is needed since
20054         it is hard to restore the original domain etc. in unmanaged code in the
20055         presence of undeniable exceptions.
20056
20057         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
20058         New icalls to push and pop appdomain refs.
20059
20060 2003-10-31  Martin Baulig  <martin@ximian.com>
20061
20062         * class.c (inflate_generic_type): Renamed to
20063         mono_class_inflate_generic_type() and made it public.
20064
20065         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
20066         New interncall.
20067
20068         * loader.c (mono_field_from_memberref): Also set the retklass for
20069         typespecs.
20070
20071         * fielder.c (mono_image_get_inflated_field_token): New static
20072         method; creates a metadata token for an inflated field.
20073         (mono_image_create_token, fixup_method): Added support for
20074         "MonoInflatedField".
20075         (fieldbuilder_to_mono_class_field): New static function.
20076         (mono_reflection_inflate_field): New public function.
20077
20078         * reflection.h
20079         (MonoReflectionGenericInst): Added `MonoArray *fields'.
20080         (MonoReflectionInflatedField): New typedef.     
20081
20082 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
20083
20084         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
20085         for Solaris and other platforms without s6_addr16
20086
20087 2003-10-30  Martin Baulig  <martin@ximian.com>
20088
20089         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
20090         argument instead of two.
20091         (mono_class_inflate_generic_signature): Likewise.
20092         (inflate_generic_header): Likewise.
20093         (mono_class_inflate_generic_method): Likewise.  In addition, if
20094         `ginst->klass' is set, it becomes the new `method->klass'.
20095
20096         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
20097         field.
20098
20099         * reflection.c (encode_generic_method_sig): Write a 0xa as the
20100         first byte. [FIXME]
20101         (method_encode_methodspec): If we have generic parameters, create
20102         a MethodSpec instead of a MethodRef.
20103         (fixup_method): Added support for "MonoInflatedMethod" and
20104         "MonoInflatedCtor".
20105         (mono_image_create_token): Added support for "MonoInflatedMethod"
20106         and "MonoInflatedCtor".
20107         (inflated_method_get_object): New static function; returns a
20108         managed "System.Reflection.MonoInflatedMethod" object.
20109         (mono_reflection_bind_generic_method_parameters): Return a
20110         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
20111         (mono_reflection_inflate_method_or_ctor): Likewise.
20112         (mono_image_get_generic_method_param_info): Initialize unused
20113         fields to zero.
20114         (mono_image_get_generic_param_info): Likewise.
20115
20116         * reflection.h (MonoReflectionInflatedMethod): New public
20117         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
20118         "S.R.MonoInflatedCtor" classes.
20119
20120         * loader.c (method_from_memberref): If we're a TypeSpec and it
20121         resolves to a generic instance, inflate the method.
20122
20123 2003-10-28  Dick Porter  <dick@ximian.com>
20124
20125         * object.c (mono_runtime_run_main): Convert command-line arguments
20126         into utf8, falling back to the user's locale encoding to do so.
20127
20128 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20129
20130         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
20131         at this time.
20132
20133         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
20134
20135         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
20136         up icalls at method definition time. Partially fixes #33569.
20137
20138 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
20141         marshalling of arrays. Fixes #50116.
20142
20143         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
20144
20145         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
20146         points to a vtable in the dying appdomain.
20147
20148         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
20149         listeners into unmanaged code inside the lock.
20150
20151         * object.c (mono_class_vtable): Turn off typed allocation in non-root
20152         domains and add some comments.
20153
20154 2003-10-25  Martin Baulig  <martin@ximian.com>
20155
20156         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
20157
20158         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
20159
20160         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
20161         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
20162         currently parsing.  Create the generic class and store it in
20163         `generic_inst->klass' before parsing the type arguments.  This is
20164         required to support "recursive" definitions; see mcs/tests/gen-23.cs
20165         for an example.
20166         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
20167         to support recursive typespec entries.
20168
20169         * class.c (mono_class_setup_parent): If our parent is a generic
20170         instance, we may get called before it has its name set.
20171         (mono_class_from_generic): Splitted into
20172         mono_class_create_from_generic() and mono_class_initialize_generic().
20173
20174 2003-10-25  Martin Baulig  <martin@ximian.com>
20175
20176         * icall.c (ves_icall_Type_BindGenericParameters): Return a
20177         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
20178         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
20179         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
20180
20181         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
20182         (create_typespec): Likewise.
20183         (mono_reflection_bind_generic_parameters): Return a
20184         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
20185         (mono_reflection_inflate_method_or_ctor): New public function.
20186
20187         * reflection.h (MonoReflectionGenericInst): New typedef.        
20188
20189 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
20192         inside the domain lock. Fixes #49993.
20193         
20194         * object.c (mono_class_vtable): When typed allocation is used, 
20195         allocate vtables in the GC heap instead of in the mempool, since the
20196         vtables contain GC descriptors which are used by the collector even
20197         after the domain owning the mempool is unloaded.
20198
20199         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
20200
20201         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
20202         reflect what it does. Also invalidate mempools instead of freeing
20203         them if a define is set.
20204
20205         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
20206         of the appdomain.
20207         
20208         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
20209         hold the finalizable objects in this domain.
20210
20211         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
20212         appdomain.
20213
20214         * appdomain.c (mono_domain_set): New function to set the current
20215         appdomain, but only if it is not being unloaded.
20216
20217         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
20218         appdomain which is being unloaded.
20219         
20220         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
20221         unloading of the root appdomain.
20222
20223         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
20224         icall to execute a method in another appdomain. Intended as a 
20225         replacement for InternalSetDomain, which can confuse the code 
20226         generation in the JIT.
20227
20228         * appdomain.c (mono_domain_is_unloading): New function to determine
20229         whenever an appdomain is unloading.
20230
20231         * appdomain.c (mono_domain_unload): New function to correctly unload
20232         an appdomain.
20233
20234         * assembly.c (mono_assembly_load_references): Check that an assembly
20235         does not references itself.
20236
20237         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
20238         domain manually, it asks the finalizer thread to do it, then waits for
20239         the result. Also added a timeout.
20240
20241         * icall.c: Register the new icalls.
20242
20243         * threads.h threads.c: Export the mono_gc_stop_world and 
20244         mono_gc_start_world functions.
20245         
20246         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
20247         function to fill out the mempool with 0x2a.
20248
20249 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * reflection.h (MonoReflectionMethodAux): New structure to store
20252         information which is rarely used, thus is not in the MonoMethod
20253         structure.
20254
20255         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
20256         store the aux info.
20257
20258         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
20259         and marshalling info into the aux structure.
20260
20261         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
20262         from the aux structure.
20263
20264         * loader.c (mono_method_get_param_names): Retrieve the param names from
20265         the aux structure.
20266         
20267 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * exception.h exception.c: Add AppDomainUnloadedException && fix 
20270         warning.
20271
20272 2003-10-21  Dick Porter  <dick@ximian.com>
20273
20274         * socket-io.c
20275         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
20276         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
20277
20278 2003-10-21  Martin Baulig  <martin@ximian.com>
20279
20280         * reflection.c (mono_reflection_bind_generic_parameters):
20281         `klass->parent' is NULL for interfaces.
20282
20283 2003-10-21  Martin Baulig  <martin@ximian.com>
20284
20285         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20286
20287 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * exception.c (mono_exception_from_name_msg): New helper function for
20290         creating exceptions and initializing their message field.
20291
20292         * exception.c: Simplify functions using the new helper.
20293
20294         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
20295         New function.
20296
20297         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
20298         mono_raise_exception, since otherwise gcc doesn't generate the function
20299         epilog for raise_exception, confusing the stack unwinding in the JIT.
20300         Fixes #45043.
20301
20302         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
20303         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
20304         Fixes #49499.
20305
20306 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20307
20308         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
20309         utf8.
20310
20311 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
20312
20313         * icall.c: Removed GetUninitializedObject method because
20314           AllocateUninitializedClassInstance does the same.
20315
20316 2003-10-18  Martin Baulig  <martin@ximian.com>
20317
20318         * class.c (inflate_generic_signature): Renamed to
20319         mono_class_inflate_generic_signature() and made it public.
20320         (my_mono_class_from_generic_parameter): New static function; if we
20321         don't already have the generic parameter's MonoClass, create a
20322         very simple one which is just used internally in the runtime and
20323         not passed back to managed code.
20324
20325         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
20326
20327         * metadata.h (MonoMethodSignature): Moved the
20328         `MonoGenericParam *gen_params' to the MonoMethodHeader.
20329         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
20330
20331         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
20332         ves_icall_MonoMethod_GetGenericArguments(); this is now an
20333         interncall on the MonoMethod class, not on MethodInfo.
20334         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
20335         calling mono_reflection_bind_generic_method_parameters() directly.
20336
20337         * loader.c (mono_method_get_signature): If this is a MethodSpec;
20338         return the already computed `method->signature'.
20339         (method_from_methodspec): New static function to load a method
20340         from a MethodSpec entry.
20341         (mono_get_method_from_token): Call the new method_from_methodspec()
20342         for MethodSpec tokens.  
20343         (mono_get_method_from_token): If we're a generic method, load the
20344         type parameters.
20345
20346         * reflection.c (mono_image_get_memberref_token): Allow
20347         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
20348         table.
20349         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
20350         (mono_image_create_token): First check whether it's a generic
20351         method (so we'd need to create a MethodSpec), then do the other
20352         two alternatives.
20353         (mono_reflection_bind_generic_method_parameters): Return a
20354         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
20355         called directly from the interncall.
20356
20357 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * reflection.c (load_public_key): Move loading of the public key
20360         into managed code.
20361
20362         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
20363
20364         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
20365         fields.
20366
20367         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
20368         culture, hash_alg and public_key. Fixes #49555.
20369
20370 2003-10-17  Martin Baulig  <martin@ximian.com>
20371
20372         * class.h (MonoGenericInst): Moved this declaration here and added
20373         `MonoMethod *generic_method'.
20374
20375         * icall.c
20376         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
20377         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
20378
20379         * metadata.c (mono_metadata_type_equal): Two types of
20380         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
20381         index; ie. don't compare the address of the `MonoGenericParam'
20382         structure.
20383         (mono_metadata_load_generic_params): Removed the `MonoMethod
20384         *method' argument.
20385
20386         * metadata.h (MonoGenericInst): Moved declaration to class.h.
20387         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
20388
20389         * reflection.c (method_encode_signature): Encode the number of
20390         generic parameters.
20391         (encode_generic_method_sig): New static function.
20392         (method_encode_methodspec): New static function; creates an entry
20393         in the MethodSpec table for a generic method.
20394         (mono_image_get_methodspec_token): New static function.
20395         (mono_image_create_token): Call mono_image_get_methodspec_token()
20396         for generic methods.
20397         (mono_reflection_bind_generic_method_parameters): New public
20398         function.  Instantiates a generic method.
20399
20400 2003-10-16  Martin Baulig  <martin@ximian.com>
20401
20402         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
20403         *gen_params' here from MonoMethodHeader.
20404
20405         * metadata.c (mono_metadata_parse_method_signature): If we have
20406         generic parameters, initialize `method->gen_params' and then set
20407         the correct `type->data.generic_param' in all the parameters.
20408
20409 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * threads.c (mono_threads_get_default_stacksize): New function to 
20412         return the default stacksize.
20413
20414         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
20415         termination of the finalizer thread, since the previous method had
20416         race conditions. Fixes #49628.
20417
20418         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
20419         as for the other managed threads.
20420
20421 2003-10-16  Martin Baulig  <martin@ximian.com>
20422
20423         * class.c (inflate_generic_signature): Copy `generic_param_count'
20424         and `gen_params'.
20425
20426         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
20427         New interncall.
20428
20429         * metadata.c (mono_metadata_parse_method_signature): Actually set
20430         the `method->generic_param_count' here.
20431         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
20432
20433 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20434
20435         * object.h: Add a new field to TypedRef to simplify the implementation
20436         of the REFANY opcodes in the JIT.
20437
20438         * icall.c: Make use of the new field.
20439
20440         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
20441         dynamically.
20442
20443 2003-10-15  Martin Baulig  <martin@ximian.com>
20444
20445         * class.c (mono_class_from_gen_param): Renamed to
20446         mono_class_from_generic_parameter() and moved most of the
20447         functionality from mono_reflection_define_generic_parameter()
20448         here; ie. we create a "real" class here.
20449         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
20450         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
20451         previously been called.
20452
20453         * class.h (MonoGenericParam): Moved the declaration of this struct
20454         here from metadata.h and added `MonoMethod *method'.
20455
20456         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
20457         interncall.
20458
20459         * loader.c (mono_get_method_from_token): If we have any generic
20460         parameters, call mono_metadata_load_generic_params() to read them
20461         from the MONO_TABLE_GENERICPAR.
20462
20463         * metadata.c (mono_metadata_load_generic_params): Added
20464         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
20465
20466         * metadata.h (MonoMethodSignature): Replaced
20467         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
20468         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
20469
20470         * reflection.c (mono_reflection_define_generic_parameter): Moved
20471         most of the functionality into the new
20472         mono_class_from_generic_parameter(); set the `method' field if
20473         we're a method parameter.       
20474
20475 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
20476
20477         * marshal.c (emit_struct_conv): if native size is 0
20478         emit no code.
20479
20480 2003-10-14  Martin Baulig  <martin@ximian.com>
20481
20482         * icall.c: The generics API has changed in the spec since it was
20483         added to System.Type; these modifications make it match the spec
20484         again.
20485         (ves_icall_Type_GetGenericParameters): Renamed to
20486         `ves_icall_Type_GetGenericArguments'.
20487         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
20488         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
20489         `ves_icall_MonoType_get_HasGenericArguments'.
20490         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
20491         `ves_icall_MonoType_get_IsGenericParameter'.
20492         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
20493         this is no interncall anymore.
20494         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
20495         `ves_icall_TypeBuilder_get_IsGenericParameter'.
20496
20497 2003-10-14  Martin Baulig  <martin@ximian.com>
20498
20499         * reflection.c (mono_reflection_bind_generic_parameters): Also
20500         inflate generic methods if we're reading the class from IL.
20501
20502 2003-10-13  Martin Baulig  <martin@ximian.com>
20503
20504         * reflection.c (mono_reflection_define_generic_parameter): This
20505         method isn't called directly from the icall anymore; take a
20506         `MonoReflectionAssemblyBuilder *' so we can use this for type and
20507         method generic parameters.
20508         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
20509         (method_builder_encode_signature): Encode generic parameters.
20510         (mono_image_get_method_info): Write generic params to the
20511         MONO_TABLE_GENERICPARAM table.
20512
20513         * reflection.h (MonoReflectionMethodBuilder): Added
20514         `MonoArray *generic_params'.
20515
20516         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
20517
20518         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
20519         wrapper for mono_reflection_define_generic_parameter().
20520         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
20521
20522 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
20523
20524         * marshal.h: Add missing function to fix build.
20525
20526         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
20527         the SetLastError pinvoke attribute.
20528
20529         * marshal.c (mono_marshal_set_last_error): New helper function called
20530         by the generated code.
20531         
20532         * marshal.c (mono_mb_emit_branch): New helper function.
20533
20534         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
20535
20536         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20537         classes as parameters and return values of delegates. Fixes #29256. 
20538
20539 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
20540
20541         * locales.c: use gint32 in non HAVE_ICU case
20542
20543 2003-10-11  Martin Baulig  <martin@ximian.com>
20544
20545         * mono-debug.c (mono_debug_add_method): Added a workaround for
20546         bug #48591.
20547
20548 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20549
20550         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
20551         delegates passed to native code must use the STDCALL calling 
20552         convention. Fixes #35987.
20553
20554 2003-10-10  Martin Baulig  <martin@ximian.com>
20555
20556         * class.c (inflate_generic_type): If we're inflating for a generic
20557         type instance (and not for a generic method), return
20558         MONO_TYPE_MVAR unchanged.
20559
20560 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20561
20562         * string-icalls.c: Join ignores null strings in the source array.
20563         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
20564         * threads.c: GetAvailableTheads is slightly more accurate.
20565
20566 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
20567
20568         * threads.h threads.c : add mono_threads_set_default_stacksize
20569         and pass default to CreateThread calls.
20570
20571 2003-10-09  Dick Porter  <dick@ximian.com>
20572
20573         * icall.c:
20574         * locales.h:
20575         * locales.c: Internal calls for constructing CultureInfo and
20576         related objects from libicu (if its available.)
20577
20578 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20579
20580         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
20581
20582 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20583
20584         * threadpool.c: added an argument to async_invoke_thread that is the
20585         item to process, pass the MonoAsyncResult to the thread start function
20586         when creating a new thread. This way we don't need to acquire any lock
20587         when we're creating a new thread. Readded a semaphore for faster
20588         response times (instead of that Sleep i added).
20589
20590 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
20591
20592         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
20593         get daylight change dates better on Windows, fix handling
20594         of platforms without tm_gmtoff.
20595
20596 2003-10-06  Martin Baulig  <martin@ximian.com>
20597
20598         * class.c (inflate_generic_method): Renamed to
20599         mono_class_inflate_generic_method() and made public.
20600         (mono_class_init): Don't inflate the generic methods here.
20601         (mono_class_from_generic): Added `gboolean inflate_methods'
20602         argument.  Inflate the methods here.
20603
20604         * loader.c (mono_method_get_param_names): Ignore instances of
20605         generic types for the moment.
20606
20607         * reflection.c (fixup_method): Added support for inflated methods.
20608         (mono_image_create_token): Use mono_image_get_methodref_token()
20609         for inflated methods.
20610         (mono_custom_attrs_from_param): Ignore instances of generic types
20611         for the moment.
20612         (mono_reflection_bind_generic_parameters): New public function.
20613         Moved all the functionality from
20614         ves_icall_Type_BindGenericParameters() here and added support for
20615         dynamic types.
20616         (mono_reflection_define_generic_parameter): Initialize
20617         `klass->methods' here.
20618
20619         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
20620         functionality into mono_reflection_define_generic_parameter().
20621         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
20622         TypeBuilder, return that TypeBuilder.
20623
20624 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20625
20626         * appdomain.c: removed mono_delegate_semaphore.
20627
20628         * threadpool.c:
20629         (mono_thread_pool_add): moved hash table creation inside and the thread 
20630         creation outside of the critical region.
20631         (mono_thread_pool_finish): removed obsolete code.
20632         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
20633         continue or exit the thread depending on the queue.
20634
20635 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
20636
20637         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
20638         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
20639         handle more bool marshalling options
20640
20641 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
20644         arrays of structs. Also add a more descriptive error message when
20645         a structure member is marshalled as LPArray.
20646
20647 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20648
20649         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20650         marshalling arrays of complex types. Fixes #29098. Also remove an
20651         usused and incomplete function.
20652
20653 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20654
20655         * gc.c: report heap_size - free_bytes as total memory allocated
20656         (bug#49362).
20657
20658 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
20661         fix timezone handling problems on Windows.
20662         
20663         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
20664         asserts when the year is outside the range handled by ms the functions.
20665
20666         * class.c (setup_interface_offsets): If the class is an interface,
20667         fill out its interface_offsets slot.
20668
20669 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20670
20671         * threadpool.c: mark threadpool threads as background.
20672
20673 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
20674
20675         * decimal.c - define DECINLINE to nothing if not using GCC
20676
20677 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20678
20679         * assembly.c: More refcount fixes.
20680
20681 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20682
20683         * string-icalls.c: if we're not trimming, return the same string.
20684         When not splitting, don't create a new string.
20685
20686 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20687
20688         * image.c:
20689         (mono_image_open): increment the ref_count inside the critical section.
20690
20691 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
20692
20693         * image.c (mono_image_open): Fix reference counting bug.
20694
20695 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
20696
20697         * marshal.c (mono_marshal_type_size) struct alignment changed for 
20698         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
20699         64bits. Avoid leak in mono_marshal_get_native_wrapper when
20700         mono_lookup_pinvoke_call throws.        
20701
20702 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20703
20704         * reflection.c (mono_reflection_parse_type): Fix #49114.
20705
20706         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
20707         temporary workaround for cygwin header problem.
20708
20709         * object.c (mono_object_isinst): Synchronize this with the code
20710         generated by the JIT for casts.
20711
20712 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * reflection.c (encode_type): Fix #38332.
20715
20716 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20717
20718         * marshal.c (mono_marshal_method_from_wrapper): New function to return
20719         the original method from the wrapper method.
20720
20721 2003-09-25  Martin Baulig  <martin@ximian.com>
20722
20723         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
20724         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
20725         (ves_icall_Type_get_IsGenericInstance): New interncall.
20726
20727 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
20728
20729         * object.c: fix cast warning in big endian code.
20730
20731 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
20732
20733         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
20734         
20735 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20736
20737         * assembly.c: don't call check_env from mono_assembly_load. It's
20738         already done once in mono_assemblies_init and may cause headaches when
20739         multiple threads are loading assemblies.
20740
20741 2003-09-19  Martin Baulig  <martin@ximian.com>
20742
20743         * reflection.c (mono_reflection_define_generic_parameter): Don't
20744         allocate `klass->methods', set `klass->flags' to
20745         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
20746
20747 2003-09-18  Martin Baulig  <martin@ximian.com>
20748
20749         * class.c (mono_class_init): Don't create `class->methods' if it's
20750         already initialized.
20751
20752         * metadata.c (mono_metadata_load_generic_params): Make this
20753         actually work.
20754
20755         * reflection.c (mono_reflection_define_generic_parameter): Set
20756         parent class and interfaces from the constraints.
20757
20758         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
20759         to keep this struct in sync with the declaration in TypeBuilder.cs.
20760
20761 2003-09-17  Martin Baulig  <martin@ximian.com>
20762
20763         * metadata.h (MonoType): Replaced the data's `int type_param'
20764         field with `MonoGenericParam *generic_param'.
20765         (MonoGenericParam): Added `MonoClass *klass'.
20766
20767         * class.c (mono_class_from_gen_param): Removed the
20768         `MonoImage *image' and `int type_num' arguments.
20769
20770         * metadata.c (mono_metadata_parse_generic_param): New static
20771         method; creates a MonoGenericParam which just contains the index.
20772         (do_mono_metadata_parse_type): Call
20773         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
20774         MONO_TYPE_MVAR.
20775
20776         * reflection.c (mono_image_typedef_or_ref): Generic type
20777         parameters may be in the same assembly, but never use a typedef
20778         for them.
20779         (mono_reflection_define_generic_parameter): We're now creating a
20780         "real" class for the type parameter; it's now safe to call
20781         mono_class_from_mono_type() on the class'es type, it'll do the
20782         right thing.
20783
20784 2003-09-16  Martin Baulig  <martin@ximian.com>
20785
20786         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
20787         `symfile->range_entry_size' and `symfile->class_entry_size' here;
20788         the `symfile' data structure must be fully initialized before it
20789         gets added to the table.
20790
20791 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20792
20793         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
20794
20795         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
20796         class init trampolines.
20797
20798 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20799
20800         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
20801         to the built-in profiler to turn off time and allocation profiling
20802         respectively.
20803
20804 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20805
20806         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
20807         g_direct_equal.
20808
20809         * debug-helpers.c (mono_method_full_name): Print the wrapper type
20810         in human readable form.
20811
20812 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20813
20814         * reflection.c icall.c: Fixed warnings.
20815
20816         * image.c (load_class_names): Use a temporary hash table to hold the
20817         namespaces in order to avoid doing many string comparisons.
20818
20819         * image.h: Fix typo.
20820
20821         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
20822         Pass NULL instead of g_direct_equal to the GHashTable constructor 
20823         since the NULL case is short-circuited inside g_hash_table_lookup, 
20824         leading to better performance.  
20825
20826         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
20827         obtain the first custom attribute for a given index. Depends on the
20828         CustomAttribute table being sorted by the parent field.
20829
20830         * reflection.c (mono_custom_attrs_from_index): Use the new function 
20831         for better performance.
20832
20833 2003-09-07  Martin Baulig  <martin@ximian.com>
20834
20835         * class.c (mono_class_init): If we're a generic instance, inflate
20836         all our methods instead of loading them from the image.
20837         (mono_class_from_generic): Set `class->methods = gklass->methods'.
20838
20839 2003-09-07  Martin Baulig  <martin@ximian.com>
20840
20841         * mono-debug-debugger.c: Added support for constructors.
20842
20843 2003-09-06  Martin Baulig  <martin@ximian.com>
20844
20845         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
20846         New interncall.
20847
20848         * reflection.c (mono_reflection_setup_generic_class): Call
20849         ensure_runtime_vtable() to create the vtable.
20850
20851 2003-09-05  Martin Baulig  <martin@ximian.com>
20852
20853         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
20854         MONO_TYPE_MVAR.
20855
20856 2003-09-04  Martin Baulig  <martin@ximian.com>
20857
20858         * reflection.c (mono_reflection_define_generic_parameter): Generic
20859         parameters start with zero.
20860
20861 2003-09-04  Martin Baulig  <martin@ximian.com>
20862
20863         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20864
20865         * reflection.h (MonoReflectionGenericParam): New typedef.
20866         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
20867         the generic parameters from the managed TypeBuilder.
20868
20869         * reflection.c (mono_reflection_define_generic_parameter): New function.
20870         (mono_reflection_create_runtime_class): Encode generic parameters.
20871         (mono_reflection_setup_generic_class): New function; this is
20872         called after adding adding all generic params to the TypeBuilder.
20873         (encode_type): Added MONO_TYPE_VAR.
20874
20875 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * class.h class.c (mono_class_needs_cctor_run): Moved this method
20878         here from the JIT.
20879
20880         * assembly.h assembly.c: Moved the AOT loading code into an assembly
20881         load hook.
20882
20883 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
20884
20885         * reflection.h reflection.c class.h class.c: Delete duplicate 
20886         definition of mono_type_get_name () from reflection.c and export the
20887         one in class.c.
20888
20889         * class.c: Class loading fixes from Bernie Solomon 
20890         (bernard@ugsolutions.com).
20891
20892         * reflection.c: Endianness fixes from Bernie Solomon 
20893         (bernard@ugsolutions.com).
20894         
20895 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * assembly.h assembly.c: Define a file format version for AOT
20898         libraries.
20899         
20900         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
20901
20902         * appdomain.h (MonoJitInfo): New field to determine whenever the
20903         code is domain neutral.
20904         
20905 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
20906
20907         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
20908
20909 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
20912         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
20913         Avoid caching the result since strings must be domain specific. Fixes
20914         #48050.
20915
20916 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20917
20918         * marshal.c (mono_marshal_init): Make this callable multiple times
20919         since it is hard to find a correct place to call it.
20920
20921         * object.c (mono_runtime_class_init): Execute static constructors in
20922         the correct appdomain.
20923
20924         * image.c (build_guid_table): Handle the case when multiple images have
20925         the same GUID.
20926
20927 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20928
20929         * icall.c: added a couple of icalls for System.Web.
20930
20931 2003-08-28  Martin Baulig  <martin@ximian.com>
20932
20933         * icall.c (ves_icall_Type_BindGenericParameters): Use
20934         `klass->generic_inst' instead of `&klass->byval_arg' in the
20935         mono_type_get_object() call.  The returned type must be
20936         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
20937
20938 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20939
20940         * NOTES: New file.
20941
20942         * object.c (mono_class_proxy_vtable): Make it thread safe.
20943
20944         * pedump.c: Fix warning.
20945
20946         * object.c appdomain.h: Get rid of metadata_section. 
20947         It is no longer needed and it was causing deadlocks with domain->lock.
20948
20949         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
20950
20951 2003-08-26  Martin Baulig  <martin@ximian.com>
20952
20953         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
20954
20955 2003-08-26  Martin Baulig  <martin@ximian.com>
20956
20957         * pedump.c (main): Call mono_metadata_init(),
20958         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
20959         and mono_loader_init().
20960
20961 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
20962
20963         * loader.h: Add missing include to fix build.
20964
20965         * image.h: mono_image_load_references is no more.
20966
20967         * assembly.c: Reworked assembly loading to make it really thread safe.
20968         After these changes, the assembly returned by mono_assembly_open is
20969         fully initialized, i.e. all its references assemblies are loaded.
20970
20971         * assembly.c (mono_image_load_references): Renamed to 
20972         mono_assembly_load_references, and made private, since clients no
20973         longer need to call it.
20974
20975         * class.c: Removed calls to mono_assembly_load_references, since it was
20976         a source of deadlocks.
20977
20978         * loader.h loader.c class.h class.c: Protect data structures using a 
20979         new lock, the loader lock.
20980
20981         * class.c (mono_class_setup_vtable): Create temporary hash tables and
20982         GPtrArrays only when needed.
20983
20984         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
20985         into empty structures by mcs. Fixes pinvoke7.cs.
20986         
20987         * domain.c (mono_init): Call a new initialization function.
20988
20989         * appdomain.c (mono_runtime_init): Call the new initializer function
20990         of the marshal module.
20991
20992         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
20993         inserted into empty structures by mcs. Fixes pinvoke7.cs.
20994
20995         * marshal.h marshal.c: Added locks around the wrapper caches to make
20996         this module thread safe.
20997
20998         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
20999         this argument. Fixes pinvoke1.exe.
21000
21001 2003-08-25  Lluis Sanchez <lluis@ximian.com>
21002
21003         * object.h: Added call_type field to MonoMethodMessage and the corresponding
21004         enumeration of values. Removed fields to store remote call output values in
21005         MonoAsyncResult. Not needed any more.
21006         * object.c: Initialize call_type and async_result fields in mono_message_init.
21007         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
21008         dispatching the message.
21009         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
21010         async call to finish. To do it use a message with EndInvoke call type.
21011
21012 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21013
21014         * loader.h loader.c (mono_method_hash_marhal_info): New function which
21015         determines whenever a method has marshalling info.
21016
21017 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21018
21019         * assembly.c: fix the build on windows.
21020
21021 2003-08-22 Lluis Sanchez <lluis@ximian.com>
21022
21023         * object.cs: Fixed bug #47785.
21024
21025 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
21026
21027         * string-icalls.c (StringReplace): If their are no occurances of
21028         the old string found return a reference to the supplied
21029         string. This saves some memory and matches MS behavoir.
21030         
21031 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21032
21033         * socket-io.c: fixed compilation for systems that define AF_INET6
21034         and don't define SOL_IP/SOL_IPV6.
21035
21036 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
21039         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
21040
21041         * rawbuffer.c rawbuffer.h: Make this module thread safe.
21042
21043         * domain.c: Make this module thread safe.
21044
21045         * domain.c (mono_init): Call new initialization function.
21046
21047         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
21048         reference types too. Fixes #38812.
21049
21050         * image.c (mono_image_init): Fixed warnings.
21051
21052         * class.c (mono_class_from_typeref): Handle assembly load failure
21053         correctly.
21054
21055         * appdomain.c (add_assemblies_to_domain): Handle the case when
21056         the references of an assembly are not yet loaded.
21057
21058         * metadata.c image.c assembly.c: Moved initialization of global
21059         variables to a separate function called at startup since lazy 
21060         initialization of these variables is not thread safe.
21061         
21062         * image.c assembly.c: Made this module thread safe by adding locks in 
21063         the appropriate places.
21064
21065         * domain.c (mono_init): Call the new initialization functions of the
21066         three modules.
21067
21068 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
21069
21070         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
21071           make a direct call. It is proxy's work to make the call asynchronous.
21072           mono_delegate_end_invoke(): If the targe is a proxy, just collect
21073           the return values.
21074         * object.cs: mono_method_call_message_new(): read AsyncResult and
21075           state object from parameters list, if this info is requested.
21076         * object.h: Added fields to store remote call output values in
21077           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
21078
21079 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21080
21081         * object.h: add needed fields to MonoThread.
21082         * threads.c, threads.h: allow registering a function to cleanup data
21083         allocated per thread by the JIT.
21084
21085 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21086
21087         * loader.h: portability fix by Bernie Solomon
21088         * <bernard@ugsolutions.com>.
21089
21090 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
21091
21092         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
21093         return a MonoArray. This simplifies the code and also ensures that
21094         the cache allways contains an object reference as a value.
21095
21096         * icall.c (ves_icall_get_parameter_info): Simplified using the new
21097         function.
21098
21099 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21100
21101         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
21102         fixes a problem with byte ordering when getting the address family for
21103         a socket.
21104
21105 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * .cvsignore: Added monosn.
21108
21109         * reflection.h reflection.c loader.c: Added support for parameter
21110         marshalling to dynamically created types. Fixes #47295.
21111
21112 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21113
21114         * rand.c: remove useless warnings.
21115
21116 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21117
21118         * class.c: implemented ldtoken for methods and fieldrefs.
21119
21120 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21121
21122         * threadpool.c: when mono_async_invoke was called, no one took care of
21123         monitoring the queue. So if the method invoked took some time and we
21124         got new async invoke requests after 500 ms (the thread created waited
21125         that long in WaitForSingleObject), the new async invoke was not called
21126         until the previous one finished.
21127
21128         This is fixed now. Thanks to Totte for helping with it.
21129
21130 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21131
21132         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
21133
21134 2003-08-11  Martin Baulig  <martin@ximian.com>
21135
21136         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
21137
21138 2003-08-06  Martin Baulig  <martin@ximian.com>
21139
21140         * mono-debug-debugger.c: Added support for static fields,
21141         properties and methods.
21142
21143 2003-08-06  Martin Baulig  <martin@ximian.com>
21144
21145         * mono-debug-debugger.c: Don't store the MonoString's vtable to
21146         make this work for applications with multiple application domains.
21147
21148 2003-08-04  Martin Baulig  <martin@ximian.com>
21149
21150         * mono-debug-debugger.c: Completely reworked the type support; the
21151         most important thing is that we're now just using one single
21152         `MonoType' instance per type.
21153
21154 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
21155
21156         * mono-endian.h, mono-endian.c, icall.c: Added icall
21157         ves_icall_System_Double_AssertEndianity to assert double word endianity
21158         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
21159
21160 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21161
21162         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
21163         support, icalls and fixes.
21164
21165 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
21166
21167         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
21168         classes that are a punctuation character in .NET is not the same a
21169         g_unichar_ispunct.
21170
21171 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21172
21173         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
21174
21175 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
21176
21177         * icall.c: Add new MemCopy internalcall.
21178         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
21179         Simplified code; It is not necessary to handle all the cases here,
21180         as the C# code takes care of it.  Only handle the case of the name
21181         resource embedded into the assembly.
21182
21183         Changed signature to return the data pointer and the size of the
21184         data. 
21185
21186 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
21187
21188         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
21189         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
21190
21191 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21192
21193         * socket-io.c: ignore EINTR error in select.
21194
21195 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21196
21197         * class.h, class.c: removed unused subclasses field in MonoClass.
21198
21199 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21200
21201         * icall.c: improve fix of get_base_definition(). If the parent class
21202           doesn't have the mehod, look at the parent of the parent.
21203         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
21204           to check if a parameter is an in or out parameter
21205           (PARAM_ATTRIBUTE_IN is not set by default).
21206           mono_method_return_message_restore(): Use mono_class_value_size to
21207           get the size of a value type. mono_type_stack_size (parameterType)
21208           does not return the correct value if parameterType is byRef.
21209           mono_load_remote_field(), mono_load_remote_field_new(),
21210           mono_store_remote_field(), mono_store_remote_field_new():
21211           raise exception if the remote call returns an exception.
21212
21213 2003-07-28  Martin Baulig  <martin@ximian.com>
21214
21215         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
21216         method.  This is a wrapper around mono_runtime_invoke() which
21217         boxes the instance object if neccessary.
21218
21219 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21220
21221         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
21222         metadata.h, row-indexes.h, verify.c: first cut of generics support.
21223
21224 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21225
21226         * icall.c: disable mcs bug workaround.
21227
21228 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21229
21230         * object.c (mono_runtime_class_init): Take the metadata_section
21231         mutex before obtaining the domain mutex.
21232
21233         * appdomain.h: Added definition of metadata_section mutex here. 
21234
21235         * object.c: define metadata_mutex here.
21236
21237 2003-07-24  Ravi Pratap  <ravi@ximian.com>
21238
21239         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
21240         fixed.
21241
21242 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
21243
21244         * reflection.c: Fix bug #46669
21245
21246 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21247
21248         * exception.c:
21249         * exception.h:
21250         * icall.c:
21251         * object.h: fill in the type name for TypeLoadException.
21252
21253 2003-07-23  Ravi Pratap  <ravi@ximian.com>
21254
21255         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
21256         relationship between TypeBuilders while compiling corlib) and bug
21257         45993 (Array types returned from the runtime while compiling
21258         corlib were from the loaded corlib).
21259
21260 2003-07-22  Martin Baulig  <martin@ximian.com>
21261
21262         * mono-debug-debugger.c: Reworked the type support a bit more;
21263         distinguish between types and classes.
21264
21265 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
21266
21267         * icall.c: add IsArrayImpl icall.
21268
21269 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
21272         initializing real_size only once. Also fix bug #46602.
21273
21274 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
21275
21276         * object.c: Renamed mono_metadata_section to metadata_section.
21277
21278 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
21279
21280         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
21281           empty array if the type is an array. Fixed.
21282           ves_icall_MonoMethod_get_base_definition: if the base method
21283           is abstract, get the MethodInfo from the list of methods of
21284           the class.
21285         * reflection.c: ParameterInfo.PositionImpl should be zero-based
21286           and it was 1-based. Fixed in mono_param_get_objects.
21287
21288 2003-07-20  Martin Baulig  <martin@ximian.com>
21289
21290         * mono-debug.h: Set version number to 31.
21291         (mono_debug_init): Added `MonoDomain *' argument.
21292
21293         * mono-debug-debugger.c: Reworked the type support; explicitly
21294         tell the debugger about builtin types; pass the `klass' address to
21295         the debugger.
21296
21297 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
21298
21299         * image.c: Allow new metadata tables to be loaded without a
21300         warning. Also update the warning message to give the new constant value.
21301                 
21302 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21303
21304         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
21305         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
21306         array type representation changes.
21307
21308 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21309
21310         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
21311         on Environment.Exit () call.
21312
21313 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21314
21315         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
21316         requires a matching corlib.
21317
21318 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21319
21320         * Changelog: My editor decided to add a CR to each line. Sorry about that.
21321           Committed again without the CRs.
21322         
21323 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21324
21325         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
21326           getting it from the "this" socket instance. Did not work
21327           if the socket is a subclass of Socket.
21328           Also fixed bug #35371.
21329
21330 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21331
21332         * metadata.c: fixed size for TypedByRef.
21333         * loader.c: when searching for a method, consider the vararg amrker.
21334         * unicode.c, decimal.c: constify some arrays.
21335
21336 2003-07-15  Dick Porter  <dick@ximian.com>
21337
21338         * socket-io.c: Fixed compilation for gcc < 3.2.
21339
21340         Fixed compilation for machines that don't have AF_INET6 (thanks to
21341         Bernie Solomon <bernard@ugsolutions.com> for that part.)
21342
21343         Fixed compile warnings.
21344         
21345         Fixed formatting and line endings.
21346
21347 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
21348
21349         * socket-io.h:
21350         * socket-io.c: Added IPv6 support.
21351
21352 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
21353
21354         * class.c (mono_class_is_assignable_from): New function to implement
21355         the is_assignable_from logic. Used by mono_object_isinst, 
21356         Type::IsAssignableFrom () and the interpreter.
21357
21358         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
21359         Object, even interfaces.
21360         
21361         * object.c (mono_object_isinst): Implement in terms of 
21362         is_assignable_from.
21363
21364         * icall.c (ves_icall_type_is_assignable_from): New icall.
21365
21366 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * domain.c (foreach_domain): fix compiler warning.
21369
21370 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
21371
21372         * image.c (load_metadata_ptrs): use g_strndup because strndup is
21373         not available on all plattforms
21374
21375 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
21376
21377         * image.h image.c: Store the metadata version string in MonoImage.
21378         * icall.c: New icall to retrieve the image version.
21379         * reflection.c (create_dynamic_image): Fill in the image version field
21380         * reflection.c (build_compressed_metadata): Use the image version
21381         from the image structure.
21382
21383 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21384
21385         * appdomain.c: modified comment.
21386         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
21387         That will be its last iteration when mono_gc_cleanup is called from
21388         mono_runtime_cleanup and before the domain is unloaded.
21389
21390         Fixes bug #45962.
21391
21392 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
21393
21394         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
21395         attributes.
21396
21397 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21398
21399         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
21400         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
21401         Bernie Solomon <bernard@ugsolutions.com>.
21402
21403 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21404
21405         * object.c, object.h: provide mono_object_new_fast() for faster
21406         allocation in some special cases.
21407
21408 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21409
21410         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
21411         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
21412
21413 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21414
21415         * threadpool.c: fix leaks.
21416
21417 2003-07-01  Dick Porter  <dick@ximian.com>
21418
21419         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
21420         using MonoGHashTables.  Fixes threadpool bug posted to list.
21421
21422 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
21423
21424         * image.h, image.c: added support to load an assembly from a byte array.
21425         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
21426         assembly bundle support.
21427
21428 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
21429
21430         * threadpool.c (mono_thread_pool_add): keep a reference to the
21431         AsyncResult to prevent GC
21432
21433 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21434
21435         * class.c: leak fix.
21436
21437 2003-06-25  Dick Porter  <dick@ximian.com>
21438
21439         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
21440         for the async object, the WaitHandle object will close the handle.
21441         Fixes bug 45321.
21442
21443 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21444
21445         * class.c: in mono_array_class_get (), lookup from the hash with the
21446         same type we insert: this works around a bug in
21447         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
21448         lluis. The real fix will have to wait for after the release.
21449
21450 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21451
21452         * icall.c: fix memory leak when getting type members.
21453
21454 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21455
21456         * reflection.c: added more pubtoken special cases.
21457
21458 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21459
21460         * class.c: handle field offset correctly when class size
21461         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
21462
21463 2003-06-20  Martin Baulig  <martin@ximian.com>
21464
21465         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
21466         *image' field.
21467
21468 2003-06-20  Martin Baulig  <martin@ximian.com>
21469
21470         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
21471
21472 2003-06-20  Martin Baulig  <martin@ximian.com>
21473
21474         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
21475         just distinguish between variables in registers and variables at
21476         an offset relative to a register.
21477
21478 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21479
21480         * icall.c: #ifdef out latest changes until mcs is fixed.
21481
21482 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21483
21484         * icall.c: return members in metadata order.
21485
21486 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21487
21488         * icall.c: avoid infinite loop in GetTimeZoneData.
21489
21490 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21491
21492         * icall.c: added Marshal.Prelink/All icalls.
21493
21494 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21495
21496         * object.c, object.h: fix warnings and do some overflow checking
21497         when creating arrays.
21498
21499 2003-06-17  Dick Porter  <dick@ximian.com>
21500
21501         * file-io.h:
21502         * file-io.c: File attributes need to be tweaked slightly when
21503         passed from the managed to the w32 world.
21504
21505 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21506         * profiler.h profiler-private.h profiler.c: Rework last patch
21507         based on suggestion by Paolo.
21508         
21509 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
21512         instruction level coverage data collection.
21513         * profiler.h profiler.c (: Added new callback function which can be
21514         used by the profiler to limit which functions should have coverage
21515         instrumentation.
21516         * profiler.c (mono_profiler_load): Call g_module_build_path to
21517         generate the file name of the profiler library.
21518
21519 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21520
21521         * profiler.c, profiler.h, profiler-private.h: added basic block 
21522         coverage profiling API.
21523
21524 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * reflection.c (mono_reflection_create_runtime_class): Add support
21527         for events in dynamically generated code.
21528
21529         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
21530         not allocated.
21531
21532 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21533
21534         * icall.c: when getting timezone info, return reasonable values if we
21535         can't get the actual data.
21536
21537 2003-06-14  Dick Porter  <dick@ximian.com>
21538
21539         * threads.c (start_wrapper): Remove the reference to the thread
21540         object in the TLS data, so the thread object can be finalized.
21541         This won't be reached if the thread threw an uncaught exception,
21542         so those thread handles will stay referenced :-( (This is due to
21543         missing support for scanning thread-specific data in the Boehm GC
21544         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
21545
21546 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
21547
21548         * reflection.c: ensure streams and tables are first allocated with
21549         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
21550
21551 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21552
21553         * icall.c: fixed GetElementType for byrefs (bug# 44792).
21554
21555 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * reflection.c (mono_reflection_create_runtime_class): Add support for
21558         properties to dynamically created classes.
21559         * reflection.c: Fix a few places where non-MonoObjects were inserted
21560         into the tokens hashtable.
21561
21562 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21563
21564         * object.c: some support to handle out of memory exceptions.
21565
21566 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
21567
21568         * marshal.c (mono_marshal_get_native_wrapper): support reference
21569         return types
21570
21571 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21572
21573         * object.h, object.c: more portability stuff from Bernie Solomon.
21574         Unexport mono_object_allocate(). Added mono_object_unbox ().
21575         Set exitcode when an unhandled exception is thrown.
21576
21577 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
21578
21579         * marshal.c (mono_marshal_get_native_wrapper): use custom
21580         marshaler for return types.
21581
21582 2003-06-10  Dick Porter  <dick@ximian.com>
21583
21584         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
21585         ip_mreq is available
21586
21587 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21588
21589         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
21590         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
21591         by Bernie Solomon <bernard@ugsolutions.com>.
21592
21593 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
21594
21595         * gc.c (mono_gc_init): Avoid error message on shutdown when
21596         GC_DONT_GC=1 is used.
21597
21598         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
21599         New icall to return the GUID of a module.
21600
21601 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21602
21603         * class.c: ensure instance size always includes the parent's size
21604         even whem class size is set explicitly (fixes bug#44294).
21605
21606 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21607
21608         * profiler.h, profiler.c: made the simple profiler thread-safe,
21609         get more accurate timing info. Allow the loading of an
21610         externally-developed profiler module.
21611
21612 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
21613
21614         * marshal.c (mono_marshal_get_native_wrapper): improved
21615         class/byref arguments.
21616         (mono_marshal_get_native_wrapper): better string marshaling support.
21617
21618 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21619
21620         * class.c: ensure .pack and .size are handled correctly and
21621         simplified layout of static fields.
21622
21623 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21624
21625         * appdomain.c
21626         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
21627
21628         * loader.c (mono_lookup_pinvoke_call): look for modules in the
21629         current directory (fix bug 44008)
21630
21631 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
21632
21633         * marshal.c (mono_marshal_get_native_wrapper): started support for
21634         custom marshalers.
21635         (mono_delegate_to_ftnptr): consider marshalling specifications
21636
21637 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21638
21639         * reflection.c, reflection.h: emit custom marshal info.
21640
21641 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21642
21643         * object.c: free the GError.
21644         * icall.c: added CloseEvent_internal.
21645         * threads.[ch]:
21646         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
21647         call.
21648
21649 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
21650
21651         * loader.c (mono_method_get_signature): Add support for dynamic
21652         assemblies.
21653
21654 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21655
21656         * reflection.c: fixed bug #43905.
21657
21658 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21659
21660         * class.c, domain.c, icall.c, metadata.h, object.h: support for
21661         handling TypedReference and ArgIterator.
21662         * loader.c, loader.h: added function to get signature at call site.
21663
21664 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21665
21666         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
21667         data readonly. Buglets and warning fixes. Some MethodSpec support.
21668
21669 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21670
21671         * class.h, class.c, object.c: remove relative numbering support.
21672
21673 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
21674
21675         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
21676         free the string, until we get a chance to fix Gtk#
21677
21678 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21679
21680         * marshal.c: revert last patch.
21681
21682 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21683
21684         * icall.c: updates for new mono_class_vtable() not calling
21685         the type constructor anymore.
21686
21687 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21688
21689         * object.h, object.c: separate vtable creation from type
21690         initialization. Make running the .cctor thread safe.
21691
21692 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21693
21694         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
21695
21696 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21697
21698         * loader.c (mono_get_method): consider calling convention
21699
21700 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
21701
21702         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
21703         to return the invisible global type for a module.
21704
21705         * reflection.c (mono_image_build_metadata): Emit global fields too.
21706
21707 2003-05-20  Peter Williams  <peterw@ximian.com>
21708
21709         * loader.c (mono_lookup_internal_call): Add a few newlines.
21710
21711 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
21714         literal strings.
21715
21716         * appdomain.c (set_domain_search_path): Recalculate search path when
21717         AppDomainSetup.PrivateBinPath changes.
21718
21719         * object.c (mono_class_compute_gc_descriptor): It turns out some
21720         parts of the class libs (like System.Thread) holds pointers to
21721         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
21722         to treat native int a pointer type here.
21723         
21724 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
21725
21726         * appdomain.h, domain.c: add hashtable for jump target resolution.
21727
21728 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
21729
21730         * reflection.h reflection.c icall.c: Added new icalls 
21731         GetManifestResourceInfoInternal, GetModulesInternal and support
21732         infrastructure.
21733
21734 2003-05-16  Dick Porter  <dick@ximian.com>
21735
21736         * icall.c:
21737         * file-io.h:
21738         * file-io.c: Implement System.IO.MonoIO::GetTempPath
21739
21740 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
21741
21742         * object.c: mono_store_remote_field: little fix to previous patch.
21743
21744 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21745
21746         * class.c: add constructors to array classes.
21747         * icall.c: special case array construction for InternalInvoke (),
21748
21749 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * class.h class.c reflection.c object.c: Added support for field
21752         defaults in dynamically generated classes.
21753
21754 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21755
21756         * reflection.c: properly encode charset for ddlimport.
21757
21758 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21759
21760         * threads.c: allow compiling without GC.
21761
21762 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21763
21764         * appdomain.h, object.c, object.h, threads.c, threads.h: added
21765         handling of thread static data.
21766
21767 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21768
21769         * reflection.h, reflection.c: added mono_custom_attrs_free ().
21770
21771 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21772
21773         * class.c (mono_array_class_get): always set the serializable flags
21774         (mono_array_class_get): always set the SEALED attribute for array types
21775
21776 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
21777
21778         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
21779         attributes (fix for bug 42021).
21780
21781 2003-05-12  Dick Porter  <dick@ximian.com>
21782
21783         * gc.c: Don't run finalizers when the finalizer thread is
21784         finishing up, because the default domain has already been
21785         destroyed.
21786
21787 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
21788
21789         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
21790         value is null, we should throw an exception.   This is slightly
21791         different than the other conventions used for the constructor.
21792
21793 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21794
21795         * socket-io.c: fixed windows build.
21796
21797 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21798
21799         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
21800
21801 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * object.c (mono_string_new_wrapper): Compatibility fix for MS
21804         compilers.
21805
21806 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * class.c (mono_class_layout_fields): Add experimental GC aware
21809         auto layout facility. Requires class library changes to work correctly.
21810
21811         (mono_class_setup_vtable): Avoid overriding explicit interface
21812         method implementations. Fixes iface3.exe test.
21813
21814         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
21815         object reference.
21816         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
21817         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
21818
21819         * metadata.h: Add new type classification macro which determines
21820         whenever the type holds an object reference.
21821
21822 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21823
21824         * marshal.c (mono_marshal_get_native_wrapper): cleanups
21825
21826 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
21827
21828         * gc.c (finalizer_thread): Work around a GC bug.
21829
21830 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
21831
21832         * marshal.c (emit_struct_conv): allow unions
21833
21834         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
21835
21836 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
21837
21838         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
21839
21840 2003-05-06  Martin Baulig  <martin@ximian.com>
21841
21842         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
21843
21844 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21845
21846         * socket-io.c:
21847         (Select_internal): allow NULLs, don't create arrays if not needed.
21848         Coupled with Socket.cs changes.
21849
21850         * threadpool.c:
21851         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
21852         register a finalizer for it that will close the semaphore handle. This
21853         fixes the leak and make Lupus' test run with > 4080 loops.
21854
21855 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21856
21857         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
21858         Jerome Laban (bug #42287)
21859
21860 2003-05-02  Martin Baulig  <martin@ximian.com>
21861
21862         * debug-mono-symfile.h
21863         (MonoSymbolFile): Moved declaration into mono-debug.h.
21864         (MonoDebugMethodJitInfo): Likewise.
21865         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
21866         argument.
21867         (_mono_debug_address_from_il_offset): Take a
21868         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
21869
21870         * mono-debug.h
21871         (MonoDebugDomainData): New struct.
21872         (mono_debug_get_domain_data): New function.
21873         (mono_debug_add_method): Take an additional `MonoDomain *'
21874         argument.
21875         (mono_debug_source_location_from_address): Likewise.
21876         (mono_debug_il_offset_from_address): Likewise.
21877         (mono_debug_address_from_il_offset): Likewise.
21878
21879 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
21880
21881         * reflection.c: one more check for null type in custom attrs.
21882
21883 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21884
21885         * reflection.c: avoid warning (comparison is always false due to limited
21886         range of data type).
21887
21888 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21889
21890         * icall.c: throw an exception in Type.GetField if the argument 'name'
21891         is NULL.
21892
21893 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
21894
21895         * reflection.c: fixed handling of enums in named arguments to custom
21896         attributes (bug #42123).
21897
21898 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21899
21900         * reflection.c: use the right array element type and handle
21901         a null for a Type argument, too.
21902
21903 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
21904
21905         * reflection.c: handle arrays as arguments to custom attributes.
21906
21907 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21908
21909         * reflection.c: handle a string value in a custom attr
21910         ctor that takes an object.
21911
21912 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21913
21914         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
21915         (fix bug #42063)
21916
21917 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
21920
21921 2003-04-27  Martin Baulig  <martin@ximian.com>
21922
21923         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
21924         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
21925         MONO_DEBUGGER_EVENT_BREAKPOINT.
21926         (mono_breakpoint_trampoline_code): Removed.
21927         (mono_debugger_event_handler): The last argument is now a
21928         `guint32'.
21929         (mono_debugger_insert_breakpoint_full): Removed the
21930         `use_trampoline' argument.
21931         (mono_debugger_method_has_breakpoint): Likewise.
21932         (mono_debugger_trampoline_breakpoint_callback): Renamed to
21933         mono_debugger_breakpoint_callback(); take the method and
21934         breakpoint number as arguments.
21935
21936 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21937
21938         * metadata.c: fix off by one when loading parameters attributes.
21939
21940 2003-04-24  Martin Baulig  <martin@ximian.com>
21941
21942         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
21943
21944 2003-04-24  Martin Baulig  <martin@ximian.com>
21945
21946         * mono-debug-debugger.c: Moved all code which interacts with the
21947         Mono Debugger here.
21948
21949         * debug-mono-symfile.c: This code now just deals with the symbol
21950         file itself, the debugger code is now in mono-debug-debugger.c.
21951
21952 2003-04-23  Martin Baulig  <martin@ximian.com>
21953
21954         * mono-debug.c (mono_debug_source_location_from_il_offset):
21955         New method; like mono_debug_source_location_from_address(), but
21956         takes an IL offset instead of a machine address.
21957
21958 2003-04-23  Martin Baulig  <martin@ximian.com>
21959
21960         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
21961         `line' field; this is now computed by the debugger.
21962
21963 2003-04-23  Martin Baulig  <martin@ximian.com>
21964
21965         * mono-debug.[ch]: New files.  This is the new debugging interface.
21966
21967         * mono-debug-debugger.[ch]: New files.  Moved all code which
21968         interacts with the Mono Debugger here.
21969
21970 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21971
21972         * domain.c (mono_init): initialize mono_defaults.monitor_class
21973
21974 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
21975
21976         * reflection.c (method_encode_code): Add a spicy exception to help
21977         future compiler authors.
21978
21979 2003-04-21  Martin Baulig  <martin@ximian.com>
21980
21981         * icall.c
21982         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21983         Make this work with relative pathnames; g_filename_to_uri() needs
21984         an absolute filename.
21985
21986 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
21987
21988         * icall.c: Track name changes in Object and ValueType.
21989
21990 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
21991
21992         * metadata.c (mono_type_stack_size): size should be a multiple of
21993         sizeof (gpointer)
21994
21995 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21996
21997         * gc.c:
21998         (internal_domain_finalize): moved into mono_domain_finalize. No need
21999         to create another thread because the finalizers will be run in the
22000         finalizer thread.
22001         
22002         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
22003         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
22004         to be run (MS does this too).
22005
22006 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22007
22008         * object.c (mono_class_compute_gc_descriptor): Update comment.
22009
22010         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
22011
22012         * image.h: Add synchronized wrapper cache.
22013
22014         * image.c (do_mono_image_open): Initialize cache.
22015
22016         * reflection.c (create_dynamic_mono_image): Initialize cache.
22017
22018 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22019
22020         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
22021         ves_icall_System_Buffer_ByteLengthInternal.
22022
22023 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22024
22025         * reflection.c: setup klass->nested_in earlier. Allow
22026         a dash in the assembly name.
22027
22028 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
22029
22030         * metadata.c (mono_type_to_unmanaged): dont access
22031         type->data.klass for MONO_TYPE_OBJECT
22032         (mono_type_to_unmanaged): consider System.Delegate class
22033
22034 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
22035
22036         * class.c: just setup supertypes in the proper place instead of
22037         initializing the full element class for arrays.
22038
22039 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22040
22041         * class.c: ensure the element class of arrays is initialized.
22042         Setup the supertype info for array classes, too.
22043
22044 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
22045
22046         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
22047
22048 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22049
22050         * Makefile.am: re-added -m option when running cygpath. This way,
22051         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
22052         separator.
22053         * mono-config.c: same codepath for locating mono config file for WIN32
22054         and the rest.
22055         * assembly.c: if mono_assembly_setrootdir is called, don't override
22056         the value set.
22057
22058 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22059
22060         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
22061         MONO_ASSEMBLIES variable.
22062
22063 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22064
22065         * icall.c: added Assembly::GetNamespaces() icall.
22066
22067 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22068
22069         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
22070
22071 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
22072
22073         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
22074         * object.c: fixed bug in the construction of vtable for proxies
22075
22076 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * object.c (mono_array_new): Mark mono_array_new as an icall.
22079
22080 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22081
22082         * class.c: fixed test for public method when overriding interfaces.
22083         Closes bug #40970.
22084
22085 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22086
22087         * appdomain.h, domain.c: added mono_domain_foreach() to
22088         be able to access the currently loaded appdomains.
22089         * object.c: make string interning work across sppdomains.
22090         Mark some functions for use as icalls.
22091
22092 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
22095
22096         * reflection.h reflection.c: Allocate long living data using 
22097         GC_MALLOC_ATOMIC so the collector does not need to scan it.
22098
22099         * reflection.c: Double the allocation size in streams instead of
22100         increasing it, to prevent unneccesary copying on large assemblies.
22101         
22102         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
22103         creation if the assembly does not have the Run flag set.
22104
22105 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22106
22107         * class.h: avoid the C++ keywords in header files (Jerome Laban
22108         spotted and fixed this).
22109
22110 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22111
22112         * object.c:
22113         (mono_unhandled_exception): fill in the arguments for the
22114         UnhandledException event. Only trigger that event for the default
22115         domain (as MS does).
22116
22117 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
22118
22119         * object.c: Improve typed allocation stuff based on suggestions from
22120         Paolo. Also turn it on if the GC library supports it.
22121
22122 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22123
22124         * object.c object.h class.h: Added experimental typed allocation
22125         facility using the interfaces in gc_gcj.h.
22126
22127         * os/gc_wrapper.h: Added new include files.
22128         
22129 2003-04-03  Martin Baulig  <martin@ximian.com>
22130
22131         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
22132         which is not yet enabled by default.
22133
22134         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
22135         functions.
22136         (mono_gc_lock, mono_gc_unlock): New static functions.
22137
22138         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
22139         functions; stop/start the world for the garbage collector.  This
22140         is using the windows API; we need to complete the SuspendThread()/
22141         ResumeThread() implementation in the io-layer to make this work on Unix.
22142         (mono_gc_push_all_stacks): New public function; tells the garbage
22143         collector about the stack pointers from all managed threads.
22144
22145 2003-04-03  Martin Baulig  <martin@ximian.com>
22146
22147         * object.h (MonoThread): Added `gpointer stack_ptr'.
22148
22149         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
22150
22151 2003-04-03  Martin Baulig  <martin@ximian.com>
22152
22153         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
22154
22155 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22156
22157         * reflection.c (typebuilder_setup_fields): Initialize field.first and
22158         field.last.
22159
22160 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
22161
22162         * loader.c (mono_lookup_internal_call): Report the corlib that is
22163         out of sync.
22164
22165 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
22166
22167         * icall.c (ves_icall_type_GetTypeCode): fixed check for
22168         System.DBNull (it's class not valuetype).
22169
22170 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22171
22172         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
22173         if the array method was already assigned a token (fixes bug#40646).
22174
22175 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
22176
22177         * reflection.c (mono_reflection_get_type): Attempt type resolve even
22178         if no assembly is given.
22179
22180 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
22181
22182         * metadata.h: Added the new tables.
22183
22184         * row-indexes.h: Added definitions for new tables.
22185
22186         * metadata.c: Add schemas for new tables, and add support for
22187         computing the sizes of them.
22188
22189         * class.c: Update for handling the new type cases.
22190
22191 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
22192
22193         * metadata.h (MONO_TYPE_IS_VOID): new macro
22194
22195 2003-03-31  Martin Baulig  <martin@ximian.com>
22196
22197         * threads.h (MonoThreadCallbacks): Added `thread_created'.
22198
22199         * threads.c (mono_thread_new_init): Call `thread_created' in the
22200         mono_thread_callbacks.
22201
22202 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
22203
22204         * loader.h: added marshalbyrefobject_class to mono_defaults
22205         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
22206         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
22207           generation of output parameters.
22208           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
22209         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
22210           contextbound and the target object belongs to the context of the caller.
22211         * object.h: added context and unwrapped_server variables in MonoRealProxy.
22212         * object.c: Implemented support for interfaces and abstract classes
22213           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
22214           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
22215
22216 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
22217
22218         * class.h class.c (mono_class_is_subclass_of): New function.
22219         
22220         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
22221         routines for most common case (calls from ArrayList::ToArray).
22222
22223         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
22224         routine so programs which call Environment::Exit() can be profiled.
22225
22226         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
22227         Added MONO_ARCH_SAVE_REGS.
22228
22229         * icall.c (ves_icall_type_is_subtype_of): Use new function.
22230
22231 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
22232
22233         * blob.h: Add a couple of new MonoType types definitions.
22234
22235         * tabledefs.h: Add a couple of new call convs.
22236
22237 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
22238
22239         * reflection.h (MonoReflectionDynamicAssembly): track changes in
22240         the layout of the class.
22241
22242         * reflection.c (alloc_table): double the size on overflow to avoid
22243         unnecessary copying.
22244
22245         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
22246         avoid filling out metadata tables and blobs. Also set mb->ilgen to
22247         null so it can be garbage collected.
22248         
22249 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
22250
22251         * reflection.c (mono_reflection_get_type): Return the resolved type
22252         only if it is in the assembly we searched.
22253
22254         * reflection.c (ensure_runtime_vtable): Initialize method slots.
22255
22256         * class.c (mono_class_setup_vtable): Set the slot of the overriding
22257         method.
22258
22259 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22260
22261         * appdomain.c:
22262         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
22263         the right one is 'file:///blah', but MS allows it.
22264         * assembly.c:
22265         (mono_assembly_open): allow 'file://blah'
22266
22267         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
22268
22269 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
22270
22271         * socket-io.c: fixes bug #40310.
22272
22273 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
22274
22275         * reflection.c (mono_reflection_parse_type): handle deeply nested
22276         types correctly.
22277
22278         * reflection.c (mono_image_create_token): Use unique token values
22279         since they will be put into a hash table.
22280
22281         * class.c (mono_class_setup_vtable): If a method occurs in more than
22282         one place in the vtable, and it gets overriden, then change the
22283         other occurances too.
22284
22285         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
22286         object as return type.
22287
22288 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22289
22290         * icall.c: Deleted "ToString" implementation for double and float
22291         because they are full implemented in managed code.
22292
22293 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22294
22295         * reflection.c, reflection.h: implemented and exported functions
22296         to retrieve info about custom attributes.
22297
22298 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22299
22300         * appdomain.c: moved Uri handling to assembly.c
22301         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
22302         work when using a file Uri in *nix and windows.
22303
22304         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
22305         GetReferencedAssemblies.
22306
22307 2003-03-18  Dick Porter  <dick@ximian.com>
22308
22309         * icall.c: Rename a couple of internal calls
22310
22311         * threads.c: Set the thread state to Stopped when a thread exits.
22312         Fixes bug 39377.
22313
22314 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
22315
22316         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
22317         New icall.
22318
22319         * object.c (mono_class_vtable): fix warning.
22320
22321 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
22322
22323         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
22324
22325         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
22326         memory.
22327         (method_encode_clauses): Create exception info structures in the right
22328         order.
22329         (mono_reflection_setup_internal_class): Initialize supertypes field.
22330
22331         * class.c object.c: Handle interfaces which implement other interfaces 
22332         correctly.
22333
22334         * class.h class.c: Move the supertypes array initialization code into 
22335         a separate function so it can be used for dynamic types too. Also call
22336         it earlier, in mono_class_init(), since it can be used before the
22337         type is initialized.
22338
22339 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22340
22341         * Makefile.am:
22342         * assembly.c:
22343         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
22344
22345         * appdomain.c:
22346         * appdomain.h:
22347         * marshal.c:
22348         * object.c: remove warnings.
22349
22350 2003-03-13  Martin Baulig  <martin@ximian.com>
22351
22352         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
22353         (MonoDebugLexicalBlockEntry): New types.
22354
22355         * debug-mono-symfile.c
22356         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
22357
22358 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22359
22360         * process.c: ret can be any non-zero value accroding to MS doc.
22361
22362 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
22363
22364         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
22365         fixing a warning for a miss-used prototype, would have cause
22366         random memory corruption.
22367
22368 2003-03-07  Martin Baulig  <martin@ximian.com>
22369
22370         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
22371         getting really annoying ....
22372
22373 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
22374
22375         * reflection.c (fixup_method): added support for array methods.
22376
22377 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22378
22379         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
22380         (pointed out by Michael Adams).
22381
22382 2003-03-04  Dick Porter  <dick@ximian.com>
22383
22384         * icall.c: Temporarily reverted the Double and Single ToString()
22385         change, because it broke nunit.
22386
22387 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
22388
22389         * object.h, threads.h: make include files compatible with C++
22390         (patch by Jerome Laban <jlaban@wanadoo.fr>).
22391
22392 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22393
22394         * icall.c: Erased ToString helper functions for Double and Single.
22395         Now, that implementations ar all in managed code (Double and Single
22396         Formatters).
22397
22398 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
22399
22400         * appdomain.c: Added method for initializing the default context of
22401         a domain. Added internal call for getting the default context.
22402         * appdomain.h: Added context variable in MonoDomain struct.
22403         * domain.c: mono_domain_set also sets the default context of the domain
22404         * icall.c: Mapped internal method InternalGetDefaultContext.
22405         * object.c: mono_object_get_virtual_method returns always a remoting
22406         wrapper if the object is a transparent proxy.
22407         mono_runtime_invoke_array: when creating an object by calling the
22408         constructor, if the created object is a proxy, then the constructor should
22409         be called using the a remoting wrapper.
22410
22411 2003-03-03  Dick Porter  <dick@ximian.com>
22412
22413         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
22414         variable so it compiles on solaris.  Problem spotted by
22415         Christopher Taylor <ct@cs.clemson.edu>
22416
22417 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22418
22419         * appdomain.c:
22420         (get_info_from_assembly_name): don't leak value.
22421
22422         * icall.c:
22423         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
22424         result.
22425
22426 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22427
22428         * assembly.c: export mono_image_load_references ().
22429         * class.c: handle function pointers. mono_class_from_name() now
22430         supports nested type names directly.
22431
22432 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
22433
22434         * reflection.h reflection.c: Encode already created dynamic methods 
22435         and fields correctly as a DEF instead of a REF.
22436
22437         * reflection.c: Get rid of the force_ref argument to 
22438         mono_image_typedef_or_ref since it was wrong in the first place.
22439
22440         * string-icalls.c: add error checking to string constructors according
22441         to the MSDN docs.
22442
22443         * reflection.c: Emit types in the order their TypeBuilders were 
22444         created. Previously, a new table index was assigned to each type before
22445         the tables were emitted. This was wrong because the signature blob
22446         might already refer to a type by its original table index.
22447
22448 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
22449
22450         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
22451         change.
22452         
22453 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22454
22455         * Makefile.am: make assemblies dir have \ instead of / on windows.
22456
22457 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
22458
22459         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
22460         iterate over the NESTEDCLASS table using a linear search since the
22461         table is not guaranteed to be sorted by the secondary key.
22462
22463         * class.c (mono_class_create_from_typedef): fixed up call to
22464         mono_metadata_nesting_typedef.
22465         
22466 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
22467
22468         * marshal.c (mono_string_to_byvalstr): clear the memory as
22469         suggested by Jerome Laban <jlaban@wanadoo.fr>
22470
22471 2003-02-26  Dick Porter  <dick@ximian.com>
22472
22473         * process.c: Cope with padding in .rsrc blocks
22474
22475 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22476
22477         * metadata.h: reverted the filter_len change, it breaks reflection
22478         
22479 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22480
22481         * metadata.h: added a new field to store the filter_len
22482         
22483
22484 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22485
22486         * reflection.c: handle custom attributes for types and members
22487         created with Reflection.Emit (bug#38422).
22488
22489 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
22490
22491         * reflection.c: define RTSpecialName automatically for constructors for
22492         compatibility with MS.NET.
22493
22494         * reflection.c (mono_reflection_create_runtime_class): initialize
22495         nested_in field of dynamically created classes.
22496
22497 2003-02-22  Martin Baulig  <martin@ximian.com>
22498
22499         * debug-mono-symfile.h: Incremented version number.
22500
22501 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22502
22503         * object.h icall.c process.c: fix warnings.
22504
22505 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22506
22507         * appdomain.h appdomain.c:
22508         (mono_domain_try_type_resolve): split the 
22509         name_or_tb argument into a name and a tb argument.
22510         (mono_domain_has_type_resolve): new function to check whenever the
22511         application has registered a TypeResolve event handler.
22512         
22513         * icall.c reflection.h reflection.c: move the type resolve logic into
22514         mono_reflection_get_type () so it will be invoked when 
22515         Assembly::GetType () is called.
22516
22517         * reflection.c:
22518         (mono_reflection_get_type): renamed to get_type_internal.
22519         (mono_reflection_get_type): fixed type name generation so it works 
22520         for nested types too.
22521         (mono_reflection_get_type): call has_type_resolve () to avoid the 
22522         costly type name generation if there is no resolve event handler.
22523
22524 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22525
22526         * class.c, image.c: load exported types from file references.
22527
22528 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
22529
22530         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
22531           used to cache the managed methods used to create proxies and make 
22532           remote invocation of methods.
22533         * class.h: Added in MonoVTable a flag to indicate that a class needs 
22534           to be remotely created.
22535         * object.c: Modified the method mono_class_vtable(). It now initializes 
22536           the remote flag of the vtable. Modified mono_object_new_specific(), 
22537           so now it checks the remote flag.
22538         * icall.c: Added a couple of internal methods, one for enabling instance 
22539           creation interception for a type, and one for creating objects bypassing
22540           the remote check.
22541
22542 2003-02-18  Martin Baulig  <martin@ximian.com>
22543
22544         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
22545         New interncall to get a method's metadata token.
22546
22547         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
22548         New interncall for the debugger.
22549
22550 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
22551
22552         * class.c (mono_class_setup_vtable): allocate supertype array
22553
22554 2003-02-18  Martin Baulig  <martin@ximian.com>
22555
22556         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
22557
22558 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22559
22560         * reflection.c:
22561         (assembly_name_to_aname): jump over unknown properties (i've found
22562         something like: 'type, assembly, version=xxx, custom=null, public...',
22563         so now will ignore custom=null and still get the rest of the values).
22564
22565 2003-02-17  Dick Porter  <dick@ximian.com>
22566
22567         * threads.c: Have Thread.Start() wait for a semaphore to signal
22568         that the thread has set up all its local data.  This fixes bug
22569         34323, where Abort() raced the new thread's TLS data.
22570
22571         Also removes the handle_store() call from start_wrapper, because
22572         threads are now always created suspended and there is no longer a
22573         race between the parent and child threads to store the info.
22574
22575 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
22576
22577         * image.c: explain the #- heap issue in a message, hopefully
22578         avoiding FAQs on mono-list.
22579
22580 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22581
22582         * icall.c:
22583         (GetEntryAssembly): if the domain has not invoked
22584         AppDomain.ExecuteAssembly yet, return the assembly of the default
22585         AppDomain.
22586
22587 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * class.c (mono_ldtoken): make it work in dynamic assemblies.
22590
22591 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22592
22593         * metadata.c, reflection.c: simple speedup to type hash
22594         and equals code.
22595
22596 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
22597
22598         * image.c, image.h, class.c, assembly.c: move module loading
22599         to MonoImage. When loading metadata, consider alignemnet from
22600         the start of metadata, not from the metadata address in memory.
22601
22602 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
22603
22604         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
22605         AssemblyBuilder objects. Factored out custom attribute creation into
22606         a separate function.
22607         (create_custom_attr): new function to create custom attributes.
22608
22609 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
22610
22611         * Makefile.am: Got tired of typing the full pathname to pedump.
22612         Until there is another option, am installing this.
22613
22614 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
22615
22616         * class.c (class_compute_field_layout): always set field->parent 
22617         (mono_ldtoken): use mono_defaults.fieldhandle_class;
22618
22619 2003-02-11  Dick Porter  <dick@ximian.com>
22620
22621         * threads-types.h:
22622         * monitor.c: Rewrote Monitor, making lock much faster and
22623         Pulse/Wait work as specified.  Also uses much fewer handles, and only
22624         creates them as needed.
22625
22626         * exception.c: Added SynchronizationLockException
22627
22628         * threads.c: Deleted old Monitor implementation.  The new one is
22629         in a new file.
22630
22631 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22632
22633         * class.c: handled TypedReference type code. Set the correct size for
22634         class data. Setup interface_offsets for interface classes, too.
22635
22636 2003-02-09  Martin Baulig  <martin@ximian.com>
22637
22638         * debug-mono-symfile.h: Reflect latest symbol writer changes.
22639
22640 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
22641
22642         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
22643         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
22644         * object.c: fixed mono_object_get_virtual_method () for interfaces.
22645         * verify.c: check for code that runs after the end of the method.
22646
22647 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22648
22649         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
22650         "System.Math::Round2".
22651         * sysmath.h: Added Floor, Round and Round2 definitions.
22652         * sysmath.c: Modified certain functions that were not 100% compliant
22653         with MS.NET (math precision) and added the implementation of Floor,
22654         Round and Round2.
22655
22656 2003-02-07  Martin Baulig  <martin@ximian.com>
22657
22658         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
22659
22660 2003-02-07  Martin Baulig  <martin@ximian.com>
22661
22662         * debug-mono-symfile.c: Reflected latest symwriter changes.
22663         (mono_debug_create_mono_symbol_file): Removed.
22664         (mono_debug_open_mono_symbol_file): Take an argument which
22665         specifies whether to create a dynamic symbol file.
22666
22667 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
22668
22669         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
22670
22671 2003-02-05  Martin Baulig  <martin@ximian.com>
22672
22673         * reflection.c (mono_image_build_metadata): Make this public,
22674         protect it against being called multiple times, don't create
22675         resources and don't build the compressed metadata here.
22676         (mono_image_create_pefile): Do this here.
22677
22678         * icall.c
22679         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
22680
22681 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22682
22683         * socket-io.c: fixed bug #36322.
22684
22685 2003-02-06  Piers Haken <piersh@friskit.com>
22686
22687         * appdomain.[ch]:
22688         * class.h:
22689         * debug-mono-symfile.c:
22690         * icall.c:
22691         * loader.c:
22692         * mono-config.c:
22693         * monosn.c:
22694         * reflection.c:
22695         * socket-io.c: warning cleanups
22696
22697 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
22698
22699         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
22700         function. works like remoting invoke, but does a check for the Proxy first.
22701
22702 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
22703
22704         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
22705
22706 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
22707
22708         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
22709         array of pointers.
22710         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
22711         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
22712
22713         * object.c (mono_store_remote_field_new): used by the new jit
22714         instead of mono_store_remote_field
22715         (mono_load_remote_field_new): used by the new jit
22716         instead of mono_load_remote_field
22717
22718 2003-02-05  Patrik Torstensson
22719
22720         * appdomain.c: changed unload to take the domain id instead
22721         of domain
22722         
22723         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
22724
22725
22726 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22727
22728         * appdomain.c: don't look for assemblies in ApplicationBase if
22729         PrivateBinPathProbe is set.
22730
22731 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22732
22733         * object.c: make the first argument in main_args contain the absolute
22734         path to the assembly. Fixes bug #37511.
22735
22736 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22737
22738         * icall.c: get correct UTC offset for countries not using daylight
22739         time saving. Fixes bug #30030.
22740
22741 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22742
22743         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
22744         and 1 are the family).
22745
22746 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
22747
22748         * icall.c (ves_icall_InternalExecute): removed wrong assertion
22749
22750         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
22751
22752 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
22753
22754         * reflection.c: added support for SignatureHelper tokens, which is
22755         needed by the Calli opcode.
22756
22757         * reflection.h: track changes to SignatureHelper class.
22758
22759         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
22760
22761 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22762
22763         * appdomain.c: fixed loading assemblies from PrivateBinPath.
22764
22765 2003-02-03  Patrik Torstensson
22766         * appdomain.[c|h], domain.c : 
22767          - Added support for getting a domain via domain id
22768          - Support for setting and getting domain from System.AppDomain 
22769            (used in cross appdomain channel)
22770          - Added support for get/set for a MonoAppContext on a thread 
22771            (Context class in System.Runtime.Remoting.Contexts),
22772          - Removed hack in Get/SetData and ExecuteAssembly.
22773         
22774         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
22775         the managed world to get control when a proxy is created.
22776
22777         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
22778         
22779 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
22780
22781         * icall.c
22782         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22783         Populate the codebase field as well.
22784
22785 2003-02-02  Martin Baulig  <martin@ximian.com>
22786
22787         * debug-mono-symfile.c
22788         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
22789         (mono_debug_symfile_add_method): Allow interncalls.
22790
22791 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22792
22793         * icall.c: throw parse exception if strtod fails or the string is empty.
22794
22795 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
22796
22797         * marshal.c: handle object type separately from defined
22798         class types.
22799
22800 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
22801
22802         * marshal.c: handle NATIVE_LPSTR for strings when it's
22803         explicitly specified.
22804
22805 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
22806
22807         * reflection.c, reflection.h, icall.c: setup the reflection
22808         handle cache for ModuleBuilders and AssemblyBuilders.
22809
22810 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
22811
22812         * reflection.c (reflection_methodbuilder_to_mono_method): set
22813         pinvoke flag
22814
22815 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22816
22817         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
22818
22819 2003-01-29  Dick Porter  <dick@ximian.com>
22820
22821         * threads.c: No need for the fake_thread kludge now that Thread
22822         doesn't run a class constructor
22823         
22824 2003-01-29  Dick Porter  <dick@ximian.com>
22825
22826         * threads.c: Use g_direct_hash instead of the rather bogus
22827         g_int_hash
22828
22829 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
22830
22831         * marshal.c (mono_marshal_get_native_wrapper): add check for null
22832         (fix pinvoke12.exe)
22833         (mono_marshal_get_struct_to_ptr): generate valid IL code
22834         (mono_marshal_get_ptr_to_struct): generate valid IL code
22835         (*): correctly set sig->pinvoke, we need to memdup the signature
22836         to do that
22837
22838 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22839
22840         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
22841         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
22842
22843 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22844
22845         * profiler.c: provide more callers information.
22846
22847 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
22848
22849         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
22850
22851         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
22852
22853         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
22854
22855 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22856
22857         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
22858         exception instead of going into an infinite loop on dates which it 
22859         can't yet handle.
22860
22861         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
22862         out-of-range exception if needed.
22863
22864         * class.c (mono_class_setup_vtable): allow a virtual method to provide
22865         an implementation for an interface method and to override an inherited
22866         method at the same time. 
22867         Imagine a scenario when a virtual method is used to override a
22868         virtual abstract method in a parent class, and this same method 
22869         provides an implementation for an method inherited from an interface. 
22870         In this case, the interface resolution code will set im->slot, which 
22871         means that the virtual method override pass will skip this method 
22872         which means a pointer to the abstract method inherited from the parent
22873         will remain in the vtable of this non-abstract class.
22874
22875         * class.c: (mono_class_setup_vtable): continue search for a real 
22876         method if only an abstract method is found.     
22877
22878 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22879
22880         * reflection.c: add size to encoding for ByValStr and ByValArray
22881         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
22882
22883 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22884
22885         * class.c (mono_class_setup_vtable): pass the override info as an
22886         argument.
22887
22888         * class.c (mono_class_setup_vtable): set the slot of overriding methods
22889         correctly.
22890         
22891         * reflection.c (ensure_runtime_vtable); add support for method 
22892         overrides.
22893         
22894 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22895
22896         * reflection.c (resolution_scope_from_image): Hack to work to work with
22897         dynamic assemblies.
22898
22899         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
22900         added a 'force_ref' argument to force this function to allways return 
22901         a TypeRef. This is needed by mono_image_get_memberref_token ().
22902         
22903 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22904
22905         * reflection.c (mono_image_get_type_info): interfaces really don't have
22906         a parent.
22907
22908         * reflection.c (mono_image_basic_init): fill out missing fields of
22909         image structure.
22910
22911         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
22912         dynamic assemblies. This is required so dynamic assemblies show up in
22913         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
22914         Type::GetType() etc. This is consistent with MS behaviour.
22915
22916         * image.c image.h reflection.c: add newly created classes to the name 
22917         cache so mono_class_get () will find them.      
22918
22919 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22920
22921         First part of changes to get IKVM.NET running under mono.
22922         
22923         * appdomain.h, appdomain.c: added new function 
22924         mono_domain_try_type_resolve() which will emit TypeResolve events. 
22925         This function will call AppDomain::DoTypeResolve to do the actual work.
22926
22927         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
22928         moved existing code dealing with dynamic tokens to a new function 
22929         called mono_reflection_lookup_dynamic_token (). This function will 
22930         raise TypeResolve events when appropriate. Since reflection.c is not 
22931         part of libmetadata, a new hook function called 
22932         mono_lookup_dynamic_token() is added to class.c which will call this.
22933
22934         * assembly.h assembly.c: make the invoke_load_hook function public,
22935         so it can be called for dynamic assemblies.
22936
22937         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
22938
22939         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
22940         type isn't found.
22941
22942         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
22943         MonoGHashTable, since it contains pointers to objects which the GC 
22944         needs to track.
22945
22946         * assembly.c (search_loaded): remove unused variable.
22947         
22948 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
22949
22950         * object.c: fixed issue exposed by gcc-generated IL programs
22951         that use RVA data for pointers.
22952
22953 2003-01-25  Martin Baulig  <martin@ximian.com>
22954
22955         * threads.c (start_wrapper): Moved the initialization of
22956         `start_func' above the mono_new_thread_init() call to which we
22957         pass it as argument.
22958
22959 2003-01-24  Martin Baulig  <martin@ximian.com>
22960
22961         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
22962         the MonoThread pointer.
22963
22964 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
22965
22966         * icall.c: Rename `PowImpl' to Pow.
22967
22968 2003-01-23  Dick Porter  <dick@ximian.com>
22969
22970         * threads.c (start_wrapper): Create a Thread object if needed, so
22971         the Main() thread can do the class initialisation in a subthread
22972         that has been set up to allow managed code execution.
22973
22974         Pass the thread ID instead of the MonoThread pointer to the thread
22975         start and attach callbacks.  This change is required, because the
22976         jit thread start callback must be called _before_ the Thread
22977         object can be created.
22978         
22979         (mono_thread_init): Removed much object creation code that is no
22980         longer needed.  No managed code is called from here now.
22981
22982         * object.c (mono_runtime_exec_managed_code): Create a subthread
22983         for Main, and call back to the runtime to use it.
22984         Set the exit code when Main exits.
22985
22986         * gc.c: Make sure domain finalisation happens in a subthread.
22987         Re-enable threaded GC, fixing bug 31333 (again).
22988
22989         * environment.c: System.Environment internall calls (so far just
22990         ExitCode is here, the others are still in icall.c)
22991
22992         * appdomain.c (mono_runtime_cleanup): All threads running managed
22993         code should have finished before mono_runtime_cleanup() is
22994         reached, so no need to clean up threads.
22995
22996 2003-01-22  Martin Baulig  <martin@ximian.com>
22997
22998         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
22999         `gpointer func' arguments.      
23000         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
23001         but added `MonoThread *thread' argument.
23002         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
23003
23004         * threads.c (mono_new_thread_init): Added `gpointer func' argument
23005         and pass it to the mono_thread_start_cb callback.
23006         (mono_install_thread_callbacks): New public function to install a
23007         set of callbacks which are set by the debugger.
23008         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
23009
23010 2003-01-22  Martin Baulig  <martin@ximian.com>
23011
23012         * Makefile.am: Install debug-mono-symfile.h.
23013
23014 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
23015
23016         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
23017
23018 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
23019
23020         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
23021         * class.c (mono_ptr_class_get): correctly set access levels of pointers
23022         (mono_array_class_get): correctly set access levels of arrays
23023
23024 2003-01-20      Patrik Torstensson
23025         * image.h (MonoAssemblyName): changed major, minor, build, revision
23026         from signed to unsigned.
23027
23028 2003-01-20  sean kasun <skasun@azstarnet.com>
23029
23030         * reflection.c (load_cattr_value): Now this handles
23031         MONO_TYPE_SZARRAY.  Fixes bug #35629
23032
23033 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
23034
23035         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
23036         integer value
23037
23038 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23039
23040         * decimal.c: fixed bug #26056.
23041
23042 2003-01-17  Martin Baulig  <martin@ximian.com>
23043
23044         * gc.c: Raise an ExecutionEngineException instead of using g_error().
23045
23046 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23047
23048         * exception.[ch]:
23049         (mono_get_exception_type_initialization): new function.
23050
23051         * object.c: throw a TypeInitializationException when an exception is
23052         thrown invoking the class constructor.
23053
23054 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23055
23056         * reflection.c: fixed attribute reading.
23057
23058 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23059
23060         * icall.c:
23061         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
23062         provided, look for the type in the calling assembly and then in
23063         mscorlib; if the assembly name is provided, only try that one.
23064
23065 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23066
23067         * object.c: register the vtable before there is a chance it's
23068         queried again recursively.
23069
23070 2003-01-13  Duncan Mak  <duncan@ximian.com>
23071
23072         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
23073         gc-internal.h. 
23074         
23075 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
23076
23077         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
23078
23079 2003-01-11  Martin Baulig  <martin@ximian.com>
23080
23081         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
23082         this to 20 for the release.
23083
23084 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
23085
23086         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
23087
23088         * loader.c (mono_method_get_marshal_info): bug fix
23089
23090         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
23091         structures with explicit layout
23092
23093 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23094
23095         * profiler.c: made the output more readable (and sorted). 
23096         Added caller information for the allocation profiler.
23097
23098 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
23099
23100         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
23101
23102 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23103
23104         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
23105         to get value types.
23106         
23107 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
23108
23109         * object.c, profiler.h, profiler.c, profiler-private.h:
23110         Added object allocation profiler.
23111
23112 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
23113
23114         * reflection.h, reflection.c: handle global methods.
23115         Compress blob entries.
23116
23117 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
23118
23119         * marshal.c: fix compilation.
23120
23121 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
23122
23123         * loader.c (mono_method_get_marshal_info): impl.
23124
23125         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
23126
23127 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23128
23129         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
23130         for reference types.
23131
23132 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
23133
23134         * loader.c: fixed off by one error in loaded parameter names.
23135
23136 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
23137
23138         * marshal.c (mono_marshal_get_icall_wrapper): like
23139         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
23140         instead of a MonoMethod.
23141
23142 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23143
23144         * decimal.c: fixed bug #36537.
23145
23146 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
23147
23148         * marshal.c: throw a missing method exception if a
23149         P/Invoke method is not found.
23150
23151 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23152
23153         * icall.c: allow a null this for constructors.
23154
23155 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23156
23157         * icall.c: raise the proper exceptions if the arguments to the
23158         internal Invoke are incorrect.
23159
23160 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
23161
23162         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
23163
23164 2003-01-03  Martin Baulig  <martin@ximian.com>
23165
23166         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23167
23168 2002-12-31  Martin Baulig  <martin@ximian.com>
23169
23170         * debug-mono-symfile.c: Completely rewrote the type section.
23171         Instead of using individual malloc()ed fields, we use one big
23172         continuous memory area and offsets into this area.
23173         See the comments in the source code for details.
23174
23175 2002-12-30  Martin Baulig  <martin@ximian.com>
23176
23177         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
23178
23179 2002-12-30  Martin Baulig  <martin@ximian.com>
23180
23181         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
23182         line number table in this data blob instead of using an external
23183         pointer.
23184
23185 2002-12-28  Martin Baulig  <martin@ximian.com>
23186
23187         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23188
23189 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
23190
23191         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
23192         as a boxed return type.
23193
23194 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
23195
23196         * appdomain.c
23197         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
23198         g_build_filename to properly get separators on the filename created.
23199
23200         * object.h: Small change, introduce MonoMarshalByRefObject to
23201         track the layout of that structure in the C# universe as we make
23202         changes there.
23203
23204 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
23205
23206         * object.c: removed assert to allow static fields on interfaces.
23207         * loader.c: a TypeSpec may be used for any type, not just arrays.
23208
23209 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
23210
23211         * class.c, class.h: added mono_class_array_element_size ().
23212         Ignore static methods in interfaces.
23213
23214 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23215
23216         * threads.c: fixed the build under cygwin.
23217
23218 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
23219
23220         * reflection.c: handle nullref constants. Allocate keys for
23221         reflection handles with the GC.
23222
23223 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23224
23225         * threads.c, threads.h: added mono_thread_get_abort_signal()
23226         to get a suitable signal for thread abort.
23227
23228 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23229
23230         * metadata.c: fix handling of ExportedType table.
23231
23232 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23233
23234         * icall.c: added WriteWindowsDebugString internal call.
23235
23236 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23237
23238         * reflection.h: added fields to match C# implementation.
23239
23240 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23241
23242         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
23243
23244 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
23245
23246         * gc.h, gc-internal.h: Rename header for GC internal calls to
23247         gc-internal.h from gc.h as to not clash with Boehm GC having its
23248         header installed as <gc.h> in outside include paths.
23249         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
23250         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
23251
23252 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23253
23254         * icall.c: assign minor, build and revision in FillName.
23255
23256 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
23257
23258         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
23259         Added support for running code generated by Reflection.Emit.
23260
23261 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23262
23263         * appdomain.c: check for NULL argument in LoadFrom.
23264
23265 2002-12-10  Dick Porter  <dick@ximian.com>
23266
23267         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
23268
23269 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23270
23271         * appdomain.c: fix buglet when building exe file name.  Handle full
23272         assembly name (needed after latest changes to AssemblyName).
23273         * image.c:
23274         (mono_image_close): free some hashtables.
23275
23276 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
23277
23278         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
23279         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
23280         on some systems (redhat 7.3) 
23281
23282 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
23283
23284         * threads.c: delete the critical section of a sync block,
23285         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
23286
23287 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
23288
23289         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
23290
23291 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23292
23293         * appdomain.[ch]: handle the assembly preload event to try loading the
23294         assemblies using the paths we have in the current domain.
23295
23296         * assembly.[ch]: created an assembly preload hook that is called to try
23297         loading the assembly by other means that the ones provided here.
23298
23299         * domain.c: initialize the domain search path.
23300
23301         From now on, assemblies (TODO: except corlib and System) are loaded
23302         according to these rules when using mono_assembly_load ():
23303
23304                 1. It tries to load the assembly from the ApplicationBase
23305                 of the current domain appending .dll and .exe (TODO: have to
23306                 try loading from name/name.dll and name/name.exe).
23307
23308                 2. It tries the search path specified in PrivateBinPath for the
23309                 current domain (if any).
23310
23311                 3. Previous behavior.
23312
23313 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
23314
23315         * icall.c: implemented GetInterfaceMap() related icall.
23316         * domain.c, loader.h: load MethodInfo in mono_defaults.
23317
23318 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
23319
23320         * gc.c: disable the finalizer thread for now, untill all the issues
23321         with it are resolved.
23322
23323 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23324
23325         * string-icalls.c: handle embedded nulls in string ctor when the
23326         length is specified.
23327
23328 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
23329
23330         * class.c: look for explicit interface implementation in parent
23331         classes, too.
23332
23333 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
23334
23335         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
23336
23337 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
23338
23339         * gc.c: protect handles with a critical section.
23340
23341 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23342
23343         * icall.c:
23344         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
23345         parameters. If no assembly specified, try getting the type from all
23346         the assemblies in the current domain, else, load the assembly and get
23347         the type from it.
23348
23349 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23350
23351         * marshal.c: applied patch from Aleksey Demakov that fixes
23352         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
23353
23354 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23355
23356         * icall.c: fixed get_location.
23357
23358 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
23359
23360         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
23361         declarations to make it work with older gcc. 
23362
23363         * loader.c (mono_get_method): set signature->pinvoke for native calls
23364
23365 2002-11-20  Dick Porter  <dick@ximian.com>
23366
23367         * threads.c (mono_thread_init): Set the main thread's handle
23368
23369 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
23370
23371         * gc.c: allow compilation without GC support. Changed to match the
23372         mono coding style.
23373
23374 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
23375
23376         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
23377
23378 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
23379
23380         * reflection.c: set a public key token on the core assemblies.
23381
23382 2002-11-18  Dick Porter  <dick@ximian.com>
23383
23384         * threads.c: Split out some thread initialisation so that other
23385         files can set the start callback function.
23386
23387         * gc.c: Run finalisers in a separate thread, to avoid stack
23388         overflow.  Fixes bug 31333.
23389
23390         * appdomain.c: Set up GC finalisation thread.
23391
23392         * reflection.c: 
23393         * object.c: 
23394         * domain.c: Use gc.h macros for GC_malloc
23395         
23396 2002-11-15  Dick Porter  <dick@ximian.com>
23397
23398         * threadpool.c: 
23399         * threads.c:
23400         * appdomain.c: Removed mono_runtime_init_with_attach(),
23401         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
23402         merging the extra parameter with the existing function.  Removed
23403         unneeded code in mono_thread_attach().
23404
23405 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
23406
23407         * image.c (mono_image_loaded_by_guid): a method to get loaded
23408         images by guid. 
23409         (load_metadata_ptrs): we store the guid as string.
23410
23411 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
23412
23413         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
23414
23415         * metadata.c (mono_guid_to_string): imported method form Zoltan
23416         Varga (slightly modified)
23417
23418         * assembly.c (mono_assembly_open): load precompiled code
23419
23420         * loader.h (MonoMethod): we store the method token for use in the
23421         aot compiler. 
23422
23423 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23424
23425         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
23426         the hook function called when an assembly is loaded.
23427         
23428         * domain.c: Modified file.
23429         (mono_domain_assembly_load): removed hash table insertion of assemblies.
23430
23431         Fixes bug #33196.
23432
23433 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
23434
23435         * reflection.c: Map PEFileKind to the value expected by the WinNT
23436         image loader. 
23437
23438 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23439
23440         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
23441         Read until the buffer is filled completely.
23442
23443 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23444
23445         * icall.c: implemented MonoType.InternalGetEvent ().
23446
23447 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23448
23449         * appdomain.c: implemented InitAppDomainSetup. Delayed
23450         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
23451         the entry_assembly.
23452
23453         * assembly.c: base_dir is now an absolute path ending with
23454         G_DIR_SEPARATOR.
23455
23456         * icall.c: modified get_location according to the above changes.
23457
23458         * object.c: init AppDomain.SetupInformation for the default domain after
23459         we have the entry assembly.
23460
23461         * domain.c: when unloading a domain, setup = NULL.
23462
23463 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
23464
23465         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
23466
23467 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
23468
23469         * object.h, object.c: introduced mono_object_get_virtual_method ()
23470         to lookup the method invoked on an object when a callvirt is done on
23471         a method.
23472         * icall.c: make MethodInfo::Invoke() always do a virtual call.
23473
23474 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23475
23476         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
23477         current domain when loaded an assembly and failed to load it.
23478
23479         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
23480
23481 2002-10-31  Dick Porter  <dick@ximian.com>
23482
23483         * icall.c: 
23484         * file-io.h: 
23485         * file-io.c: Return the error status in a parameter, as the
23486         GetLastError() value has long since been blown away if we try and
23487         look it up in a subsequent internal call invocation.  Delete the
23488         GetLastError() internal call, because it's useless.
23489
23490 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
23491
23492         * class.[ch]: added cast_class to fix bug 29517
23493
23494 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
23495
23496         * marshal.c: create valid IL code in the filter clause:
23497         the new JIT is less forgiving:-)
23498
23499 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23500
23501         * icall.c: removed get_property internal call.
23502
23503 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
23504
23505         * appdomain.h domain.c: Added an ID to appdomains.
23506         
23507         * threads.c threads.h icall.c: Implement icall
23508         Thread:GetDomainID(), and remove unused icall 
23509         CurrentThreadDomain_internal.
23510
23511 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23512
23513         * icall.c: Don't recurse through the base types in GetConstructor.
23514         Fixes bug #32063. 
23515
23516 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23517
23518         * mempool.h, mempool.c: added mono_mempool_empty() and
23519         mono_mempool_stats().
23520
23521 2002-10-23  Dick Porter  <dick@ximian.com>
23522
23523         * file-io.c: 
23524         * file-io.h: 
23525         * icall.c: Added MonoIO.GetFileType internal call
23526
23527 2002-10-17  Dick Porter  <dick@ximian.com>
23528
23529         * appdomain.c (mono_runtime_cleanup): Don't signal the async
23530         delegate semaphore before waiting for all threads to finish,
23531         because new threads can also call async delegates.  Fixes bug
23532         32004.
23533
23534         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
23535         of 3 seconds, in case another async job is queued.  (This part is
23536         needed because the bug fix reintroduced the 3s exit lag.)  This
23537         makes the mono_runtime_shutdown flag superfluous.
23538
23539 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23540
23541         * reflection.c: include ehader size in method section headers.
23542         Really check for suplicated modules entries.
23543
23544 2002-10-17  Martin Baulig  <martin@gnome.org>
23545
23546         * debug-mono-symfile.c: Added back support for locals.
23547
23548 2002-10-14  Martin Baulig  <martin@gnome.org>
23549
23550         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
23551         MONO_TYPE_VOID.
23552
23553 2002-10-14  Martin Baulig  <martin@gnome.org>
23554
23555         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
23556         mono_class_get() instead of looking in the class cache. 
23557
23558 2002-10-13  Martin Baulig  <martin@gnome.org>
23559
23560         * debug-mono-symfile.c: Set version number to 28, include the
23561         signature in method names.
23562
23563 2002-10-13  Martin Baulig  <martin@gnome.org>
23564
23565         * debug-mono-symfile.h: Set version number to 27.
23566
23567 2002-10-11  Martin Baulig  <martin@gnome.org>
23568
23569         * gc.c: Don't register/unregister NULL pointers as disappearing links.
23570
23571 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23572
23573         * metadata.c, metadata.h: added helper function to allocate signatures.
23574
23575 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23576
23577         * icall.c: added internal call to get the location of machine.config.
23578
23579 2002-10-08  Martin Baulig  <martin@gnome.org>
23580
23581         * debug-mono-symfile.c: Ignore classes with a pending init for the
23582         moment.
23583
23584 2002-10-03  Dick Porter  <dick@ximian.com>
23585
23586         * threads.c: Freebsd pthread_t is a pointer
23587
23588 2002-10-03  Dick Porter  <dick@ximian.com>
23589
23590         * socket-io.c: Implemented GetHostName_internal
23591
23592 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23593
23594         * mono-config.c:
23595         (mono_config_parse_file): don't leak the text.
23596
23597 2002-10-02  Martin Baulig  <martin@gnome.org>
23598
23599         * debug-mono-symfile.c: Added support for methods.
23600
23601 2002-10-01  Martin Baulig  <martin@gnome.org>
23602
23603         * debug-mono-symfile.c: Don't emit methods and line numbers for
23604         the dynamic symbol file, just write the type table.  We can easily
23605         have an external helper program which creates a symbol file for an
23606         IL file.        
23607
23608 2002-10-01  Dick Porter  <dick@ximian.com>
23609
23610         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
23611         Only add the handle to the cleanup array when we're about to
23612         launch the thread.  Bug 31425 deadlocked when the test was run on
23613         mono under w32.
23614
23615 2002-10-01  Martin Baulig  <martin@gnome.org>
23616
23617         * debug-mono-symfile.c: Added support for properties.
23618
23619 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23620
23621         * reflection.c: unaligned store fix from Mark Crichton
23622         <crichton@gimp.org>.
23623
23624 2002-09-27  Martin Baulig  <martin@gnome.org>
23625
23626         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
23627         New interncall.
23628
23629 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23630
23631         * assembly.h, assembly.c: use a sane API to hook into the assembly
23632         loading process instead of a useless special-purpouse hack
23633         (ngen needs a hook, too, for example).
23634
23635 2002-09-27  Dick Porter  <dick@ximian.com>
23636
23637         * threads.c (mono_thread_init): Call GetCurrentProcess() so
23638         io-layer can set up some process handle info.  Not needed on w32,
23639         but doesn't hurt either.
23640
23641         * process.c: Pass the program name in the second parameter to
23642         CreateProcess, so the path is searched.  Include the working
23643         directory. Implemented process name, process enumeration, and some
23644         process detail internal calls.
23645         
23646         * icall.c: Added internal calls for process lookup, and some
23647         process details
23648
23649 2002-09-26  Martin Baulig  <martin@gnome.org>
23650
23651         * assembly.c (mono_install_open_assembly_hook): New global
23652         function to install a function to be invoked each time a new
23653         assembly is loaded.
23654         (mono_assembly_open): Run this callback function if set.
23655
23656         * debug-mono-symfile.c: Put back line numbers for the dynamic
23657         symbol file and also record the .il file as source file.  This
23658         allows us to install the temporary symbol file as `file.dbg' just
23659         like a compiler-generated one.
23660
23661 2002-09-26  Nick Zigarovich <nick@chemlab.org>
23662
23663         * Corrected typo in gc.c (BOHEM vs BOEHM).
23664
23665 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23666
23667         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
23668         GetProperties. Also avoid calling g_slist_length in GetProperties and
23669         GetMethods.
23670
23671 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23672
23673         * reflection.c: avoid unaligned stores (bug spotted by
23674         Mark Crichton  <crichton@gimp.org>).
23675
23676 2002-09-25  Martin Baulig  <martin@gnome.org>
23677
23678         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
23679         instead of guint64 for addresses and added prologue/epilogue info.
23680
23681 2002-09-25  Martin Baulig  <martin@gnome.org>
23682
23683         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
23684         store line number info.  For the dynamic symbol file, we only need
23685         to provide the JIT generated dynamic line number info for the dynamic
23686         symbol file.
23687
23688 2002-09-25  Martin Baulig  <martin@gnome.org>
23689
23690         * debug-mono-symfile.h: Incremented version number.
23691
23692 2002-09-24  Martin Baulig  <martin@gnome.org>
23693
23694         * class.c (mono_debugger_class_init_func): New global function
23695         pointer variable.
23696         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
23697         call it.
23698
23699         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
23700         function.  This is called via the mono_debugger_class_init_func
23701         hook to add all types to the dynamic type table.
23702         (ves_icall_MonoDebugger_GetType): New interncall to get a class
23703         from its metadata token.
23704
23705         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
23706         New interncall for the debugger.
23707
23708 2002-09-24  Nick Drochak <ndrochak@gol.com>
23709
23710         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
23711         before using it in case it is null.
23712         
23713 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23714
23715         * metadata.c: allow custom modifiers in local var signatures
23716         (bug spotted by Zoltan Varga).
23717
23718 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23719
23720         * class.c: deal with the <Module> class that may have a NULL vtable.
23721         Eliminate warnings.
23722
23723 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23724
23725         * image.c, image.h: more strong name helpers.
23726         * monosn.c: more work: convert pem keys to cryptoapi format.
23727
23728 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23729
23730         * string-icalls.c: speedup IndexOf.
23731
23732 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23733
23734         * icall.c: updates from Zoltan.2.Varga@nokia.com.
23735
23736 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23737
23738         * icall.c: cleanup: use mono_object_domain ().
23739
23740 2002-09-23  Martin Baulig  <martin@gnome.org>
23741
23742         * debug-mono-symfile.c: Improved type support.
23743
23744 2002-09-22  Martin Baulig  <martin@gnome.org>
23745
23746         * debug-mono-symfile.c: Added support for reference types and strings.
23747
23748 2002-09-22  Martin Baulig  <martin@gnome.org>
23749
23750         * debug-mono-symfile.c: Started to work on the type table.
23751
23752 2002-09-21  Martin Baulig  <martin@gnome.org>
23753
23754         * debug-mono-symfile.c: Largely reworked the symbol table format.
23755         The symbol table is now incrementally updated each time a new
23756         method is added.  We're now also using our own magic and version
23757         so that you don't need to recompile all your classes if the
23758         dynamic table changes.
23759         (mono_debug_update_mono_symbol_file): Removed.
23760         (mono_debug_symfile_add_method): New function to add a method.
23761
23762 2002-09-21  Martin Baulig  <martin@gnome.org>
23763
23764         * icall.c
23765         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
23766         New interncall.
23767
23768         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
23769         New interncall to get a method from its metadata token.
23770
23771 2002-09-21  Martin Baulig  <martin@gnome.org>
23772
23773         * debug-mono-symfile.c: Create type table.
23774
23775 2002-09-20  Martin Baulig  <martin@gnome.org>
23776
23777         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
23778
23779 2002-09-20  Martin Baulig  <martin@gnome.org>
23780
23781         * debug-mono-symfile.c: Provide information about params and locals.
23782
23783 2002-09-20  Martin Baulig  <martin@gnome.org>
23784
23785         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
23786         New interncall.
23787
23788         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
23789         interncall to get a method from its metadata token.
23790
23791 2002-09-20  Martin Baulig  <martin@gnome.org>
23792
23793         * debug-mono-symfile.c: Added a few checks for method->header
23794         being non-NULL.  This should never happen, but for the moment
23795         let's use a g_warning() rather than a g_assert().
23796
23797 2002-09-19  Mark Crichton  <crichton@gimp.org>
23798
23799         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
23800         even if support for it isn't present.  Added an #ifdef to fix this.
23801
23802         * socket-io.c: Added checks back for Solaris support.
23803
23804 2002-09-19  Martin Baulig  <martin@gnome.org>
23805
23806         * debug-mono-symfile.c (read_string, write_string): Reflect latest
23807         changes in the symbol file format.
23808
23809 2002-09-18  Martin Baulig  <martin@gnome.org>
23810
23811         * debug-mono-symfile.c: Set version number to 21.
23812
23813 2002-09-18  Dick Porter  <dick@ximian.com>
23814
23815         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
23816         on netbsd.  Fixes bug 30051.
23817
23818 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23819
23820         * reflection.c:
23821         (set_version_from_string): little fix.
23822
23823 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23824
23825         * monosn.c, Makefile.am: added strong name utility.
23826         * reflection.h, reflection.c: implemented delayed signing,
23827         locale, version and hash id assembly attributes.
23828
23829 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23830
23831         * loader.c, metadata.c: load param attributes in signatures.
23832
23833 2002-09-16  Martin Baulig  <martin@gnome.org>
23834
23835         * debug-mono-symfile.c: Added string table with all method names.
23836
23837 2002-09-14  Martin Baulig  <martin@gnome.org>
23838
23839         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
23840         fast method lookup.
23841
23842 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23843
23844         * reflection.c: record the public key token of referenced assemblies.
23845
23846 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23847
23848         * image.c, image.h: added functions to get the strong name and the
23849         public key of an assembly.
23850         * pedump.c: use them.
23851
23852 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
23853
23854         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
23855
23856 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
23857
23858         * marshal.c (mono_marshal_get_managed_wrapper): Added
23859         MONO_TYPE_BOOLEAN 
23860
23861 2002-09-11  Martin Baulig  <martin@gnome.org>
23862
23863         * gc.c: Call GC_unregister_disappearing_link() on all links when
23864         finalizing them, this is necessary to aviod a crash in boehm's
23865         finalize handler.
23866
23867 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23868
23869         * gc.c: handle GetTarget for finalized objects spotted and fixed by
23870         nick@chemlab.org.
23871
23872 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23873
23874         * icall.c: implemented MonoType::Module.
23875         * reflection.c, reflection.h: mono_module_get_object () from
23876         Tomi Pakarinen <tomi.pakarinen@welho.com>.
23877
23878 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23879
23880         * icall.c: ignore overridden methods in GetMethods ().
23881         Fix for FieldInfo::SetValue().
23882         * object.c: handle float/double in runtime invoke.
23883
23884 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23885
23886         * object.c: allow a constructor to be called again on an object.
23887
23888 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23889
23890         * class.h, class.c: move field layout code to it's own function and
23891         export it. Get an interface id earlier. Move fields in MonoClass
23892         so they are more cache friendly and align the bitfields.
23893         * loader.c: temporary handle get_param_names() for a runtime method.
23894         * reflection.c, reflection.h: more code to handle runtime creation of
23895         types.
23896
23897 2002-09-09  Martin Baulig  <martin@gnome.org>
23898
23899         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
23900         signature with the pinvoke field being set for the actual call.
23901
23902 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23903
23904         * icall.c: removed some unused icalls. Start of map of glib charsets
23905         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
23906
23907 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23908
23909         * debug-helpers.c: break infinite loop (found and fixed by
23910         Holger Arnold <harnold@gmx.de>).
23911
23912 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23913
23914         * icall.c: target may be null in create_delegate.
23915
23916 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23917
23918         * marshal.c: handle a boolean return type.
23919
23920 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23921
23922         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
23923
23924 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23925
23926         * gc.c: fix weakreferences.
23927
23928 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23929
23930         * icall.c: added icall to get default codepage.
23931
23932 2002-09-03  Dick Porter  <dick@ximian.com>
23933
23934         * threads.h: 
23935         * threads.c: Use MonoThread instead of MonoObject where
23936         apropriate.
23937
23938         Store running thread objects in a hash table, so that we have all
23939         the info to hand when waiting for them to finish
23940         (means we don't need OpenThread() any more, so mingw builds should
23941         be fully functional again.)
23942
23943         * verify.c:
23944         * object.h: Added thread ID to MonoThread
23945
23946 2002-09-03  Martin Baulig  <martin@gnome.org>
23947
23948         * icall.c (System.Reflection.Assembly::get_location): New interncall.
23949
23950 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23951
23952         * icall.c: fixed leak in get_temp_path. Thanks lupus.
23953
23954 2002-09-03  Martin Baulig  <martin@gnome.org>
23955
23956         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
23957         argument to store the end address of the disassembled instruction.
23958
23959         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
23960         here from debug-symfile.h.
23961         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
23962         JIT into this struct.
23963         (MonoSymbolFile): Added `char *image_file' field.
23964         (MonoDebugGetMethodFunc): Removed.
23965         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
23966         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
23967         (mono_debug_find_method): New method.
23968
23969         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
23970         create a full symbol file.
23971         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
23972         and static symbol files.
23973         (mono_debug_find_method): The symbol file keeps an internal method hash,
23974         call this to get a MonoDebugMethodInfo from a MonoMethod.
23975
23976         * debug-symfile.[ch]: Removed.
23977
23978 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
23979
23980         * image.c (do_mono_image_open): Remove linker version check.
23981
23982 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
23983
23984         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
23985         wrappers for instance methods.
23986         
23987 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23988
23989         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
23990
23991 2002-08-28  Dick Porter  <dick@ximian.com>
23992
23993         * Makefile.am: Export HOST_CC for w32 builds
23994
23995 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23996
23997         * file-io.c process.c: MonoString are null terminated, no
23998         need for mono_string_to_utf16() anymore.
23999
24000 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24001
24002         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
24003
24004 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
24005
24006         * icall.c, reflection.h: speedup System.MonoType.
24007
24008 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24009
24010         * reflection.c: allow null as the value of a string argument in
24011         custom attributes constructors.
24012
24013 2002-08-27  Martin Baulig  <martin@gnome.org>
24014
24015         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
24016         `trampoline_address' field.
24017
24018 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
24019
24020         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
24021         check (fixes bug #29486) 
24022
24023 2002-08-27  Martin Baulig  <martin@gnome.org>
24024
24025         * debug-mono-symfile.c: Changed the file format in a way that allows us
24026         open it read-only and to use a specially malloced area for all the
24027         dynamic data.  We can now also generate a symbol file on-the-fly if we're
24028         debugging IL code and there is no MCS generated symbol file for it.
24029
24030 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24031
24032         * object.c: added a define for a good string and array
24033         creation speedup (not enabled by default because we need to deal with
24034         the synch stuff).
24035
24036 2002-08-26  Martin Baulig  <martin@gnome.org>
24037
24038         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
24039         function to create a dynamic symbol file.  This is used by the
24040         debugger to create a symbol file for IL code on-the-fly.
24041
24042 2002-08-26  Martin Baulig  <martin@gnome.org>
24043
24044         * loader.c (mono_lookup_pinvoke_call): Include the error message
24045         from g_module_error() in the error message.
24046
24047 2002-08-24  Martin Baulig  <martin@gnome.org>
24048
24049         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
24050         function to update the symbol file.  The symbol file is mmap()ed
24051         writable, but private.  This allows us to install the symbol file
24052         together with the assembly.
24053
24054 2002-08-24  Martin Baulig  <martin@gnome.org>
24055
24056         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
24057         but they can read the new symbol file format which mcs is now creating.
24058
24059         * debug-symfile.c (mono_debug_find_source_location): Moved to
24060         debug-mono-symfile.c; this is now operating on the new symbol file.
24061
24062 2002-08-23  Martin Baulig  <martin@gnome.org>
24063
24064         * debug-helpers.c (mono_method_desc_from_method): New function to get
24065         a MonoMethodDesc from a MonoMethod.
24066
24067 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24068
24069         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
24070         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
24071
24072 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24073
24074         * string-icalls.[ch]: make helper methods static.
24075
24076 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24077
24078         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
24079         types to it and to SetValueInternal.
24080
24081         * object.c: Moved handle_enum label to its proper place. This was the
24082         f... bug! ;-)
24083
24084         This time i compiled mcs and gtk-sharp and they both work.
24085
24086 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24087
24088         * icall.c: reverted partially my previous patch until 
24089         object.c:set_value handles enums correcly.
24090
24091 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24092
24093         * icall.c:
24094         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
24095         (ves_icall_System_Environment_get_MachineName): removed warning when
24096         compiling under cygwin.
24097
24098 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24099
24100         * object.c: fixed field_get_value() for reference types.
24101
24102 2002-08-22  Dick Porter  <dick@ximian.com>
24103
24104         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
24105         Don't free a buffer while it's still needed.  Patch from Jonathan
24106         Liger <Jonathan.liger@wanadoo.fr>
24107
24108 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
24109
24110         * icall.c (ves_icall_System_Environment_get_Platform): Add new
24111         internal call.
24112
24113 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
24114
24115         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
24116         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
24117
24118         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
24119         we call unmanaged code which throws exceptions.
24120
24121 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24122
24123         * appdomain.h: added per-domain entry_assembly.
24124         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
24125         arguments.
24126         * icall.c: Assembly::GetEntryAssembly icall.
24127         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
24128         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
24129
24130 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24131
24132         * appdomain.h, gc.c: added mono_domain_finalize ().
24133
24134 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24135
24136         * object.c:
24137         (mono_print_unhandled_exception): changed g_warning by g_printerr
24138         because g_log has a 1024 characters limit (yeah, i got a big stack
24139         trace). Don't print exception name, that should be in ToString 
24140         returned string.
24141
24142 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24143
24144         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
24145         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
24146
24147 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24148
24149         * object.c:
24150         (mono_print_unhandled_exception): after previous commit, i realized
24151         that MS calls ToString on the exception. I changed this function to
24152         do that. This way we get stack_trace for free.
24153
24154 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24155
24156         * object.c:
24157         (mono_print_unhandled_exception): invoke Message property instead of
24158         getting 'message' field from Exception. Don't allocate memory for
24159         'trace' and 'message' if not needed.
24160
24161 2002-08-18  Dick Porter  <dick@ximian.com>
24162
24163         * unicode.c: Fix asserts to match Encoder.cs checks
24164
24165 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24166
24167         * marshal.c: fix unaligned store issue and a few wrong
24168         opcode argument types.
24169
24170 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24171
24172         * icall.c: added GetUninitializedObjectInternal internal call.
24173
24174 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
24175
24176         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
24177         to the right domain.
24178
24179 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
24180
24181         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
24182
24183         * class.c (class_compute_field_layout): set blittable to false for Strings
24184
24185         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
24186
24187 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24188
24189         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
24190         first chunk of code to create types at runtime. Code to
24191         handle ReflectedType/DeclaringType. Make reflection handles
24192         domain specific.
24193
24194 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24195
24196         * class.c: set correct name in arrays.
24197
24198 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
24199
24200         * appdomain.c (mono_domain_transfer_object): make it work with
24201         valuetypes. bug fixes.
24202
24203 2002-08-12  Dick Porter  <dick@ximian.com>
24204
24205         * object.h: Rename some parameters to avoid c++ keywords (Patch
24206         from Joseph Wenninger <kde@jowenn.at>)
24207
24208 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
24209
24210         * icall.c: added icall to implement Assembly.GetFile*.
24211
24212 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24213
24214         * reflection.h, reflection.c: code to embed managed resources.
24215
24216 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24217
24218         * class.c: move all the type size stuff into
24219         class_compute_field_layout().
24220
24221 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24222
24223         * class.c: ensure enums have always the correct instance size.
24224         * unicode.c: remove wrong assert.
24225
24226 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24227
24228         * assembly.c: fix mem corruption issue.
24229         * image.h, image.c: added mono_image_get_resource () to access
24230         managed resources.
24231         * icall.c: implemented Assembly.EntryPoint property and some
24232         Managed Resources related internalcalls.
24233
24234
24235 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24236
24237         * image.c, image.h: impemented mono_image_get_entry_point ().
24238         * appdomain.c: use mono_image_get_entry_point.
24239
24240 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24241
24242         * reflection.c: support the object type argument when loading
24243         custom attributes.
24244
24245 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
24246
24247         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
24248         String as return type.
24249
24250 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
24251
24252         * reflection.c: fix encoding of named args for custom attrs to match
24253         the ms implementation. Read them back when instantiating custom
24254         attributes.
24255
24256 2002-08-02  Radek Doulik  <rodo@ximian.com>
24257
24258         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
24259         by Dietmar as quick fix
24260         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
24261         16 as stack size, used on more places as quick fix before Dietmar
24262         will fix it properly
24263
24264 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24265
24266         * object.h, object.c: added accessors for fields and properties.
24267
24268 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24269
24270         * class.c, class.h: made mono_class_get_field_from_name ()
24271         loop on parent types.
24272         Added mono_class_get_property_from_name ().
24273
24274 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24275
24276         * class.c, class.h: move the code to setup the type vtable in its own
24277         function so that it can be reused also for types created at runtime.
24278         Eliminate the "class" identifier from the header file.
24279         * reflection.c: setup the vtable for enums so that we can create
24280         objects for use in SetConstant ().
24281
24282 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
24283
24284         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
24285         instead of the delegate itself as this pointer (bug #28383)
24286
24287 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
24288
24289         * marshal.c (mono_marshal_get_managed_wrapper): added return type
24290         conversions.
24291
24292 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24293
24294         * loader.c: don't set the pinvoke bit on icalls.
24295
24296 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
24297
24298         * debug-helpers.c (mono_method_full_name): only print a number to
24299         indicate wrapper type (so that the output is more readable in traces).
24300
24301 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
24302
24303         * class.c (mono_class_init): include method override patch from Paolo
24304
24305 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
24306
24307         * icall.c: fixed GetTypeCode().
24308
24309 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
24310
24311         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
24312         use real delegate invoke function to make it work with multicast
24313         delegates (fix bug# 28291).
24314
24315 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24316
24317         * object.c: load constant strings.
24318
24319 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24320
24321         * reflection.c: no magic numbers.
24322         * tabledefs.h: security action enum.
24323
24324 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24325
24326         * assembly.c: fix possible memory corruption.
24327
24328 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24329
24330         * reflection.h, reflection.c: added support for linking resources.
24331         * verify.c: check we have an updated corlib.
24332
24333 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
24334
24335         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
24336         string arrays.
24337         (mono_marshal_string_array): null terminate unmanaged string arrays.
24338         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
24339
24340 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24341
24342         * icall.c: Type.GetType () can now return also types from the
24343         calling assembly.
24344
24345 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24346
24347         * loader.h, loader.c: stack walking support.
24348         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
24349         GetCallingAssembly.
24350
24351 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
24352
24353         * marshal.c: added optimisations for blittable types 
24354
24355         * class.c (mono_array_class_get): do not set blittable attribute on arrays
24356         (mono_class_setup_mono_type): set blittable attribute for single
24357         and double.
24358
24359         * marshal.c (mono_string_utf8_to_builder): impl.
24360         (mono_string_builder_to_utf8): impl.
24361         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
24362
24363 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
24364
24365         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
24366         (mono_marshal_get_managed_wrapper): impl. byref types
24367
24368 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24369
24370         * icall.c:
24371         (search_method): don't display debug message. 
24372
24373 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24374
24375         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
24376
24377 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24378
24379         * appdomain.c: set the missing filename when throwing exception.
24380
24381 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24382
24383         * metadata.c (mono_type_size): code cleanup
24384         (mono_type_stack_size): removed some test code
24385
24386 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
24387
24388         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
24389         mono_get_exception_file_not_found now.
24390
24391         * exception.c (mono_exception_from_name_two_strings): New version
24392         that will call a constructor with two string arguments. 
24393         (mono_get_exception_file_not_found): New helper routine, used to
24394         report file-not-found errors.
24395
24396 2002-07-20  Dick Porter  <dick@ximian.com>
24397
24398         * process.h:
24399         * process.c: Pass file handles to CreateProcess
24400         
24401         * icall.c:
24402         * file-io.h:
24403         * file-io.c: Implemented CreatePipe
24404
24405 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24406
24407         * metadata.c (mono_get_param_info): set alignment for value types
24408
24409 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24410
24411         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
24412         Constify mono_domain_assembly_open().
24413         * loader.c: handle null namespace in icalls.
24414
24415 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24416
24417         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
24418         (emit_str_to_ptr_conv): marshal object as structs
24419
24420         * metadata.c (mono_type_to_unmanaged): marshal object as structs
24421
24422         * marshal.c (mono_marshal_get_runtime_invoke): support value types
24423
24424 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
24425
24426         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
24427         (mono_marshal_get_native_wrapper): we an now return value types
24428
24429 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24430
24431         * verify.c: more checks implemented.
24432
24433 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
24434
24435         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
24436         (fix bug #27695)
24437         (mono_marshal_get_native_wrapper): allow byref arguments
24438         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
24439         impl. PtrToStringXXX methods
24440         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
24441         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
24442         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
24443         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
24444         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
24445
24446 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24447
24448         * reflection.c: fix buglet in parsing an assembly name.
24449
24450 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24451
24452         * marshal.c (emit_ptr_to_str_conv): first impl.
24453
24454 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24455
24456         * object.c, class.h: cache the vtable in the class as suggested by
24457         vargaz@freemail.hu (Zoltan Varga).
24458
24459 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24460
24461         * class.h, loader.c: added mono_field_from_token().
24462         * verify.c: first cut of type checking code.
24463
24464 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24465
24466         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
24467
24468 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
24469
24470         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
24471         (fix bug #27782)
24472         (mono_marshal_get_remoting_invoke): impl.
24473         (mono_delegate_begin_invoke): impl.
24474         (mono_mb_emit_save_args): impl.
24475         (mono_delegate_end_invoke): impl.
24476         (mono_marshal_get_delegate_begin_invoke):
24477         (mono_marshal_get_delegate_end_invoke):
24478         (mono_marshal_get_delegate_invoke): generate a special name for
24479         those methods (including the signature) and associate them whith
24480         the delegate class. 
24481
24482 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
24483
24484         * reflection.[ch]: 
24485         (mono_reflection_type_from_name): now it has a MonoImage parameter
24486         which is used as the default image to search the type in. If the image
24487         is NULL or getting the type from it fails, it defaults to corlib.
24488
24489         * icall.c: changed 1 call to mono_reflection_type_from_name to match
24490         new parameter.
24491
24492 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24493
24494         * reflection.c: update the parameter table index.
24495
24496 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24497
24498         * domain.c: don't include the mark byte in the string hash.
24499
24500 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24501
24502         * icall.cs: icall for Type.GetTypeCode ().
24503         * verify: a couple of fixes and disabled local initialization checks.
24504
24505 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
24506
24507         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
24508
24509         * debug-helpers.c (mono_method_full_name): print the type of the
24510         runtime wrapper
24511
24512         * metadata.c (mono_signature_hash): a hash function for signatures
24513         (mono_signature_hash): better hash algorithm
24514
24515         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
24516
24517         * debug-helpers.c (mono_method_full_name): this can now generate
24518         method names with signatures
24519
24520         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
24521         method dont have this pointers.
24522
24523 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24524
24525         * reflection.c: fixup typebuilder tokens.
24526         * image.c: fix buglet.
24527         * marshal.h: remove whitespace.
24528         * metadata.h, metadata.c: reinstate code that was removed.
24529         * verify.c: handle catch directives and fix another couple of bugs.
24530
24531 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
24532
24533         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
24534         (mono_marshal_get_native_wrapper): make it comp. with the old code
24535         (mono_marshal_get_native_wrapper): support boolean
24536         (mono_marshal_get_managed_wrapper): support more types
24537
24538 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
24539
24540         * class.c (class_compute_field_layout): compute class->blittable attribute.
24541
24542 2002-07-09  Dick Porter  <dick@ximian.com>
24543
24544         * threads.c: Make the thread cleaning up cope with threads that
24545         call ExitThread()
24546
24547 2002-07-08  Radek Doulik  <rodo@ximian.com>
24548
24549         * reflection.c (method_encode_code): use non-translated values to
24550         compute finally_start, this fixes exception handling on ppc, yay!
24551
24552         * decimal.h (struct signscale): fix endianess
24553
24554 2002-07-07  Radek Doulik  <rodo@ximian.com>
24555
24556         * reflection.c: swap box_val and not val
24557
24558 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24559
24560         * reflection.c, reflection.h: handle full assembly info in type name.
24561         Handle Type arguments when loading custom attributes.
24562         * icall.c: updated to use new mono_reflection_type_from_name () method.
24563
24564 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24565
24566         * loader.c:
24567         (method_from_memberref): also print assembly name when method not found.
24568
24569 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24570
24571         * icall.c:
24572         (ves_icall_TypeGetProperties): fixed bug #27473. 
24573
24574 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24575
24576         * reflection.c: display image name and token when cannot find the
24577         .ctor for an attribute.
24578
24579 2002-07-05  Martin Baulig  <martin@gnome.org>
24580
24581         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24582
24583 2002-07-04  Dick Porter  <dick@ximian.com>
24584
24585         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
24586         compile on mingw.  This will cause mingw builds to not wait for
24587         subthreads to terminate after the main thread does.  I've lodged a
24588         bug with the mingw developers for them to wrap OpenThread().
24589
24590 2002-07-03  Dick Porter  <dick@ximian.com>
24591
24592         * threads.c: Store thread IDs instead of handles, because
24593         GetCurrentThread() returns a pseudohandle and therefore stores
24594         useless values.  mono_thread_cleanup() continues checking the
24595         array of threads until it is empty, to cope with subthreads
24596         spawning new threads after the main thread has finished.
24597
24598         * profiler.h:
24599         * profiler.c:
24600         * profiler-private.h: Pass the thread ID to thread profiler
24601         functions, instead of a handle
24602
24603 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24604
24605         * verify.c: fixes to make it more usable.
24606         * pedump.c: added --verify code to verify IL code in an assembly.
24607
24608 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24609
24610         * reflection.c: turn errors into warnings to allow compiling corlib.
24611
24612 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24613
24614         * reflection.c: add special cases to compile corlib.
24615
24616 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24617
24618         * reflection.c: handle properties with only a set method.
24619
24620 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24621
24622         * opcodes.h: add enum with opcodes in opval order.
24623
24624 2002-07-01  Dick Porter  <dick@ximian.com>
24625         
24626         * object.h:
24627         * object.c (mono_runtime_run_main): Removed unneeded argument
24628
24629 2002-06-28  Martin Baulig  <martin@gnome.org>
24630
24631         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24632
24633 2002-06-27  Dick Porter  <dick@ximian.com>
24634
24635         * threads.c: Store the handle in both the parent thread and in the
24636         subthread, to minimise the time between starting a new thread and
24637         storing its ID.
24638
24639 2002-06-26  Dick Porter  <dick@ximian.com>
24640
24641         * appdomain.c (mono_runtime_cleanup): Close the socket library
24642         after all the threads have finished, not before
24643
24644 2002-06-26  Martin Baulig  <martin@gnome.org>
24645
24646         * debug-symfile.c (mono_debug_find_source_location): Added
24647         `guint32 *line_number' argument.  If it's not NULL, store the line number
24648         there and return the file name without the line number.
24649
24650 2002-06-25  Dick Porter  <dick@ximian.com>
24651
24652         * icall.c:
24653         * process.h:
24654         * process.c: Process forking and other support functions
24655
24656 2002-06-25  Dick Porter  <dick@ximian.com>
24657
24658         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
24659         things dont happen when the image is closed.
24660         (mono_image_lookup_resource): Walk the resource section looking
24661         for a particular entry
24662
24663         * cil-coff.h: PE resource section decoding
24664
24665 2002-06-25  Dick Porter  <dick@ximian.com>
24666         
24667         * assembly.h:
24668         * assembly.c: 
24669         (mono_assembly_foreach): Accessor functions to walk the list of
24670         loaded assemblies
24671         (mono_assembly_set_main):
24672         (mono_assembly_get_main): Process methods need to know which
24673         assembly is the "main" one
24674
24675         * object.c (mono_runtime_run_main): Record the main assembly
24676
24677         * debug-helpers.c: Fix typo
24678
24679 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
24680
24681         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
24682         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
24683
24684 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24685
24686         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
24687
24688 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
24689
24690         * image.c (do_mono_image_open): Initialize reference count,
24691         otherwise we leak the MonoImage.
24692
24693 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24694
24695         * reflection.c: small tweak to handle self-hosting.
24696
24697 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24698
24699         * reflection.c: fix type name parse code.
24700
24701 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24702
24703         * reflection.c: break out of the loop.
24704         * image.c: special case corlib.
24705
24706 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24707
24708         * reflection.c: add all the custom attrs at the end to ensure the
24709         ctors have been properly initialized when the attributes are defined
24710         in the current assembly.
24711
24712 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24713
24714         * reflection.c: handle correctly multiple-nested types.
24715
24716 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24717
24718         * row-indexes.h: fix typos.
24719         * reflection.c: adjust for typos and fix method_def_or_ref
24720         encoding in MethodImpl table.
24721
24722 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24723
24724         * reflection.c: fix entry point patching (thanks Serge!).
24725
24726 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
24727
24728         * verify.c: add check for System.Exception
24729
24730 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24731
24732         * image.c, class.c: minifix for code just c&p'ed.
24733         * reflection.c: warning fix.
24734         * object.h, loader.h, domain.c: load also StringBuilder.
24735
24736 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24737
24738         * marshal.h, marshal.c: some support code to handle complex marshaling.
24739
24740 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24741
24742         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
24743         Better signatures with vtable error dump.
24744
24745 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
24746
24747         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
24748
24749 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
24750
24751         * icall.c (ves_icall_Type_GetField): impl.
24752
24753 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24754
24755         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
24756         to retrieve a marshal description blob for a field or param.
24757
24758 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24759
24760         * reflection.h, reflection.c: change order of nested type emission
24761         to avoid table corruption. The NestedTypes table is sorted.
24762         * icall.c: change order of GetConstructor results to workaround mcs bug.
24763
24764 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24765
24766         * reflection.h, reflection.c: handle field and param marshal
24767         information.
24768
24769 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24770
24771         * icall.c, marshal.c marshal.h: more Marshal class implementation.
24772
24773 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24774
24775         * reflection.c: fix call convention.
24776
24777 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24778
24779         * reflection.h, reflection.c: mono_image_get_memberref_token()
24780         takes a type instead of a class, now. Added
24781         mono_image_get_array_token() to create tokens for the special
24782         multi-dim array methods.
24783
24784 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24785
24786         * assembly.c: handle modules (no assembly table). Split
24787         loading references in its own function.
24788         * class.c: handle moduleref resolution scope.
24789         * image.c, image.h: cache module name in image.
24790
24791 2002-06-07  Martin Baulig  <martin@gnome.org>
24792
24793         * reflection.c (mono_image_get_type_info): Only add a class layout entry
24794         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
24795
24796 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24797
24798         * icall.c: more signature fixes that used uint instead of int.
24799
24800 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24801
24802         * reflection.c: fixed signature of field refs.
24803
24804 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24805
24806         * class.c, reflection.c: handle typerefs of nested types
24807         (both on read and when writing files).
24808
24809 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24810
24811         * icall.c: fix method signatures that tried to workaround the previous
24812         typo, d'oh!
24813
24814 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24815
24816         * debug-helpers.c: fix typo.
24817
24818 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24819
24820         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
24821         rewrote the PE/COFF writing code (our programs are understood by the
24822         ms runtime, now).
24823
24824 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24825
24826         * gc.c, gc.h, icall.c: weakreference support.
24827
24828 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24829
24830         * Makefile.am, mono-config.c: use $(sysconfdir).
24831
24832 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24833
24834         * icall.c: changed default precision of Double.ToString() to 15.
24835         Fixed memory leak. Unified with Single.ToString.
24836
24837 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24838
24839         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
24840
24841 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24842
24843         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
24844         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
24845         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
24846         and myself.
24847
24848 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24849
24850         * debug-symfile.c, sysmath.c: yet more compilation fixes.
24851
24852 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24853
24854         * reflection.c, socket-io.c: more compilation fixes.
24855
24856 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24857
24858         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
24859         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
24860         unicode.c: warning and compiler compatibility fixes.
24861
24862 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24863
24864         * class.h, metadata.c: fixed warnings/compilation errors.
24865
24866 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24867
24868         * Makefile.am, mono-config.c, mono-config.h: configuration file
24869         support routines.
24870         * loader.c, loader.h: make Dll mapping configurable at runtime in the
24871         config file. Export methods to insert and lookup mappings.
24872
24873 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24874
24875         * reflection.c: handle types and boxed objects in custom attr
24876         constructors.
24877
24878 2002-05-30  Martin Baulig  <martin@gnome.org>
24879
24880         * debug-symfile.c
24881         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
24882
24883 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
24884
24885         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
24886         to lookup the implmap row for a P/Invoke method.
24887         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
24888         P/Invoke method from the runtime on an as needed basis.
24889
24890 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
24891
24892         * metadata.c (mono_metadata_parse_signature): impl.
24893
24894 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24895
24896         * class.c: handle .pack directive.
24897
24898 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24899
24900         * object.c: initialize static fields with RVA data.
24901
24902 2002-05-25  Martin Baulig  <martin@gnome.org>
24903
24904         * debug-symfile.c
24905         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
24906
24907 2002-05-24  Martin Baulig  <martin@gnome.org>
24908
24909         * debug-symfile.c
24910         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
24911         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
24912         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
24913
24914 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24915
24916         * object.c: special case string ctros in invoke.
24917         * gc.c: silly whitespace changes.
24918
24919 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
24920
24921         * threadpool.[ch]: impl. a threadpool that can
24922         be used by mint and mono.
24923
24924 2002-05-22  Martin Baulig  <martin@gnome.org>
24925
24926         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
24927         The first argument is now a `MonoReflectionModuleBuilder *', the return
24928         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
24929         `methods' field to get the method builder.  The `token' argument is the
24930         unfixed token.
24931
24932         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
24933         invalid characters instead of g_assert_not_reached()ing.  This seems
24934         to be the behaviour of mscorlib.
24935
24936 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
24937
24938         * object.c (mono_runtime_invoke_array): applied patch from Rachel
24939         Hestilow to fix bug #25104
24940
24941 2002-05-21  Martin Baulig  <martin@gnome.org>
24942
24943         * debug-symfile.c (mono_debug_find_source_location): New function.
24944         Looks up an IL offset in the line number table and returns the source
24945         location as a string.
24946
24947 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24948
24949         * icall.c:
24950         (mono_double_ToStringImpl): changed %f by %g until we have something
24951         better.
24952
24953 2002-05-21  Nick Drochak  <ndrochak@gol.com>
24954
24955         * icall.c : Use different name for Math.Pow's icall.  Needed to check
24956         parameters first in C#.
24957
24958 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24959
24960         * icall.c, reflection.h: added icall to get info about an event.
24961
24962 2002-05-20  Radek Doulik  <rodo@ximian.com>
24963
24964         * object.c (mono_value_box): don't use memcpy for boxing on BIG
24965         endian
24966         (mono_value_box): don't use memcpy for small sizes on
24967         architectures with unaligned access
24968
24969 2002-05-20  Martin Baulig  <martin@gnome.org>
24970
24971         * reflection.c (mono_reflection_setup_internal_class): Don't crash
24972         if `tb->parent == NULL'.
24973         (mono_reflection_create_internal_class): New function.  This is
24974         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
24975         for enum types.
24976
24977         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
24978         New interncall.
24979
24980 2002-05-19  Martin Baulig  <martin@gnome.org>
24981
24982         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
24983         argument to get the length, don't default to the array length.
24984
24985 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
24986
24987         * assembly.c (mono_assembly_setrootdir): New function used to
24988         override the MONO_ASSEMBLIES directory.
24989
24990 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24991
24992         * icall.c: ValueType_GetHashCode() initialize local var.
24993
24994 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24995
24996         * reflection.c: sort custom attributes table.
24997
24998 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24999
25000         * reflection.c: support named args in custom attributes (write support).
25001
25002 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
25003
25004         * reflection.c: fix finally position calculation.
25005
25006 2002-05-15  Radek Doulik  <rodo@ximian.com>
25007
25008         * reflection.c: fixed endianess at many places
25009
25010         * icall.c (ves_icall_InitializeArray): comment out debug msg
25011
25012 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
25013
25014         * object.c (mono_unhandled_exception): new function to handle
25015         unhandled exceptions.
25016         (mono_unhandled_exception): call the UnhandledException event.
25017         (mono_runtime_delegate_invoke): impl.
25018
25019 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
25020
25021         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
25022         returns the RVA, not the direct pointer to the data. Handle the case
25023         when the class size is fixed.
25024
25025 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25026
25027         * reflection.c: fix some endianess issues.
25028
25029 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
25030
25031         * object.c (mono_runtime_invoke): is now able to catch exceptions.
25032
25033         * threads.c (mono_thread_init): added a callback which is invoked
25034         at thread start.
25035
25036 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25037         
25038         * icall.c: make GetHashCode return non-negative values.
25039
25040 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25041
25042         * object.c, icall.c, gc.c: revert to address-based hashcode.
25043
25044 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
25045
25046         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
25047
25048 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25049
25050         * icall.c, class.c: special case <Module>.
25051
25052 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
25053
25054         * icall.c: fix bug in GetNow().
25055
25056 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
25057
25058         * object.c (mono_runtime_class_init): make sure that we call all
25059         static class constructors.
25060
25061 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25062
25063         * reflection.c: sort methodsemantics table.
25064
25065 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25066
25067         * reflection.h, reflection.c: honour init locals setting.
25068
25069 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
25070
25071         * icall.c: copied Double ToStringImpl for Single ToStringImpl
25072
25073 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25074
25075         * reflection.c: support ContructorBuilders in attribute blob creation.
25076
25077 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25078
25079         * reflection.c: some changes to build a binary that can be run
25080         directly in windows.
25081
25082 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25083
25084         * loader.c: print a big message when an icall can't be found.
25085
25086 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25087
25088         * string-icalls.c: fix bug 24248.
25089
25090 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
25091
25092         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
25093         icall.c, reflection.h: separate assembly loading by pathname and by
25094         assembly name. Use the MONO_PATH env var to search for assemblies.
25095
25096 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25097
25098         * assembly.c, image.h: add some support for assemblies
25099         with multiple modules.
25100         * class.c, class.h: export mono_class_from_typeref().
25101         * loader.c: remove duplicated code and use mono_class_from_typeref(),
25102         instead.
25103
25104 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25105
25106         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
25107         documentation says (the ECMA one is correct).
25108
25109 2002-05-02  Dick Porter  <dick@ximian.com>
25110
25111         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
25112         Don't name the synchronisation mutex.
25113
25114 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
25115
25116         * rand.c
25117         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
25118         Make the prototypes match.
25119         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
25120         Same.
25121
25122         * icall.c
25123         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
25124         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
25125         all systems have tm.tm_zone, so use strftime() with %Z to print
25126         the timezone abreviation into a temp string.
25127
25128         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
25129         rather than mono_array_addr() on a MonoString on Big Endian
25130         machines.
25131
25132 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
25133
25134         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
25135         fix bug 24041
25136
25137 2002-04-30  Dick Porter  <dick@ximian.com>
25138
25139         * socket-io.c: Cope with SOCKET being an integer rather than a
25140         pointer now.
25141
25142         * threads.c: Added Thread_free_internal, to deal with thread
25143         handle cleanup.  Moved calls to handle_store() and handle_remove()
25144         to start_wrapper(), so each can only be called once.  Allocate
25145         synchronisation blocks with GC_malloc(), and use GC finalisation
25146         to close the handles.
25147
25148         * icall.c: added System.Threading.Thread::Thread_free_internal
25149
25150 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25151
25152         * icall.c: support Environment.Exit, CommandLineArgs().
25153
25154 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25155
25156         * object.c, object.h: added mono_runtime_run_main () and
25157         mono_runtime_get_main_args () for use in System.Environment.
25158
25159 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25160
25161         * gc.c: fix thinko, enable actual finalization since the jit is now
25162         fixed.
25163
25164 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25165
25166         * gc.c, object.c: take into account that an object may be offset wrt the address
25167         returned by GC_malloc().
25168
25169 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
25170
25171         * image.c: handle files without entries in the assembly table (modules).
25172
25173 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
25174
25175         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
25176         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
25177         allowed to be null when it's System.Object class setup.
25178
25179 2002-04-27  Martin Baulig  <martin@gnome.org>
25180
25181         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
25182         if `tb->parent == NULL' rather than crashing.
25183
25184 2002-04-28  Nick Drochak  <ndrochak@gol.com>
25185
25186         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
25187         calling acos() where asin() should have been called.
25188
25189 2002-04-26  Martin Baulig  <martin@gnome.org>
25190
25191         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
25192         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
25193         there's a subdirectory called `System', but we don't want to read that
25194         subdirectory as an assembly.
25195
25196 2002-04-25  Martin Baulig  <martin@gnome.org>
25197
25198         * debug-symfile.c: Reflect latest MonoString changes.
25199
25200 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25201
25202         * rand.c, rand.h: instance method icalls need to have an explicit
25203         this pointer as first argument in the C implementation.
25204
25205 2002-04-25  Nick Drochak <ndrochak@gol.com>
25206
25207         * icall.c: Fix typo in map for GetNonZeroBytes
25208
25209 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25210
25211         * string-icalls.c : String does now passes unit tests without any 
25212         errors, the following changes has been made:
25213         
25214         Implemented replace methods.
25215         Renaming of methods to (try) follow the standard.
25216         Fixed compare ordinal
25217         Made all memory allocated directly to function instead of via icall function.
25218         Small performance fix in is_in_array function
25219                         
25220  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
25221
25222         c (mono_string_Internal_ctor_charp_int_int):
25223         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
25224         sindex < 0, throw ArgumentOutOfRangeException instead of
25225         ArgumentNullException.
25226
25227         Added new check for length == 0, however
25228         I need to make it return String.Empty from the C code.
25229         
25230         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
25231         that calculate the length for us here.
25232         
25233         (mono_string_Internal_ctor_sbytep_int_int): Replaced
25234         mono_string_new_utf16 with mono_string_new, since value is utf8.
25235
25236 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25237
25238         * object.c: register the object for finalization if needed.
25239         Allocate one more char in the string for the terminating 0 char.
25240
25241 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25242
25243         * class.c, class.h, image.c: check if a type implemenst a destructor.
25244         Use the proper key for array class lookups.
25245         * icall.c: register the icalls in the System.GC class.
25246         * gc.c, gc.h: GC-related functions and icalls.
25247
25248 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25249
25250         * icall.c:
25251         * socket-io.c:
25252         * unicode.c: free some strings gotten from mono_string_to_utf8 and
25253         changed a couple of free () by g_free ().
25254
25255         * decimal.c: one-liner in the comments for decimal2string ().
25256
25257 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25258
25259         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
25260
25261 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25262
25263         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
25264         * object.c (mono_runtime_invoke_array) : handle null in params
25265
25266 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25267
25268         * string-icalls.c: fixed bug in split (one off bug)
25269
25270 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25271
25272         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
25273         * icalls.c: added String::Equals as internal method
25274
25275 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25276
25277         * threads.c: fixed bug in the double interlocked functions
25278
25279 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
25280
25281         * threads.c: implemented all of the new interlocked icalls.
25282         * string-icalls.c: fix a bug in insert.
25283         * icalls.c: added the icalls for interlocked, removed old string functions.
25284         
25285 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25286
25287         * loader.c: fix off-by-one error when reading argument names.
25288
25289 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25290
25291         * profiler.c: win32 counter implementation (untested).
25292         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
25293         (the latter needs testing and more complete impl. from win32 folks).
25294
25295 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
25296
25297         * object.c: mono_array_new_full workaround mono_array_class_get
25298         problem.
25299
25300 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25301
25302         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
25303         * object.h (mono_string_chars): Changed casting type.
25304
25305 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25306
25307         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
25308                            method signatures to use gunichar2 instead of gint16.
25309
25310 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
25311
25312         * object.h, object.c: domain-specific versions of mono_object_new and
25313         mono_array_new.
25314
25315 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
25316
25317         * object.c: changed String layout
25318
25319         * string-icalls.c (mono_string_Internal_ctor_chara): added
25320         internal string constructors.
25321
25322 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
25323
25324         * threads.c: pass 'this' to the thread start routine.
25325
25326 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25327
25328         * string-icalls.c: fix IndexOf and LastIndexOf. Now
25329         InternalCompareStr don't call twice mono_string_cmp_char for the last
25330         character. Improved performance in mono_string_cmp_char.
25331
25332 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25333
25334         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
25335         code into its own library: libmonoruntime.
25336
25337 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
25338
25339         * object.h, object.c: changed array format so that szarrays do not
25340         require a bounds structure.
25341         * icall.c, appdomain.c: support for new szarray format.
25342
25343 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25344
25345         * metadata.c: compare also the retuns type when comparing signatures:
25346         we didn't do this as an optimization since really overloaded methods
25347         must differ also in the arguments, but this doesn't work with
25348         low-level IL code (or when using explicit conversion operators: see
25349         bug#23498 for an example).
25350
25351 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25352
25353         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
25354
25355 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25356
25357         * icall.c: make MonoType::GetElementType its own icall.
25358
25359 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25360
25361         * icall.c: remove MonoMethod_get_Name().
25362         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
25363         object.
25364
25365 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25366
25367         * string-icalls.c: optimized a few methods.
25368
25369 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25370
25371         * icall.c: added all new string internal calls
25372         * string-icalls.c: added, new string internal call implementation.
25373         * object.c: added mono_string_new_size for allocating a string a size
25374
25375 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
25376
25377         * object.c (mono_object_isinst): use the same code as in the
25378         optimized x86 version.
25379
25380 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25381
25382         * profiler.c: TSC-based timer code (faster and more accurate).
25383         Not hooked up in configure, yet (set USE_X86TSC to 1).
25384
25385 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
25386
25387         * profiler.c, profiler.h: track time spent compiling methods.
25388         * threads.c: track thread creation/destruction.
25389
25390 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
25391
25392         * profiler.c, profiler.h, profiler-private.h: profiling interface
25393         and sample implementation. Moved here so that it can be used also by
25394         the jit.
25395
25396 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
25397
25398         * reflection.c, reflection.h: keep types and other handles separate in
25399         the hash tables for referred tokens. Add guid for modules.
25400
25401 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
25402
25403         * assembly.c: fix bugs found with valgrind.
25404         * metadata.h, metadata.c: added mono_metadata_guid_heap().
25405
25406 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
25407
25408         * threads: added icall support for getting current domain for
25409                    the thread.
25410  
25411 2002-04-13  Martin Baulig  <martin@gnome.org>
25412
25413         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
25414         (MonoDebugVarInfo): Added `index' field for register based addresses.
25415         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
25416         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
25417         `MonoDebugVarInfo *params' and `guint32 this_offset' with
25418         `MonoDebugVarInfo *this_var'.
25419
25420         * debug-symfile.c (relocate_variable): New static function to write
25421         a location description for a local variable or method parameter.
25422
25423 2002-04-12  Martin Baulig  <martin@gnome.org>
25424
25425         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
25426         stack offset and begin/end scope address of a local variable.
25427         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
25428         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
25429         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
25430
25431         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
25432         Added new relocation types for start/end scope of a local variable.
25433
25434 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25435
25436         * object.h: add mono_object_domain() macro.
25437         * reflection.c: handle typespecs.
25438         * icall.c: MonoMethod::get_Name() implementation.
25439
25440 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25441
25442         * icall.c: String::GetHashCode() icall implementation.
25443
25444 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25445
25446         * icall.c: String::IndexOfAny icall.
25447         * object.c, object.h: make array->max_length more useful.
25448         Intrduced mono_object_class() and mono_string_length() macros.
25449
25450 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25451
25452         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
25453         instead of g_unichar_isdigit.
25454
25455 2002-04-11  Nick Drochak  <ndrochak@gol.com>
25456
25457         * icall.c: Implement a simple Double.ToString().
25458
25459 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25460
25461         * appdomain.h: only io-layer.h is supposed to be included.
25462         * icall.c: explicitly import environ. Fix warning.
25463
25464 2002-04-10  Nick Drochak  <ndrochak@gol.com>
25465
25466         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
25467                 return true even if it's not Daylight Savings time.
25468                 Only return false for the case where the function isn't
25469                 implemented for a plaform (read Windows).
25470
25471 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25472
25473         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
25474         data with a mutex.
25475
25476 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
25477
25478         * mempool.c (mono_mempool_alloc): only use g_malloc when
25479         absolutely necessary.
25480
25481 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25482
25483         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
25484
25485         * class.c (mono_class_vtable): use domain mempool to allocate vtable
25486         (mono_class_proxy_vtable): use domain mempool
25487
25488 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25489
25490         * appdomain.h, appdomain.c: split initialization that requires the
25491         execution engine support into mono_runtime_init().
25492
25493 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25494
25495         * class.c (mono_class_init): don't include vtable inside MonoClass
25496         to save some memory, gather some statistics.
25497         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
25498
25499 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25500
25501         * icall.c: internalcall implementation for ValueType.Equals().
25502
25503 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
25504
25505         * object.c (mono_message_init): moved 
25506         (mono_runtime_exec_main): new arch. independent impl.
25507         (mono_runtime_invoke_array): new method - like
25508         mono_runtime_invoke, but you can pass an array of objects.
25509         (mono_remoting_invoke): new arch. independent impl.
25510         (mono_message_invoke): new arch. independent impl.
25511         (mono_runtime_class_init): new arch. independent impl.
25512         (mono_runtime_object_init): new arch. independent impl.
25513
25514 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25515
25516         * metadata.c, object.c, reflection.c: documented the exported
25517         functions.
25518
25519 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
25520
25521         * icall.c: simpler code to pass the assembly builder data to corlib.
25522         Implement GetNestedTypes() internalcall.
25523
25524 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25525
25526         * class.c: warn if a type can't be loaded.
25527
25528 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
25529
25530         * image.h: typedef MonoImageOpenStatus
25531         * types.h: removed unused file
25532         
25533 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
25534
25535         * icall.c: Enum_ToObject accepts enum value arguments.
25536
25537 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25538
25539         * class.c: move initialization of properties, events and nested
25540         classes, so that they happen for interfaces, too.
25541
25542 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25543
25544         * icall.c: cleanup some ugly casts in Array_SetValue*.
25545
25546 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25547
25548         * icall.c: the values array fro enums is of the correct type, now.
25549         Implement (correctly) getFullName instead of assQualifiedName for
25550         MonoType.
25551         * reflection.h, reflection.c: added mono_type_get_name ().
25552
25553 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25554
25555         * assembly.c, image.h: for each MonoImage, record from wich assembly
25556         it was loaded.
25557         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
25558         Make Type.Assembly work.
25559
25560 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
25561
25562         * debug-symfile.h: use char* instead of gpointer to avoid
25563         unnecessary casts.
25564
25565         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
25566
25567         * icall.c (ves_icall_InternalExecute): impl. FielSetter
25568         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
25569
25570 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
25571
25572         * icall.c (mono_message_init): impl. (code cleanup)
25573         (ves_icall_InternalExecute): impl. FieldGetter
25574
25575         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
25576         defined we call all (non-static)methods through the vtable. 
25577
25578 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
25579
25580         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
25581         finalizer even though the memory is still referenced (and the chunk of
25582         memory is not freed).
25583
25584 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25585
25586         * assembly.c: fix brokeness.
25587
25588 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
25589
25590         * class.c: kill some warnings. Check explicit interface method
25591         implementation also without considering the namespace.
25592         Load also literal strings in static class data.
25593
25594 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
25595
25596         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
25597         (default_assembly_name_resolver): Make the resolver take the
25598         "base" directory where the assembly was originally defined, so we
25599         can load DLLs that are in the same directory as the assembly that
25600         is being referenced.
25601
25602 2002-03-28  Dick Porter  <dick@ximian.com>
25603
25604         * file-io.h: 
25605         * file-io.c:
25606         * socket-io.c: 
25607         * unicode.h: 
25608         * unicode.c: Warning cleanups
25609
25610 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
25611
25612         * object.h, reflection.h: use the correct type instead of MonoObject.
25613
25614 2002-03-28  Martin Baulig  <martin@gnome.org>
25615
25616         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
25617         (mono_debug_update_symbol_file): Initialize classes if necessary.
25618
25619 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25620
25621         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
25622         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
25623
25624 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
25625
25626         * assembly.h: fix function prototype.
25627         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
25628         * mono-endian.h: use const cast.
25629
25630 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25631
25632         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
25633
25634 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25635
25636         * loader.c: don't assert when a typeref can't be loaded, give
25637         a chance to the runtime to trow an exception instead.
25638         * loader.h: fix warning.
25639
25640 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25641
25642         * class.c (mono_class_proxy_vtable): added proxy support
25643
25644 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
25645
25646         * icall.c: removed last of PAL calls, added System.Environment
25647         * file-io.h, file-io.c: MonoIO implementation
25648         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
25649
25650 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25651
25652         * appdomain.c: do not use the byte marker in ldstr table lookup.
25653         * debug-helpers.c: allow two ':' to separate class and method name.
25654         * object.c: allocate arrays bounds with the GC, too.
25655         * verify: add a few more checks.
25656
25657 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
25658
25659         * reflection.c: output also literal strings. Allocate parameter data
25660         with GC_malloc() (thanks, Martin, for catching this!).
25661
25662 2002-03-26  Martin Baulig  <martin@gnome.org>
25663
25664         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
25665         include the `this' offset in the `param_offsets'.
25666
25667 2002-03-25  Martin Baulig  <martin@gnome.org>
25668
25669         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
25670         mono_debug_get_class() function to get the classes. Added new
25671         relocation types for arrays and strings.
25672         (mono_debug_get_class): New static function to search in all
25673         referenced assemblies for a metadata token.
25674
25675         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
25676
25677 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25678
25679         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
25680         hold gc-allocated objects. Make the string heap a stream like the
25681         others. Removed duplicated code when writing stream info.
25682         Added asserts to catch possible buffer overflows. Set the sorted map
25683         for tables that need sorting. Added some documentation.
25684
25685 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
25686
25687         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
25688         for interned strings and vtables.
25689
25690 2002-03-24  Martin Baulig  <martin@gnome.org>
25691
25692         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
25693         it in the array since it was created with g_slist_prepend().
25694
25695 2002-03-24  Martin Baulig  <martin@gnome.org>
25696
25697         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
25698         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
25699         (mono_debug_method_from_token): Renamed to
25700         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
25701         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
25702
25703         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
25704         relocation types.
25705
25706         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
25707
25708 2002-03-24  Martin Baulig  <martin@gnome.org>
25709
25710         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
25711         (mono_debug_method_from_token): New func.
25712
25713         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
25714         New interncall, calls mono_debug_local_type_from_signature().
25715         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
25716         calls mono_debug_method_from_token().
25717
25718 2002-03-23  Martin Baulig  <martin@gnome.org>
25719
25720         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
25721         specifies the number of bytes to be converted, not the array size.
25722         Return the number of chars, not the number of bytes.
25723         (ves_icall_iconv_get_chars): The `byteCount' argument
25724         specifies the number of bytes to be converted, not the array size.
25725
25726 2002-03-23  Martin Baulig  <martin@gnome.org>
25727
25728         * reflection.h (MonoReflectionSigHelper): New type.
25729
25730         * reflection.c (mono_reflection_sighelper_get_signature_local),
25731         (mono_reflection_sighelper_get_signature_local): New functions.
25732
25733         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
25734         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
25735         interncalls.
25736
25737 2002-03-23  Martin Baulig  <martin@gnome.org>
25738
25739         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
25740         is_writeable is set.
25741         (mono_raw_buffer_update): New function to write the modified map
25742         back to disk.
25743
25744         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
25745
25746         * debug-symfile.c (mono_debug_update_symbol_file): Call
25747         mono_raw_buffer_update() when done writing.
25748
25749 2002-03-23  Martin Baulig  <martin@gnome.org>
25750
25751         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
25752
25753         * debug-symfile.c: Added support for arguments and local variables.
25754
25755 2002-03-23  Dick Porter  <dick@ximian.com>
25756
25757         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
25758         protected by ifdefs, hence breaking the w32 build.
25759
25760 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25761
25762         * object.c: implement is_interned() the right way.
25763
25764 2002-03-21  Martin Baulig  <martin@gnome.org>
25765
25766         * debug-symfile.[ch]: New files to handle debugging information
25767         files. There's also support to dynamically update these symbol
25768         files to include machine dependent information.
25769
25770 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
25771
25772         * threads.c (mono_thread_create): new function to create thread
25773         from C
25774
25775 2002-03-20  Martin Baulig  <martin@gnome.org>
25776
25777         * icall.c (ves_icall_InternalInvoke): Create a new object if the
25778         method is a constructor.
25779         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
25780         points to ves_icall_InternalInvoke().
25781
25782 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
25783
25784         * file-io.c: Flush shouldn't throw exceptions.
25785
25786 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
25787
25788         * file-io.c: FileStream flush support; FileSetLength now
25789         restores file pointer.
25790
25791 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25792
25793         * class.c: set image for pointer classes.
25794
25795 2002/03/19  Nick Drochak <ndrochak@gol.com>
25796
25797         * sysmath.c: Forgot one.
25798
25799 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
25800
25801         * sysmath.c: Avoid redefining existing names.
25802
25803 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
25804
25805         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
25806         handled by runtime as icall rather than dllimport from libm.so
25807         * file-io.c, file-io.h: fixed handle argument type.
25808
25809 2002-03-18  Dick Porter  <dick@ximian.com>
25810
25811         * reflection.c (mono_image_get_type_info): rename interface to
25812         iface, because of "#define interface struct" on windows.
25813
25814 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
25815
25816         * class.c, class.h: rename and export mono_ptr_class_get().
25817         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
25818         * reflection.c, reflection.h, icall.c: better/saner type name
25819         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
25820         method signatures.
25821
25822 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
25823
25824         * class.c (mono_class_init): removed hardcoded GHC_SLOT
25825
25826         * icall.c (ves_icall_InternalInvoke): impl.
25827
25828 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25829
25830         * reflection.c: output the interface map table, too.
25831
25832 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25833
25834         * class.c (class_compute_field_layout): separate computation of 
25835         static field layout
25836
25837 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
25838
25839         * icall.c: added System.Buffer support.
25840         * file-io.c: moved file icalls from PAL to FileStream.
25841
25842 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25843
25844         * icall.c (ves_icall_System_Object_GetHashCode): impl.
25845
25846 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
25847
25848         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
25849
25850 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25851
25852         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
25853
25854 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25855
25856         * debug-helpers.{c,h}: moved here from monograph some useful functions
25857         to locate a method by name/signature in a class or image. Included
25858         also a small and flexible IL disassembler.
25859
25860 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25861
25862         * reflection.c: fixup tokens in methods with small header size, too.
25863
25864 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
25865
25866         * object.c (mono_string_to_utf8): remove assert(!error), instead
25867         print a warning. 
25868
25869 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
25870
25871         * icall.c: update to the new mono_Array_class_get interface.
25872
25873 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25874
25875         * appdomain.c, object.c: Boehm-GC enable.
25876         * icall.c: make get_data_chunk() support split data requests.
25877         Ensure a class is initialized in more cases. Return only the first
25878         property found in GetProperties() or the compiler gets confused. 
25879         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
25880         * reflection.h, reflection.c: add fixup mechanism for field and method
25881         tokens. Initialize assembly->typeref in a single place. Output
25882         properties after events. Support custom attributes for events, too.
25883         Typo fix for paramter custom attrs.
25884
25885 2002-03-07  Martin Baulig  <martin@gnome.org>
25886
25887         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
25888
25889 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
25890
25891         * class.c (mono_array_class_get): fix. for multi. dim. arrays
25892
25893 2002-03-06  Martin Baulig  <martin@gnome.org>
25894
25895         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
25896         non-zero lower bounds. See testcases #F10-#F13.
25897
25898 2002-03-05  Martin Baulig  <martin@gnome.org>
25899
25900         * exception.c (mono_get_exception_argument_out_of_range): New exception.
25901
25902         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
25903         ves_icall_System_Array_GetValue(), only calculate the absolute array position
25904         here.
25905         (ves_icall_System_Array_SetValue): Likewise.
25906         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
25907         as argument and does the actual work. This function is used when copying a
25908         multi-dimensional array.
25909         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
25910         now do all the widening conversions of value types.
25911         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
25912
25913 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25914
25915         * class.c: remove some magic numbers and use the smbolic names,
25916         instead. Added init_events() to load event info at class init time.
25917         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
25918         and mono_metadata_methods_from_event().
25919         * reflection.h, reflection.c: added support for writing out the evnets
25920         related information.
25921
25922 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25923
25924         * reflection.h, icall.c: use a different method (GetInterfaces)
25925         to gather interface info and add isbyref, isprimitive and
25926         ispointer to the ves_icall_get_type_info() return value.
25927
25928 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25929
25930         * class.h: stared adding support for events.
25931         * icall.c: split find_members implementation. Added debug icall to get
25932         the address of an object.
25933         * reflection.c: handle TypeBuilders in mono_type_get_object().
25934
25935 2002-03-01  Martin Baulig  <martin@gnome.org>
25936
25937         * icall.c (ves_icall_System_Array_GetLength): This must throw an
25938         ArgumentOutOfRangeException(), not an ArgumentException().
25939         (ves_icall_System_Array_GetLowerBound): Likewise.
25940         (ves_icall_System_Array_GetValue): Improved argument checking.
25941         (ves_icall_System_Array_SetValue): Improved argument checking.
25942
25943 2002-03-01  Martin Baulig  <martin@gnome.org>
25944
25945         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
25946         called with invalid arguments rather than just dying with g_assert().
25947         (ves_icall_System_Array_SetValue): Likewise.
25948         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
25949         raise a NotImplementedException instead.
25950         (ves_icall_System_Array_GetLength): Added argument checking.
25951         (ves_icall_System_Array_GetLowerBound): Added argument checking.
25952
25953 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
25954
25955         * object.h (mono_assert): new macros mono_assert and
25956         mono_assert_not_reached
25957
25958 2002-02-28  Martin Baulig  <martin@gnome.org>
25959
25960         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
25961         and "System::String::IsInterned" to "System::String::_IsInterned".
25962
25963 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
25964
25965         * icall.c: remove hacks for typebuilder. Added icall to create a
25966         modified type from a tybebuilder.
25967         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
25968         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
25969         to create a backing MonoClass for a TypeBuilder.
25970
25971 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25972
25973         * class.c, class.h: more refactoring of class init.
25974         Export mono_class_setup_mono_type() and mono_class_setup_parent().
25975
25976 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
25977
25978         * marshal.c, marshal.h: start of marshaling interface.
25979
25980 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25981
25982         * icall.c: fix order in assembly qualified name icall.
25983
25984 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25985
25986         * class.c: do not free str, since we store it in the hash table.
25987         * reflection.h: add label field to MonoILExceptionInfo.
25988         * reflection.c: handle references to more than one assembly. Handle
25989         case when there isn't a module created in the assembly.
25990
25991 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25992
25993         * class.c: Fix typo. Start refactoring of class init code.
25994
25995 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25996
25997         * appdomain.c: exit with 1 on error.
25998         * class.c: we already have the name in MonoClassField.
25999         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
26000         MonoStreamHeader instead of an offset of image->raw_metadata.
26001
26002 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
26003
26004         * appdomain.c (mono_init): Be even more descriptive about the error.
26005
26006 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
26007
26008         * appdomain.c: give the user an informative message when corlib can't
26009         be loaded.
26010
26011 2002-02-26  Martin Baulig  <martin@gnome.org>
26012
26013         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
26014         New icall to get the time zone data.
26015
26016 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26017
26018         * reflection.c: set virtual and raw size of section correctly.
26019         * threads.c: transfer domain information to newly created threads.
26020
26021 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26022
26023         * class.c: when instancing a class in a domain, load the default
26024         vaules for static fields from the constant table. Fix System.Enum to
26025         not be an enum.
26026         * icall.c: implement Object::GetType() internalcall. Implemented
26027         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
26028         Fixed checking of binding flags in find_members().
26029         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
26030         * reflection.c: handle enumerations when writing to the constant
26031         table. Use a different object cache for types.
26032
26033
26034 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
26035
26036         * object.c (mono_object_isinst): fix for arrays
26037
26038         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
26039
26040 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26041
26042         * object.c: don't use mprotect ()  and fix intern pool hash table
26043         lookup for big endian systems.
26044
26045 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26046
26047         * icall.c: change type_is_subtype_of () signature.
26048
26049 2002-02-21  Mark Crichton  <crichton@gimp.org>
26050
26051         * rand.c, rand.h: Added random number generator for
26052         System.Security.Cryptography classes.
26053
26054         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
26055
26056         * icall.c: Added System.Security.Cryptography calls.
26057
26058 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
26059
26060         * class.c, icall.c, metadata.c: better support for pointer types.
26061         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
26062         * reflection.c: Add support for getting custom attrs for properties
26063         and simplify some code.
26064
26065 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26066
26067         * icall.c: change getToken () and add custom attribute GetBlob()helper
26068         method.
26069         * reflection.h: add custom attrs array to the reflection builder structures.
26070         * reflection.c: encode and emit custom attributes for all the relevant
26071         reflection objects. Cache fieldref and methodref tokens. Change
26072         mono_image_create_token() interface to take a MonoDynamicAssembly.
26073         More complete custom attributes decoder. Load custom attributes for
26074         Assembly, Field, Method and Constructor objects, too. Make the
26075         returned array an Attribute[] one, not object[]. Added
26076         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
26077         custom attribute constructor.
26078
26079 2002-02-20  Dick Porter  <dick@ximian.com>
26080
26081         * icall.c:
26082         * rawbuffer.c:
26083         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
26084         problem code out for now).
26085
26086 2002-02-19  Radek Doulik  <rodo@ximian.com>
26087
26088         * object.c (mono_ldstr): use hash table to avoid multiple swapping
26089
26090 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
26091
26092         * icall.c: register the GetCustomAttributes method.
26093         * object.c, object.h: add mono_string_new_len ().
26094         * reflection.h, reflection.c: added mono_runtime_invoke(),
26095         mono_install_runtime_invoke(). Added
26096         mono_reflection_get_custom_attrs () to load custom attributes and
26097         create the attribute objects.
26098
26099 2002-02-19  Dick Porter  <dick@ximian.com>
26100         * threads-dummy-types.c:
26101         * threads-dummy-types.h:
26102         * threads-dummy.c:
26103         * threads-dummy.h:
26104         * threads-pthread-types.c:
26105         * threads-pthread-types.h:
26106         * threads-pthread.c:
26107         * threads-pthread.h:  Deleted obsolete files
26108
26109 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
26110
26111         * class.c (mono_class_vtable): runtime init the class when we
26112         allocate static class data.
26113
26114         * icall.c (ves_icall_System_Array_SetValue): check for null values.
26115
26116         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
26117         and String - but we will need generic marshalling support in the
26118         future. 
26119         (mono_init): set the domain name in a ms compatible way
26120
26121         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
26122         String[].
26123
26124 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
26125
26126         * object.c (mono_array_clone): use alloca() instead of g_malloc  
26127         for sizes
26128
26129         * appdomain.c (mono_domain_unload): impl.
26130
26131 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26132
26133         * appdomain.c, object.c: fix intern pool implementation.
26134         * class.c: fix alignment code.
26135
26136 2002-02-16  Radek Doulik  <rodo@ximian.com>
26137
26138         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
26139         and s2 > s1, just copy lower bytes to be compatible with little
26140         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
26141         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
26142
26143         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
26144         force big_endian to be 1 for big endian machines 
26145         (ves_icall_iconv_new_decoder): ditto
26146
26147 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
26148
26149         * socket-io.c (convert_sockopt_level_and_name): If the system
26150         doesn't define SOL_IP or SOL_TCP, get them by hand using
26151         getprotobyname() and caching the values (because this could be a
26152         slow operation).
26153         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
26154         Use the appropriate struct when the system does support it. Ie,
26155         not all systems have struct ip_mreqn so use struct ip_mreq when
26156         appropriate.
26157
26158 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
26159
26160         * reflection.c: handle finally clauses.
26161
26162 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
26163
26164         * socket-io.c: use g_snprintf() instead of snprintf.
26165
26166 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26167
26168         * reflection.c (mono_param_get_objects): Cast second argument to
26169         mono_method_get_param_names to a const char** to silence the
26170         compiler warning.
26171
26172         * appdomain.c (mono_domain_assembly_open): Put parens around the
26173         truth statement in the for-loop.
26174
26175         * unicode.c (iconv_convert): Got rid of a compiler warning about
26176         int i being unused when the system has a new iconv.
26177         (iconv_get_length): Same.
26178
26179         * image.c (load_class_names): Cast the second argument to
26180         g_hash_table_insert() to char* to hush compiler warnings about the
26181         arg being a const.
26182         (mono_image_open): Same here.
26183
26184         * socket-io.c: Don't conditionally include sys/filio.h or
26185         sys/sockio.h here anymore since we now get them from
26186         io-layer/io-layer.h
26187         (inet_pton): If the system doesn't support inet_aton, implement
26188         using inet_addr and also #define INADDR_NONE if it isn't defined
26189         by the system.
26190
26191 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
26192
26193         * metadata.c, metadata.h: added function to get packing and size info
26194         of a typedef.
26195         * reflection.h, reflection.c: handle field RVA data. Save info about
26196         the table layout if needed. Assign typedef indexes to all the types
26197         before dumping the info about them to avoid forward reference problems.
26198
26199 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
26200
26201         * socket-io.c (convert_sockopt_level_and_name): ifdef
26202         SO_ACCEPTCONN because it is not defined on my system (old debian)
26203
26204 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
26205
26206         * opcode.c: use stddef.h to get NULL.
26207
26208 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26209
26210         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
26211         for FIONBIO, FIONREAD and SIOCATMARK.
26212         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
26213         define INADDR_NONE and besides, inet_addr() is deprecated and
26214         should not be used. Use inet_pton() instead - it also has the
26215         added bonus that it can easily handle IPv6 addresses as well.
26216         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
26217
26218 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
26219
26220         * decimal.c: remove _MSC_VER conditional.
26221
26222 2002-02-13  Dick Porter  <dick@ximian.com>
26223
26224         * socket-io.c: 
26225         * icall.c: Internal calls for Blocking, Select, Shutdown,
26226         GetSocketOption and SetSocketOption
26227
26228 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26229
26230         * assembly.cs: better resolver: use it instead of some kludgy
26231         code.
26232
26233 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
26234
26235         * reflection.c: the best way to speed-up the compiler is to avoid
26236         infinite loops.
26237
26238 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
26239
26240         * class.c (mono_class_vtable): changed the object layout
26241         (obj->vtable->class). 
26242         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
26243
26244 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26245
26246         * assembly.c: look for assemblies in the assembly dir, too.
26247
26248 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26249
26250         * class.c: fix thinko in mono_class_from_type().
26251
26252 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26253
26254         * exception.h, exception.c: added TypeLoadException.
26255         * object.h, object.c: added mono_array_clone ().
26256         * icall.c: handle throwOnError in AssemblyGetType().
26257         Added Array.Clone().
26258         * opcode.h, opcode.c: use a single value for the opcode val.
26259         Compile fix for non-gcc compilers.
26260
26261 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
26262
26263         * opcodes.c, opcodes.h: export interesting info about opcodes.
26264
26265 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
26266
26267         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
26268         icalls. 
26269
26270         * class.c (class_compute_field_layout): set element_class for enums
26271         (mono_class_create_from_typedef): set element_class for normal classes
26272
26273         * icall.c (ves_icall_System_Enum_get_value): impl.
26274
26275         * class.c (mono_class_create_from_typedef): do not set valuetype
26276         flag for System.ValueType and System.Enum
26277
26278 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
26279
26280         * unicode.c (iconv_convert): fix big endian problem.
26281
26282 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26283
26284         * class.c: add asserts if we are ever going to scribble over memory.
26285         * socket-io.c: not all systems have AF_IRDA defined.
26286
26287 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
26288
26289         * class.c (class_compute_field_layout): do not consider static
26290         fields to compute alignment
26291
26292 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
26293
26294         * appdomain.c (mono_appdomain_get): impl.
26295         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
26296
26297 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
26298
26299         * icall.c: ignore "file://" prefix when loading an assembly.
26300
26301 2002-01-23  Dick Porter  <dick@ximian.com>
26302
26303         * socket-io.c:
26304         * icall.c:
26305         * Makefile.am: Added socket support
26306
26307 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26308
26309         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
26310         code back.  This should return the assemblies that are loaded by
26311         the runtime on behalf of an application domain. 
26312
26313         The current implementation is still broken, it just returns every
26314         assembly loaded, but until we get real applications domain this
26315         will do.
26316
26317 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
26318
26319         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
26320         AppDomain object.
26321
26322 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26323
26324         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
26325         the mono_class_from_name lookup.
26326         (ves_icall_get_parameter_info): ditto.
26327         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
26328         method.
26329         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
26330
26331 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
26332
26333         * class.c: load also nested classes on class init.
26334         System.ValueType instance methods gets passed boxed
26335         values, unless methods in derived classed that get a pointer to the
26336         data.
26337         * icall.c: use better name parsing code in GetType().
26338         * image.c, image.h: add mono_image_loaded ().
26339         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
26340         * reflection.c, reflection.h: added mono_reflection_parse_type().
26341
26342 2002-01-22  Veronica De Santis <veron78@interfree.it>
26343
26344         * icall.c : Added mapping of internal calls for Manual and Auto reset events
26345         * threads.c : Added the implementation of internal calls for events
26346         * threads.h : Added prototypes of internal calls for events
26347         
26348 2002-01-21  Radek Doulik  <rodo@ximian.com>
26349
26350         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
26351
26352 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
26353
26354         * class.c (mono_class_init): set min_align to 1 (instead of 0)
26355         (mono_class_value_size): use min_align
26356
26357 2002-01-20  Dick Porter  <dick@ximian.com>
26358
26359         * threads.h:
26360         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
26361         so it compiles on w32.
26362
26363 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
26364
26365         * metadata.c (mono_type_stack_size): impl.
26366
26367         * class.c (mono_class_get_field): impl. memberref token
26368
26369 2002-01-16 Veronica De Santis <veron78@@interfree.it>
26370
26371         * icall.h : Added the internal calls mapping for CreateMutex_internal
26372                     and ReleaseMutex_internal.
26373         * threads.h : Added the prototype of mutexes internal calls.
26374         * threads.c : Added the implementations of mutexes internal calls.
26375
26376 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26377
26378         * metaparse.h: removed unused file.
26379         * reflection.c, reflection.h: added stream_data_align () function 
26380         to align data in streams and keep stream aligned. Add support for
26381         exception support in method headers.
26382
26383 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
26384
26385         * unicode.c: make iconv_convert () return the number of bytess written
26386         in the output buffer.
26387
26388 2002-01-15  Dick Porter  <dick@ximian.com>
26389         * threads.c: Make the runtime's idea of infinite timeouts coincide
26390         with the class library's
26391
26392         Fix a particularly egregious bug in mono_thread_cleanup(). That
26393         code was so utterly bogus it must have been written on a Monday.
26394
26395 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
26396
26397         * reflection.h: add subtypes field to TypeBuilder.
26398         * reflection.c: encode constants for literal fields.
26399         Handle subtypes. Fix user string token (and add a zero byte)
26400         at the end.
26401         
26402 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
26403
26404         * class.c (mono_class_init): bug fix: assign slot numbers for
26405         abstract methods.
26406
26407 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26408
26409         * reflection.c: don't try to output a code RVA for abstract methods.
26410         Small fixes for method header format. Output parameter info to the
26411         ParamDef table. Save method overriding info to MethodImpl table.
26412         Fix property support. Allow typedef.extends to be a type in the
26413         building assembly.
26414         * verify.c: fix off-by-one error.
26415
26416 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
26417
26418         * class.c: fix mono_class_from_mono_type () for szarray types.
26419         Remove unused cache check in mono_class_from_type_spec().
26420         * icall.c: *type_from_name () functions handle simple arrays and byref.
26421         * reflection.c: handle byref and szarray types. Handle methods without
26422         body (gets P/Invoke compilation working). Handle types and fields in
26423         get_token ().
26424         * reflection.h: add rank to MonoTypeInfo.
26425
26426 2002-01-10  Dick Porter  <dick@ximian.com>
26427
26428         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
26429         internal calls
26430
26431 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26432
26433         * icall.c: initialize class in type_from_handle ().
26434         Loop also in parent classes for get_method ().
26435         * reflection.c: properly encode class and valuetype types.
26436         Start on encoding TypeBuilder types. Handle fieldrefs.
26437         Use correct length when registering a user string.
26438         Handle ConstructorBuilder and MonoMethod in get_token ().
26439         Make mono_type_get_object () aware of cached types.
26440         * object.c: back out change to mono_string_new ().
26441
26442 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
26443         * object.c: mono_string_new should return a NULL when the string 
26444         passed in is NULL -- not try to deference it.
26445         
26446 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
26447
26448         * icall.c: hack to make IsSubType work for TypeBuilders.
26449         * reflection.c: emit constructors before methods.
26450         Retrieve param names in mono_param_get_objects().
26451
26452 2002/01/05  Nick Drochak  <ndrochak@gol.com>
26453
26454         * Makefile.am: fix list of headers and sources so automake 1.5
26455         doesn't complain. Removed \# at end of list.
26456
26457 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26458
26459         * reflection.c: get token for a method ref. Set return type of
26460         constructor to void.
26461         * loader.c: debug message.
26462         * class.c: typo fix.
26463
26464 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
26465
26466         * icall.c: fix array init with rank > 1. FindMembers
26467         loops in parent class as well.
26468         * image.c: do not insert nested types in name cache.
26469         * reflection.c: warning fix.
26470         * reflection.h: add override method (for interface impl).
26471
26472 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
26473
26474         * metadata.c: fix customattr decoding.
26475
26476 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
26477
26478         * rawbuffer.cs: Added native Win32 implementation, avoids using
26479         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
26480
26481 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
26482
26483         * class.c: make the low-level routines handle the cache.
26484
26485 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
26486
26487         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
26488
26489 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
26490
26491         * class.c: fix mono_array_element_size() for objects.
26492         * class.h, class.c: add properties to MonoClass and load them
26493         at init time.
26494         * icall.c: check with isinst() when assigning a value to an array
26495         instead of requiring the classes to match exactly.
26496         Implemented icall for System.Type::GetType().
26497         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
26498         enums. Handle bindingflags when looking for methods and fields.
26499         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
26500         and mono_metadata_methods_from_property().
26501         * reflection.h, reflection.c: added structures for propreties,
26502         parameters and enums. Implemented mono_property_get_object() and
26503         mono_param_get_objects().
26504
26505 2001-12-18  Dick Porter  <dick@ximian.com>
26506
26507         * file-io.c: Use mono_string_to_utf16() instead of
26508         mono_string_chars()
26509
26510         * object.c: Added mono_string_to_utf16(), which copies the non
26511         NULL-terminated MonoString into a new double-null-terminated
26512         buffer.
26513
26514 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
26515
26516         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
26517
26518 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
26519
26520         * file-io.c: raise exceptions if handle is invalid.
26521
26522 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
26523
26524         * assembly.c: yet another check for mscorlib.
26525         * class.c, class.h: load nesting info for classes.
26526         * icall.c: many new functions to support the Reflection classes.
26527         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
26528         * reflection.h, reflection.c: mono_image_create_token(),
26529         mono_assembly_get_object(), mono_type_get_object(),
26530         mono_method_get_object(), mono_field_get_object(): methods to return
26531         objects that parallel the C representation of assemblies, types,
26532         methods, fields.
26533
26534 2001-12-11  Dick Porter  <dick@ximian.com>
26535
26536         * icall.c:
26537         * file-io.c: Internal calls for file IO.
26538
26539 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
26540
26541         * tabledefs.h: missing FileAttributes.
26542         * verify.h, verify.c: use is_valid_string () to simplify and check for
26543         valid strings more correctly. Fix warnings and speeling.
26544         Check more tables: Filed, File, ModuleRef, StandAloneSig.
26545         Check code: branches, maxstack, method calls.
26546
26547 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
26548
26549         * object.c (mono_object_allocate): removed static, so that the jit
26550         can allocate value types.
26551
26552         * icall.c (ves_icall_System_DateTime_GetNow): impl.
26553
26554 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26555
26556         * class.c: init enum types right away and register the
26557         token->MonoClass map in mono_class_create_from_typedef ().
26558         * verify.h, verify.c: first cut of the verifier.
26559         * pedump.c: add --verify switch to verify metadata tables.
26560         * tabledefs.h: add some missing enums.
26561
26562 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
26563
26564         * class.c (mono_install_runtime_class_init): impl.
26565         (mono_class_init): renamed mono_class_metadata_init to
26566         mono_class_init, also removed the metadata_inited flag
26567
26568         * object.c (mono_object_isinst): use faster algorithm
26569
26570 2001-11-30  Radek Doulik  <rodo@ximian.com>
26571
26572         * mono-endian.h: reverted last change
26573         added function prototypes
26574
26575         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
26576         add mono-endian.c back
26577
26578         * mono-endian.c: returned back, as Paolo pointed out, it's needed
26579         for unaligned access, I've mistaked it with endianess. I am
26580         sorry.
26581         (mono_read16): fix reverted endianess
26582         (mono_read64): ditto
26583         (mono_read32): ditto
26584
26585 2001-11-30  Dick Porter  <dick@ximian.com>
26586
26587         * exception.c: Implement mono_exception_from_name()
26588
26589 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26590
26591         * metadata.h, metadata.c: remove params_size and locals_size and their
26592         calculation from the metadata code: they are only usefult to the
26593         interp.
26594
26595 2001-11-29  Radek Doulik  <rodo@ximian.com>
26596
26597         * object.c (mono_ldstr): swap bytes here, it's probably not the
26598         best place, but works for me now, I'll redo it once I know mono
26599         better, also note that I add PROT_WRITE and don't reset back, also
26600         note that it's only affects big endians, so x86 should be OK
26601
26602         * mono-endian.h (read16): use just glib macros for both endians
26603
26604         * mono-endian.c: removed as glib macros are used in in
26605         mono-endian.h so we don't need to care about endianess for read
26606         macros as glib does that for us already
26607
26608 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
26609
26610         * class.h, class.h: take minimum alignment into consideration so
26611         that the fields of a class remain aligned also when in an array.
26612
26613 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26614
26615         * loader.h, loader.c: add mono_method_get_param_names().
26616         * class.c: 0-init class fields.
26617
26618 2001-11-26  Dick Porter  <dick@ximian.com>
26619
26620         * icall.c:
26621         * threads-types.h:
26622         * threads.c: New file that handles System.Threading on all platforms
26623
26624         * object.c: 
26625         * object.h: Remove the synchronisation struct from MonoObject,
26626         replace it with a pointer that gets initialised on demand
26627
26628         * Makefile.am: Replace all the system-specific threading code with
26629         a single file that uses the new wrapper library
26630
26631 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
26632
26633         * class.c, class.h: add mono_install_trampoline() so that the runtime
26634         can register a function to create a trampoline: removes the ugly
26635         requirement that a runtime needed to export arch_create_jit_trampoline.
26636         * object.h, object.c: added mono_install_handler() so that the runtime
26637         can install an handler for exceptions generated in C code (with
26638         mono_raise_exception()). Added C struct for System.Delegate.
26639         * pedump.c: removed arch_create_jit_trampoline.
26640         * reflection.c: some cleanups to allow registering user strings and
26641         later getting a token for methodrefs and fieldrefs before the assembly
26642         is built.
26643         * row-indexes.h: updates and fixes from the new ECMA specs.
26644
26645 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
26646
26647         * class.h, class.c: add enum_basetype field to MonoClass.
26648         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
26649         to get index in the constant table reated to a field, param or
26650         property.
26651         * reflection.h, reflection.c: handle constructors. Set public-key and
26652         version number of the built assembly to 0.
26653         * row-indexes.h: update from new ECMA spec.
26654
26655 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26656
26657         * class.h, class.c: add a max_interface_id to MonoClass.
26658         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
26659         since it's used to do that. Added mono_type_type_from_obj().
26660         Make GetType() return NULL instead of segfaulting if the type was not
26661         found. Handle simple arrays in assQualifiedName.
26662         * object.h: add a struct to represent an Exception.
26663         * reflection.c: output call convention in method signature.
26664         Add code to support P/Invoke methods and fixed offsets for fields.
26665
26666 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
26667
26668         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
26669         the value.
26670         * icall.c: use mono_array_addr instead of array->vector: fixes the
26671         reflection image writing.
26672         * reflection.c: init call convention byte to 0 in method signature.
26673         Encode the property signature. Don't output property-related methods
26674         twice. Really process the properties for a type (don't cast a field to
26675         a property, my mom always told me that).
26676         Fix 64 bit issues in pointer alignment in a different and more
26677         readable way.
26678
26679 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
26680
26681         * loader.h: Removed type class from MonoDefaults, added monotype
26682
26683         * loader.c: Loaded MonoType, removed loading of Type
26684
26685         * icall.c (my_mono_new_object): Now returns a System.MonoType,
26686         and fills in System.Type._impl with a RuntimeTypeHandle rather
26687         than the actual MonoClass *
26688
26689         (ves_icall_type_from_handle): change from type_class to
26690         monotype_class
26691
26692         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
26693         implemented
26694
26695         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
26696         implemented
26697
26698         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
26699
26700         (ves_icall_System_Reflection_Assembly_GetType): implemented
26701
26702         (ves_icall_System_MonoType_assQualifiedName): implemented
26703
26704         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
26705
26706 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
26707
26708         * assembly.c (mono_assembly_open): Implement a cache for the
26709         assemblies. 
26710
26711         (mono_assembly_close): only destroy the assembly when the last
26712         reference is gone.
26713         
26714 2001-11-09  Dick Porter  <dick@ximian.com>
26715
26716         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
26717
26718 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
26719
26720         * class.c (mono_class_metadata_init): bug fix: compute the right slot
26721
26722 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26723
26724         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
26725         from Martin Weindel.
26726         * object.h: add mono_string_chars ().
26727
26728 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
26729
26730         * reflection.c (build_compressed_metadata): Eliminates warnings
26731         and uses 64-bit clean code.
26732
26733         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
26734         (mono_type_equal): Change signature to eliminate warnings.
26735
26736 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26737
26738         * icall.c, loader.c: remove the internalcall array constructors.
26739         Changes to match the new MonoArray structure.
26740         * object.h, object.c: an array object doesn't allocate an extra
26741         vector. Add mono_array_new_full () to create jagged arrays easily.
26742
26743 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26744
26745         * metadata.h, metadata.c: add mono_metadata_field_info () to
26746         retreive all the info about a field from vairous tables.
26747         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
26748         * class.h, class.c: augment MonoClassField with more info.
26749         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
26750         policy and load a field's RVA if needed.
26751
26752 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
26753
26754         * class.c (mono_class_metadata_init): create a trampoline for all
26755         virtual functions instead of actually compiling them.
26756
26757 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
26758
26759         * class.h, class.c: include name in MonoClassField.
26760         * class.c: fix fundamental type of System.Object and System.String.
26761         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
26762         tokens in ldtoken.
26763         * icall.c: remove internalcalls for the Reflection stuff that is now
26764         done in C# code.
26765         * loader.c: mono_field_from_memberref () implementation.
26766         * mono-endian.c: thinko (s/struct/union/g).
26767         * object.c, object.h: make the mono_string_* prototypes actually use
26768         MonoString instead of MonoObject.
26769         * reflection.c, reflection.h: updates for changes in the reflection
26770         code in corlib: we use C structures that map to the actual C# classes.
26771         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
26772         fat method header if needed and use the info from the ILGenerator for
26773         methods. Handle fields in types. Misc fixes.
26774
26775 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
26776
26777         * class.c (mono_class_metadata_init): bug fix: always allocate
26778         space for static class data
26779
26780 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
26781
26782         * class.c (mono_compute_relative_numbering): use relative
26783         numbering to support fast runtime type checks.
26784
26785 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
26786
26787         * class.c (mono_class_create_from_typeref): added debugging output
26788         to print class name when MonoDummy is returned instead of real class
26789
26790 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
26791
26792         * class.c (mono_class_metadata_init): interface offset table now
26793         contains pointers into the vtable - this is more efficient for the jit
26794
26795 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
26796
26797         * class.c (mono_class_metadata_init): use a temporary vtable (the
26798         old algorithm only worked for the interpreter, but not for the jit)
26799
26800 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
26801
26802         * loader.c (method_from_memberref): use mono_class_get to get the
26803         class of an array instead of using System.Array directly.
26804         (mono_get_method): also add MEMBERREF methods to the method cache
26805         which usefull for arrays.
26806
26807 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
26808
26809         * pedump.c (arch_compile_method): added to compute vtable entry
26810
26811         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
26812         number of interfaces.
26813         
26814         * class.h: merged MonoArrayClass into MonoClass
26815
26816         * class.c (mono_class_create_from_typedef): compute the vtable size and
26817         allocate space to include the vtable inside MonoClass
26818         (mono_class_metadata_init): initialize the vtable
26819
26820 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
26821
26822         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
26823         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
26824         * image.c: endian fixes by Laurent Rioux.
26825         * object.h, object.c: rename MonoStringObject to MonoString and
26826         MonoArrayObject to MonoArray. Change some function names to conform to
26827         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
26828         guint16* as first argument, so don't use char*.
26829         Provide macros to do the interesting things on arrays in a portable way.
26830         * threads-pthread.c: updates for the API changes and #include <sched.h>
26831         (required for sched_yield()).
26832         * icall.c: updates for the API changes above.
26833         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
26834         platforms that need them.
26835
26836 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26837
26838         * class.c: set the correct type for all the fundamental
26839         type when loading the class.
26840
26841 2001-10-05  Dick Porter  <dick@ximian.com>
26842
26843         * threads-pthread.c (pthread_mutex_timedlock): Simple
26844         compatibility version for C libraries that lack this call.
26845
26846 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26847
26848         * class.c: MonoTypes stored in MonoClass are stored as
26849         fundamental MonoTypes when the class represents a
26850         fundamental type (System.Int32, ...).
26851         The TypeHandle return by ldtoken is a MonoType*.
26852         * icall.c: ves_icall_get_data_chunk () write out all the
26853         PE/COFF stuff. Implement ves_icall_define_method (),
26854         ves_icall_set_method_body (), ves_icall_type_from_handle ().
26855         * image.c: properly skip unknown streams.
26856         * loader.h, loader.c: add type_class to mono_defaults.
26857         * metadata.c, metadata.h: export compute_size () as
26858         mono_metadata_compute_size () with a better interface.
26859         Typo and C&P fixes.
26860         * pedump.c: don't try to print the entry point RVA if there is no entry point.
26861         * reflection.c, reflection.h: many cleanups, fixes, output method
26862         signatures and headers, typedef and typeref info, compress the metadata
26863         tables, output all the heap streams, cli header etc.
26864         * row-indexes.h: typo fixes.
26865
26866 2001-10-04  Dick Porter  <dick@ximian.com>
26867
26868         * object.h: Add a synchronisation mutex struct to MonoObject
26869
26870         * object.c (mono_new_object): Initialise the object
26871         synchronisation mutexes
26872
26873         * icall.c: System.Threading.Monitor internal calls
26874         
26875         * threads-pthread.h:
26876         * threads-pthread.c: System.Threading.Monitor internal calls
26877
26878         * threads-types.h: New file, includes the system-specific thread
26879         structures
26880         
26881         * threads-pthread-types.h:
26882         * threads-pthread-types.c: New files, handle pthread-specific
26883         synchronisation types
26884
26885         * threads-dummy-types.h: 
26886         * threads-dummy-types.c: New files of dummy support for
26887         thread-specific types
26888
26889         * metadata.c:
26890         * image.c:
26891         * pedump.c: include mono-endian.h not endian.h
26892         
26893         * Makefile.am: More threads files.
26894         Name mono-endian.h not endian.h
26895
26896 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
26897
26898         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
26899         stuff and implement a few more bits.
26900         * icall.c: a field needs to be dereferenced twice. Do not use the same
26901         name for two variables in the same scope.
26902         * image.c, image.h: cleanups.
26903
26904 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
26905
26906         * class.c (mono_class_metadata_init): bug fix: compute the right size
26907
26908 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
26909
26910         * icall.c: implemented some of the Reflection internalcalls.
26911         * image.c, image.h: start writing out the PE/COFF image.
26912         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
26913         that does the reverse than decode_blob_size ().
26914         * object.c: use mono_metadata_encode_value (). Move here
26915         temporary implementation of mono_string_to_utf8 ().
26916         * rawbuffer.c: make malloc_map static.
26917
26918 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26919
26920         * metadata.c: fix type comparison for arrays.
26921         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
26922         Added a couple of new classes to monodefaults.
26923         * icall.c: added a couple of Reflection-related internalcalls.
26924         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
26925         Added a byval_arg MonoType to MonoClass.
26926
26927 2001-09-28  Dick Porter  <dick@ximian.com>
26928
26929         * icall.c:
26930         * threads-pthread.h: 
26931         * threads-pthread.c: Implemented internal calls for
26932         LocalDataStoreSlot operations.  Applied mutexes around all shared
26933         data.  Reworked the thread creation and Start() operations to
26934         avoid a race condition.
26935         
26936         * threads-dummy.h:
26937         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
26938
26939 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
26940
26941         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
26942
26943 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
26944
26945         * class.c, loader.c: warn and return NULL instead of erroring out.
26946         * icall.c: added System.AppDomain::getCurDomain().
26947         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
26948
26949 2001-09-25  Dick Porter  <dick@ximian.com>
26950
26951         * threads-pthread.h:
26952         * threads-pthread.c: Implemented timed thread joining and added
26953         System.Threading.Thread::Join_internal internal call
26954
26955         * icall.c: Added System.Threading.Thread::Join_internal internal call
26956
26957         * threads-dummy.h:
26958         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
26959
26960 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
26961
26962         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
26963         mono_string_intern () to implement the semantics of the ldstr opcode
26964         and the interning of System.Strings.
26965         * icall.c: provide hooks to make String::IsIntern and String::Intern
26966         internalcalls.
26967
26968 2001-09-23  Dick Porter  <dick@ximian.com>
26969
26970         * threads-dummy.c: 
26971         * threads-dummy.h: New files of dummy threading routines
26972
26973         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
26974         support code based on system specifics
26975
26976         Rename PTHREAD_LIBS to THREAD_LIBS
26977         
26978 2001-09-23  Dick Porter  <dick@ximian.com>
26979
26980         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
26981         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
26982         internal calls.
26983         (mono_thread_init): Set up a Thread object instance to return when
26984         the main thread calls Thread.CurrentThread
26985         (mono_thread_cleanup): Wait for all subthreads to exit
26986
26987         * icall.c: New internal calls for System.Threading.Thread::Sleep
26988         (including Schedule) and CurrentThread
26989
26990         * threads.h: New file, to insulate thread-specific stuff from the
26991         rest of the code
26992
26993 2001-09-21  Dick Porter  <dick@ximian.com>
26994
26995         * threads-pthread.h: 
26996         * threads-pthread.c: New file, for handling pthreads-style
26997         threading support.  Start() now starts a new thread and executes
26998         the ThreadStart delegate instance.
26999
27000         * icall.c: Added the internalcall for
27001         System.Threading.Thread::Start_internal
27002
27003         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
27004
27005 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
27006
27007         * loader.c: work around the different signatures for delegates
27008         constructors csc generates in compiled code vs the ones compiled in mscorlib.
27009
27010 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27011
27012         * class.h, class.c: add mono_class_get_field_from_name ().
27013         * *: Fix C comments and other ANSI C issues.
27014
27015 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
27016
27017         * endian.h, assembly.c: fix some endianness issues.
27018
27019 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
27020
27021         * loader.h, load.c: add delegate_class to mono_defaults.
27022         Handle runtime provided methods in mono_get_method ().
27023
27024 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
27025
27026         * loader.c (mono_get_method): use pinvoke for internal call
27027
27028         * icall.c: use pinvoke for internal call
27029
27030         * loader.c (method_from_memberref): set the method name
27031
27032 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
27033
27034         * metadata.c: help the compiler generate better code for
27035         mono_class_from_mono_type ().
27036
27037 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
27038
27039         * class.c (mono_class_metadata_init): delayed computing of the
27040         class size to mono_class_metadata_init ()
27041
27042 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
27043
27044         * class.c, class.h: add an interfaces member to MonoClass.
27045         * image.c, image.h: add assembly_name field to MonoImage
27046         from the assembly table.
27047         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
27048
27049 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27050
27051         * class.c: Handle Array in mono_class_from_mono_type ().
27052         * metadata.c, pedump.c: some endian fixes.
27053
27054 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
27055
27056         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
27057         * metadata.c: fix small problem introduced with the latest commit.
27058
27059 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
27060
27061         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
27062         We don't need a MonoMetadata pointer anymore to compare signatures in
27063         mono_metadata_signature_equal (), update callers.
27064         Reduced memory usage an number of allocations for MonoMethodHeader and
27065         MonoMethodSignature.
27066
27067 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
27068
27069         * metadata.c: added compare for szarray.
27070
27071 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
27072
27073         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
27074         and add a couple more types to it and mono_defaults. Give an hint on
27075         classes that need implementing in our corlib and are referenced
27076         in mscorlib.
27077
27078 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
27079
27080         * class.h, class.c: keep track if a class is also an Enum.
27081         * loader.c: Implement a couple more types for use in libffi
27082         marshalling. Gives better diagnostics when failing to dlopen
27083         a library. Set method->klass for P/Invoke methods, too.
27084
27085 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
27086
27087         * class.c, class.h: add a MonoType this_arg to MonoClass that
27088         represents a pointer to an object of the class' type that
27089         can be used by the interpreter and later the type cache.
27090         Add best guess alignment info for valuetype objects.
27091
27092 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
27093
27094         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
27095         into MonoType: one less level of indirection and allocation and
27096         simplifies quite a bit of code. Added cache for MonoTypes that are
27097         used frequently, so that we don't need to allocate them all the time.
27098
27099 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
27100
27101         * class.c (mono_class_create_from_typedef): System.Enum is also a
27102         value type, although it does not derive from System.ValueType
27103         (maybe a bug in the ms compiler?)
27104
27105         * metadata.c (mono_type_size): return the right size for value types
27106
27107         * loader.c (mono_get_method): only initialize method header if not abstract
27108
27109         * class.c (mono_class_from_mono_type): use mono_default values. 
27110
27111 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
27112
27113         * *: use MonoClass pointers instead of <type_tokens>
27114         
27115         * class.h: new flag: metadata_inited.
27116
27117         * class.c (mono_class_metadata_init): impl.
27118         (mono_class_instance_size): impl.
27119         (mono_class_data_size): impl.
27120
27121 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27122
27123         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
27124         MonoClass now has the name and name_space fields. 
27125         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
27126         mono_get_method () takes and optional MonoClass as argument.
27127         Removed mono_typedef_from_name() and added mono_class_token_from_name()
27128         instead that takes advantage of a map from class names to typedef
27129         tokens in MonoImage.
27130
27131 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
27132
27133         * metadata.c: zero is not a valid alignment boundary.
27134         Merge MONO_TYPE_VOID in default decoding code.
27135
27136 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
27137
27138         * image.h: merged MonoMetadata into MonoImage
27139
27140         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
27141         identify the type of elements.
27142
27143 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
27144
27145         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
27146         * cil-coff.h: split MonoMSDOSHeader and add size info.
27147         * image.c: add some consistency checks.
27148         * metadata.c: fix row size computation: one programmer
27149         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
27150         add explanation for the locator routine.
27151         Fix decoding of size in method header.
27152         
27153 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
27154
27155         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
27156         (g_concat_dir_and_file): Bring g_concat_dir_and_file
27157         function from gnome-libs.  This uses the right path separator
27158         based on the OS, and also works around a bug in some systems where
27159         a double slash is not allowed. 
27160         (default_assembly_name_resolver): Use g_concat_dir_and_file
27161         (mono_assembly_open): ditto.
27162
27163 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
27164
27165         * metadata.c (mono_metadata_signature_equal): impl.
27166
27167         * *: void is now a realy MonoType (instead of using NULL)
27168         
27169         * metadata.c (do_mono_metadata_parse_type): use
27170         mono_metadata_parse_type to parse void value.
27171
27172 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
27173
27174         * metadata.c, metadata.h: in the signature and method header store
27175         only the space required for holding the loca vars and incoming arguments.
27176
27177 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
27178
27179         * metadata.c (do_mono_metadata_parse_type): treat void like any
27180         other type (instead of assigning NULL);
27181
27182 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
27183
27184         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
27185
27186 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
27187
27188         * image.c (do_mono_image_open): added a cache for arrays.
27189
27190 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27191
27192         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
27193         decode a single column from a row in a metadata table and changes
27194         to take advantage of it in the typedef locator (gives a nice speed up).
27195         Store offset info for function params.
27196
27197 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
27198
27199         * image.h (MONO_IMAGE_IS_CORLIB): removed 
27200
27201 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
27202
27203         * assembly.c: how could mono_assembly_close () had ever worked?
27204         * metadata.c, metadata.h: provide offset info for local vars.
27205         Implement mono_type_size () to take care of alignment as well
27206         as size (it was mono_field_type_size in cli/class.c before).
27207
27208 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
27209
27210         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
27211
27212         * assembly.h (CORLIB_NAME): set to corlib.dll
27213
27214         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
27215
27216 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27217
27218         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
27219         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
27220         tokentype.h: massive namespace cleanup.
27221
27222 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27223
27224         * metadata.h, metadata.c: decode exception clauses when parsing method header.
27225
27226 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
27227
27228         * metadata.c (mono_metadata_free_type): added check for type !=
27229         NULL (void) before calling mono_metadata_free_type()
27230
27231 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
27232
27233         * metadata.h, row_indexes.h: added header with enumerations to use
27234         to index in the columns from tables in metadata and to decode coded
27235         tokens: we should start using this instead of embedding magic numbers
27236         all over the code.
27237
27238 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
27239
27240         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
27241         Move metadata_t info from cli_image_info_t to MonoImage, where
27242         it's easily accessible. Changed all the uses accordingly.
27243         Added the method and class caches to MonoImage.
27244         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
27245         and mono_metadata_decode_value () signature to be more consistent
27246         with the other parse functions (and simplify code). Taken advantage
27247         of zero-length array allocation with GCC. Removed reduntant (and
27248         wrong) MonoFieldType struct and use MonoParam instead. Changed
27249         mono_metadata_parse_field_type () to use common code for parsing.
27250         Added mono_metadata_typedef_from_field () and
27251         mono_metadata_typedef_from_method () to lookup a typedef index from a
27252         field or method token.
27253         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
27254
27255 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
27256
27257         * metadata.c (mono_metadata_parse_field_type): Implement. 
27258         (do_mono_metadata_parse_type): Split engine from
27259         mono_metadata_parse_type, so that we can create smaller structures
27260         for things that just have one pointer to the MonoType (look at
27261         the MonoFieldType)
27262
27263 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
27264
27265         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
27266         as Jan Gray found out, it is incorrect. 
27267
27268 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
27269
27270         * assembly.c: Implement asssembly loading.  This loads an image
27271         and loads all the referenced assemblies.  Come to think of it, we
27272         could always do lazy loading of the assemblies. 
27273
27274         * image.c (mono_image_open): Keep loaded images in a hashtable.
27275
27276         * image.h (MonoImage): Add reference count.
27277
27278 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
27279
27280         * assembly.c (mono_assembly_open): Keep track of the file name in
27281         case the assembly has no ASSEMBLY table.
27282
27283         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
27284         from get.c here.
27285
27286 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
27287
27288         * metadata.c, metadata.h: decode local vars in method header
27289         parse function. Change callers accordingly.
27290
27291 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
27292
27293         * metadata.h, cil-coff.h: protect against multiple inclusion.
27294         Added some new structures to hold information decoded from metadata:
27295         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
27296         and relevant decoding/free functions.
27297         * metadata.c: implement decoding functions. Add warning for out of bounds
27298         index in mono_metadata_locate(). Implement mono_get_method () to retreive
27299         all the info about a method signature and invocation. Remove check on
27300         uninitialized local var in parse_mh() and fix memory leak.
27301
27302 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
27303
27304         * metadata.h: More macros.
27305
27306         * tokentype.h: New file.
27307
27308 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
27309
27310         * assembly.c: added a consistency check and initialize
27311         some structures with g_new0().
27312         * metadata.c: fixed a couple more bugs in table size computation
27313         and add other checks for out-of bound access to metadata.
27314
27315 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
27316
27317         * metatada.c: fix bugs computing table sizes. Spew a
27318         warning when index in string heap is out of bounds.
27319
27320 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
27321
27322         * metadata.h: Add a couple of macros to manipulate tokens. 
27323
27324 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27325
27326         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
27327         cli_section_tables).
27328
27329 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
27330
27331         * metadata.c (mono_metadata_user_string): New function, provides
27332         access to the UserString heap. 
27333
27334 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
27335
27336         * metadata.c: Add inline documentation.
27337
27338 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
27339
27340         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
27341         files. 
27342
27343 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
27344
27345         * typeattr.h: New file, TypeAttribute flags. 
27346
27347 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
27348
27349         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
27350         mono_assembly_ensure_section): Section loading code.
27351         (load_section_tables): Load the sections.
27352
27353         * mono/metadata/metadata.c (mono_metadata_locate_token,
27354         mono_metadata_locate): Functions to locate the information
27355         definition given a token or a table and an index.
27356         (mono_metadata_compute_table_bases): New.
27357         (compute_size): New function to compute the sizes of the various
27358         tables.
27359
27360         * mono/metadata/metadata.h: Finish listing the different index
27361         types. 
27362
27363         * mono/metadata/pedump.c: Improve to dump new information.
27364
27365 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
27366
27367         * mono/metadata/metadata.c: Entered all the tables matching
27368         Beta2. 
27369
27370         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
27371
27372
27373