2008-07-30 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * verify.c (mono_verifier_verify_class): Don't allow generic types
4         with explicit layout.
5
6         * verify.c (mono_method_verify): Check locals and argument types.
7
8 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9
10         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
11         wait if the thread is in StopRequested state.
12
13         * class.c (mono_class_from_name): Refactor the module searching code into
14         a separate function so it can be reused in the AOT case too.
15
16 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
17
18         * verify.c (mono_type_is_valid_in_context): Improve the error message.
19         Check both the type and it's generic type definition for loader errors.
20         
21         * verify.c (mono_method_is_valid_in_context): Don't generate another
22         error when a type errors occur, this leads to the wrong exception been
23         thrown.
24
25 2008-07-28  Dick Porter  <dick@ximian.com>
26
27         * icall-def.h
28         * process.c
29         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
30         New internal calls to duplicate and close a process handle.
31
32 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
33
34         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
35
36 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
37
38         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
39
40 2008-07-27  Robert Jordan  <robertj@gmx.net>
41
42         * class.c (mono_class_init): Don't compute class.has_finalize for
43         valuetypes. Fixes #412477.
44
45 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
46
47         * verify.c: Implement constraint equivalence checking.
48         This is required when a generic parameter is used as
49         argument to a constrained one.
50
51         Fixes #410637.
52
53 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
54
55         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
56
57         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
58
59         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
60         synch with managed object layout.
61
62 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
63
64         * verify.c (do_branch_op): Handle valuetypes and generic
65         arguments properly.
66
67         * verify.c (do_cmp_op): Same.
68
69         Fixes #410383.
70
71 2008-07-24  Mark Probst  <mark.probst@gmail.com>
72
73         * generic-sharing.c: Fix memory leaks.
74
75         * class.c, class-internals.h: Make
76         mono_class_inflate_generic_type_with_mempool() non-static.
77
78 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
79
80         * pedump.c (dump_verify_info): Dump full class name.
81
82 2008-07-24  Mark Probst  <mark.probst@gmail.com>
83
84         * generic-sharing.c: Removed some old code that didn't do anything.
85
86 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
87         * profiler.c: Added runtime_initialized_event,
88         mono_profiler_install_runtime_initialized and
89         mono_profiler_runtime_initialized. This new hook tells the profiler
90         when the runtime is sufficiently initialized to be able to call
91         mono_thread_attach on the root appdomain.
92         * profiler.h, profiler-private.h: Likewise.
93
94 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
95
96         * verify.c (do_cast): Do boxing for generic arguments as well.
97
98         * class.c (is_nesting_type): Drop generic instantiations before
99         checking for nesting.
100
101         * class.c (can_access_instantiation): Allow access to generic
102         arguments.
103
104 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
105
106         * verify.c (verify_class_for_overlapping_reference_fields):
107         On some cases, the field size might be zero, guard against that.
108         Fix the explicit layout check to work as expected.
109
110 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
111
112         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
113         mono_thread_resume () during shutdown, since the thread we want to abort
114         might be suspended.
115
116 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
117
118         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
119         warning.
120
121         * debug-mono-symfile.c: Fix a warning.
122
123         * mono-perfcounters.c (get_cpu_times): Fix a warning.
124
125         * object.c (mono_class_vtable): Check if exception_type is set, and return
126         NULL as defined by the function comments.
127
128 2008-07-22  Mark Probst  <mark.probst@gmail.com>
129
130         * mempool.c: Use malloc for every single mempool allocation if the
131         configure option is set.  This makes it easier to track mempool
132         allocations with tools like Valgrind.
133
134 2008-07-22  Jb Evain  <jbevain@novell.com>
135
136         * reflection.c (create_dynamic_mono_image): emit the same
137         metadata version that SL2 does when creating a SL2 image.
138
139 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * icall-def.h:
142         * icall.c: New icall System.Enum:get_hashcode. This function
143         avoids the overhead of boxing the enum to the underlying type.
144
145 2008-07-21  Mark Probst  <mark.probst@gmail.com>
146
147         * reflection.c (mono_method_get_object): Don't let static RGCTX
148         invoke wrappers get into MonoReflectionMethods.
149
150 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
151
152         * object-internals.h:
153         * object.c: New mono_runtime_class_init_full function
154         that makes throwing the exception optinal.
155
156         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
157         for the case where the exception object is supplied.
158
159 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
160
161         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
162         old ld versions.
163
164         Contributed under MIT/X11 license.
165
166 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
167
168         * string-icalls.c (ves_icall_System_String_InternalSplit):
169         Optimize array allocation by caching the MonoClass of the
170         array type.
171
172         * icall.c (ves_icall_Type_GetMethodsByName): Same.
173
174         * reflection.c (mono_param_get_objects): Same.
175
176 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * icall-def.h:
179         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
180         It inflates the given type using the class context.
181
182 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
183
184         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
185         the vtable if it already exists.
186
187         * object-internals.h: Add mono_class_try_get_vtable as part of the
188         internal API.
189
190         * reflection.c (mono_type_get_object): Use the MonoObject from the
191         vtable when possible. Reduces locking contention on reflection heavy
192         code.
193
194 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
195
196         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
197         g_bit_nth_msf () since that macro is not implemented in eglib.
198
199 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
200
201         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
202         on platforms which do not support it.
203
204 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
205
206         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
207
208 2008-07-11  Martin Baulig  <martin@ximian.com>
209
210         * mono-debug-debugger.h
211         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
212
213         * mono-debug-debugger.c
214         (_mono_debugger_interruption_request): New global volatile variable.
215         (mono_debugger_check_interruption): New public function.
216
217         * threads.c
218         (mono_thread_current_check_pending_interrupt): Call
219         mono_debugger_check_interruption().
220         (mono_thread_interruption_checkpoint_request): Likewise.
221
222 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
223
224         * verify.c: Add more type checks for loaded types. Verify the result
225         handle from ldtoken.
226
227 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
228
229         * loader.c (field_from_memberref): Don't crash if the field
230         wasn't found.
231
232 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
233
234         * verify.c: Verify if type and method instantiations
235         don't have invalid VAR or MVAR arguments.
236
237 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
238
239         * verify.c: Fix double free of function pointer list.
240
241 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * object.c (mono_string_to_utf8): Comment the new code as it
244         breaks under eglib.
245
246 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
247
248         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
249
250 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
251
252         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
253           is not throw too many times.
254
255         Code is contributed under MIT/X11 license.
256
257 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
258
259         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
260         debugging is turned off.
261
262 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
263
264         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
265
266 2008-07-04  Mark Probst  <mark.probst@gmail.com>
267
268         * class-internals.h, class.c: Added new generic sharing option:
269         Share only stuff in System.Collections.Generic, which is now the
270         default.
271
272 2008-07-04  Mark Probst  <mark.probst@gmail.com>
273
274         * generic-sharing.c, class-internals.h: New function for getting a
275         generic method in a generic class given the corresponding method
276         for a different instantiation of the class.  Partly refactored
277         from mini-trampolines.c.
278
279         * class.c: Make sure generic methods have a class_inst if they are
280         part of a generic class.
281
282         * metadata.c (mono_type_stack_size_internal): Handle type
283         variables.
284
285 2008-07-04  Mark Probst  <mark.probst@gmail.com>
286
287         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
288         Signifies whether information on the this/vtable/mrgctx variable
289         is available.
290
291 2008-07-04  Mark Probst  <mark.probst@gmail.com>
292
293         * object.c, object-internals.h, icall.c: New function
294         mono_delegate_ctor_with_method(), which does the same as
295         mono_delegate_ctor(), but takes an explicit method argument
296         instead of taking the method from the jit info.
297
298         * marshal.c: When creating a delegate with an inflated method take
299         the "this" argument as the target class for the castclass.
300
301 2008-07-03  Mark Probst  <mark.probst@gmail.com>
302
303         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
304         mono_jit_info_table_find() to perform very badly in some cases.
305
306 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
307
308         * icall.c (type_from_typename): Handle 'string'.
309
310         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
311         wrappers into the wrapper_hash, since the key is not a MonoMethod.
312
313 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
314
315         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
316
317         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
318         number of available managed allocator types.
319
320         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
321         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
322
323 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
324
325         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
326         which is a low level lock protecting just the 'jit_code_hash' hash table.
327
328         * domain.c: Initialize+cleanup jit_code_hash_lock.
329         
330 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
331
332         * coree.c (mono_load_coree): Set coree_module_handle global variable only
333         after initialization.
334
335         * coree.h: Make MonoFixupExe internal.
336
337         Contributed under MIT/X11 license.
338
339 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
340
341         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
342         because that is platform independent. Check NumberOfRvaAndSizes in PE32
343         as well.
344         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
345         image being loaded is a CLI image and _CorValidateImage gets called.
346
347         * coree.h: Add MonoLoadImage.
348
349         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
350         instead of LoadLibrary.
351
352         Contributed under MIT/X11 license.
353
354 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
355
356         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
357         for any primitive type.
358
359 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
360
361         * object.c (mono_array_new_specific): Optimize this and the other allocation
362         functions a bit.
363         
364         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
365         domains too if mono_dont_free_domains is set.
366
367         * domain-internals.h (mono_dont_free_domains): New internal option controlling
368         whenever to free appdomain data after it has been unloaded.
369
370         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
371         
372 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
373
374         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
375         (mono_method_get_equivalent_method): Fix a warning.
376
377         * object.c (mono_message_init): Avoid looking up array types for each call.
378
379 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
380
381         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
382         call.
383
384         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
385         even more.
386
387         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
388         each iteration.
389
390         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
391         fields of an enum.
392
393 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
394
395         * object.c (mono_value_box): Fix boxing of nullables.
396
397 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
398
399         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
400         mono_module_handle that is defined by the linker; no initialization required.
401         * coree.h: Remove mono_module_handle, add __ImageBase, update
402         mono_image_open_from_module_handle.
403         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
404         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
405         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
406         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
407         to 4 GB away from image base address. IA64 version is not tested but was very
408         easy to implement and should work if we ever need it.
409         * domain.c (mono_init_internal): Avoid system error message boxes.
410         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
411         with has_entry_point. Handle do_mono_image_load fauilre correctly.
412         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
413         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
414         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
415
416         Contributed under MIT/X11 license.
417
418 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
419
420         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
421         as part of the private mono API.
422         
423         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
424         Do proper argument checking for methods that belong to generic classes.
425         Do proper type resolution for GMFH/2.
426         Fixes #377324.
427         
428 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
429
430         * verify.c (do_switch): Fix a memory corruption bug with
431         the jump index is out of bound.
432
433 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
434
435         * verify.c: Disable debug code.
436
437 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
438
439         * reflection.c (mono_image_get_methodbuilder_token): Use
440         mono_image_get_methodspec_token_for_generic_method_definition
441         instead of mono_image_get_memberref_token. We cache more memberef
442         entries now.
443
444 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
445
446         * verify.c: Inflate exception clause types.
447         Fixes #402606.
448         
449 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
450
451         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
452         name.
453
454         * reflection.c (mono_image_get_ctorbuilder_token): Same.
455
456         * reflection.c (mono_image_create_method_token): Same.
457
458 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
461         It does the same as mono_image_get_methodref_token but works on
462         MethodBuilder.
463
464         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
465         and always generate a methodspec. This follows the old behavior and fixes
466         the regressions in System.Core. 
467
468 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
469
470         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
471         don't event mono_class_get () succeeds. Fixes #402182.
472
473 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * metadata-internals.h: Added MonoDynamicImage::methodspec
476         hashtable to store methodspec tokens created for MethodBuilders.
477
478         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
479         MethodBuilders as open instantiations if a methodspec was requested.
480
481         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
482
483         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
484
485         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
486
487         Fixes bug #349190.
488
489 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
490
491         * loader.c (method_from_methodspec): Avoid crashing if the
492         method lookup fails.
493
494 2008-06-20  Dick Porter  <dick@ximian.com>
495
496         * socket-io.c (get_socket_assembly): Cope with Moonlight network
497         classes being in a different assembly.  Fixes bug 399184.
498
499 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
500
501         * loader.c (mono_loader_init): Make this callable multiple times.
502         (mono_dllmap_insert): Call mono_loader_init () so this works even before
503         the runtime is initialized. Fixes #401755.
504
505 2008-06-19  Dick Porter  <dick@ximian.com>
506
507         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
508         Fixes bug 349688.
509
510 2008-06-19  Dick Porter  <dick@ximian.com>
511
512         * socket-io.c:
513         * icall-def.h: Implement Socket generic Send() and Receive()
514         methods.  Fixes bug 395168.
515
516 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
517
518         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
519
520         Contributed under MIT/X11 license.
521
522 2008-06-18  Martin Baulig  <martin@ximian.com>
523
524         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
525         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
526         set to 80.0.  The debugger <-> runtime interface is now frozen as
527         well.   
528
529         * mono-debug.c
530         (mono_debug_debugger_version): Bump to 4.
531
532 2008-06-18  Martin Baulig  <martin@ximian.com>
533
534         * debug-mono-symfile.c
535         (load_symfile): Don't check the minor version.
536
537         * debug-mono-symfile.h: Bump the version number to 50.0.
538
539 2008-06-18  Martin Baulig  <martin@ximian.com>
540
541         * debug-mono-symfile.c
542         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
543         minimum required version.
544
545 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
546
547         * reflection.c (mono_custom_attrs_from_property): Fix support for
548         retriveving cattrs of dynamic inflated generic types.
549
550         * reflection.c (mono_custom_attrs_from_event): Same.
551
552         * reflection.c (mono_custom_attrs_from_field): Same;
553
554         * reflection.c (typebuilder_setup_events): Same cattrs of events.
555
556         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
557         Moved to metadata.c.
558
559         * metadata.c: New functions to retrive the equivalent field, event
560         of property from the generic type definition.
561
562         * metadata-internals.h: Added new functions from metadata.c.
563
564 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
565
566         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
567         to cached in a mempool is used.
568
569         * metadata.c (free_generic_class): In some situations field generic_info type
570         is not properly dup'ed and leads to double free'ing.
571
572         Fixes #400643.
573
574 2008-06-17  Mark Probst  <mark.probst@gmail.com>
575
576         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
577         this arguments (will be needed later for generic methods).
578         Collect stats.
579
580 2008-06-17  Mark Probst  <mark.probst@gmail.com>
581
582         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
583         Create a static RGCTX invoke wrapper for methods which require it.
584
585 2008-06-17  Mark Probst  <mark.probst@gmail.com>
586
587         * object.c, class-internals.h: New function for checking whether
588         an individual field is special static.
589
590 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
591
592         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
593         linear search since the table is sorted.
594
595         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
596         Fixes #324180.
597
598 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
599
600         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
601         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
602
603         * gc.c (mono_domain_finalize): Allow an infinite timeout.
604
605         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
606         
607         * threads.c (mono_thread_request_interruption): Get rid of locking, use
608         InterlockedCompareExchange to query and modify 
609         thread->interruption_requested.
610
611         * object-internals.h (struct _MonoThread): Change interruption_requested
612         to a gint32 so it can be modified by atomic operations. Add 
613         'critical_region_level' from the managed side, change small_id to a guint32,
614         add new set of 'unused' fields.
615
616         * appdomain.c: Bump corlib version.
617
618 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
619
620         * class.c (mono_class_from_name): Search modules as well. Fixes
621         #322332.
622
623 2008-06-13  Mark Probst  <mark.probst@gmail.com>
624
625         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
626         templates.  Templates are generalized with an additional type_argc
627         argument.  RGCTX templates have type_argc==0, MRGCTX templates
628         have type_argc>0.
629
630         * domain-internals.h, domain.c: New hash table for looking up
631         MRGCTXs.
632
633         * metadata.c, metadata-internals.h: Rename hash and equal
634         functions for MonoGenericInst's and make them public.
635
636         * class-internals.h: New data structures for the MRGCTX.  Macros
637         for distinguishing slots in the RGCTX and the MRGCTX.
638
639 2008-06-13  Mark Probst  <mark.probst@gmail.com>
640
641         * object.c (mono_method_get_imt_slot): Put the same methods of
642         different instantiations of the same generic interface in the same
643         IMT slots, to make generic sharing simpler.
644
645 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
646
647         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
648
649         * metadata.c (mono_metadata_field_info_with_mempool): Added.
650         This function works just like mono_metadata_field_info, but
651         accept a mempool as argument to be used allocating memory.
652
653         * marshal.c (mono_marshal_load_type_info): Use new function
654         to load marshal data into image mempool.
655
656 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
657
658         * class.c (mono_class_inflate_generic_type_with_mempool):
659         This function allows to inflate a generic type using
660         a mempool.
661
662         * class.c (inflate_generic_type): Take a mempool as argument
663         and use it to do type dup'ing.
664
665         * class.c (mono_class_setup_fields): Field type for generic
666         generic classes are allocated from the image mempool.
667
668         * metadata.c (free_generic_class): Inflated field type is
669         now allocated in the image mempool.
670
671 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * threads.c (thread_cleanup): Free MonoThread::name.
674
675 2008-06-12  Marek Habersack  <mhabersack@novell.com>
676
677         * appdomain.c (ensure_directory_exists): avoid unnecessary
678         mkdir(2) calls when the shadow directory already exists.
679         (mono_make_shadow_copy): copy also satellite assemblies from the
680         private bin directories.
681
682 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
683
684         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
685         
686         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
687         a page boundary. Fixes #396219.
688
689 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
690
691         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
692         due to double-checked locking.
693
694 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
695
696         * assembly.c (build_assembly_name): Release memory on failure.
697
698         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
699
700 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
701
702         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
703         memory on failure.
704
705 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
706
707         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
708         memory on failure.
709
710 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
711
712         * loader.c (field_from_memberref): Check if field signature type is equal
713         to the non-inflated type of the field. Fixes #398980.
714
715 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
716
717         * assembly.c (mono_assembly_load_from_full): Call 
718         mono_assembly_load_friends () outside the assemblies lock, since it can
719         acquire the loader lock. Fixes #323696.
720
721         * reflection.c (resolve_object): Inflate the inst with the context for
722         FieldOnTypeBuilderInst. Fixes #399010.
723
724 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
725
726         * reflection.c (mono_image_get_field_on_inst_token): Don't
727         inflate the field to encode it's signature. If it's a
728         VAR or MVAR it should stay that way in the signature.
729         Fixes #399047.
730
731 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
732
733         * reflection.c (resolve_object): Release memory of inflated types.
734
735 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
736
737         * loader.c (mono_method_get_signature_full): Remove assert about
738         loading a methodspec to a generic method. We have such methods, such as
739         System.Threading.Interlocked::CompareExchange<T>.
740         This assert was removed since it crashes the verifier when it checks
741         methods calling CompareExchange<T>.
742
743 2008-06-10  Marek Safar  <marek.safar@gmail.com>
744
745         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
746         of Type array and not MonoType.
747
748 2008-06-10  Marek Habersack  <mhabersack@novell.com>
749
750         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
751         <lupus@ximian.com>
752
753 2008-06-10  Martin Baulig  <martin@ximian.com>
754
755         * debug-mono-symfile.h
756         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
757         changes to the file format, but we were generating incorrect
758         source file indices in the line number table due to a bug, which
759         made backtraces report an incorrect source file.
760
761 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * mono-debug.c: Moved mono_debug_free_method_jit_info from
764         mini/debug-mini.c to here.
765
766         * mono-debug.c (il_offset_from_address): Free memory from find_method.
767
768         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
769         use it to release structs returned by mono_debug_find_method.
770
771 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
772
773         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
774         since it needs to set method->slot for all interface methods.
775
776 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
777
778         * class-internals.h: Forgot to add.
779
780 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
781
782         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
783
784         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
785         Lookup the custom attributes from property_hash.
786
787         * reflection.c (mono_save_custom_attrs): Save the custom attributes
788         in property_hash. Allocate all data using the image mempool.
789
790         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
791         for dynamic_custom_attrs to checks if the image is dynamic.
792
793 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
794
795         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
796         assemblies array.
797         
798         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
799         runtime functions while holding the domain assemblies lock.
800
801 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * verify.c: Reapplied the last bit of the reverted changes.
804
805 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * verify.c: Reapplied more of the reverted changes.
808
809 2008-06-09  Martin Baulig  <martin@ximian.com>
810
811         * debug-mono-symfile.c (load_symfile): Check the major version
812         first; if it's wrong, don't print the minor version in the error message.
813
814 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
815
816         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
817         lock instead of the domain lock to avoid deadlocks, since the thread might
818         already hold the loader lock.
819
820         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
821         (mono_thread_attach): Ditto.
822
823         * monitor.c: Use a TLS variable for holding the current thread id instead
824         of calling pthread_self ().
825         (mono_monitor_init_tls): New internal function to initialize the TLS
826         variable.
827         (mono_monitor_try_enter_internal): Put the owner == id check after the
828         owner == 0 check.
829
830         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
831         missed optimizations when using gcc-4.3.
832
833 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * reflection.c (mono_dynamic_image_free): Free the memory
836         used by MonoGenericParam in MonoDynamicImage::gen_param.
837
838         * reflection.c (mono_reflection_setup_generic_class): Allocate
839         container from mempool.
840
841         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
842         container from mempool.
843
844 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
845
846         * threads.c (mono_set_pending_exception): New internal function to set the
847         pending exception of the current thread.
848         (mono_thread_get_and_clear_pending_exception): Check for 
849         thread->pending_exception as well.
850
851         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
852
853         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
854         it can trigger a collection.
855
856 2008-06-06  Martin Baulig  <martin@ximian.com>
857
858         Merged the `debugger-kahalo' branch.
859
860         * mono-debug.h
861         (MONO_DEBUGGER_VERSION): Bumped to 72.
862
863         * debug-mono-symfile.h
864         (MonoSymbolFileMethodIndexEntry): Removed.
865         (MonoSymbolFileMethodEntry): New public typedef.
866         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
867         (MonoSymbolFileSourceEntry): Remove everything except `index' and
868         `data_offset'.
869         (MonoSymbolFileMethodEntry): Removed.
870         (MonoSymbolFileLexicalBlockEntry): Removed.
871         (MonoSymbolFileLineNumberEntry): Removed.
872         (MonoDebugLexicalBlockEntry): Removed.
873         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
874         removed `num_il_offsets' and `il_offsets'.
875         (MonoSymbolFile): Replace `version' with `major_version' and
876         `minor_version'.
877         (MONO_SYMBOL_FILE_VERSION): Replace with
878         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
879         `MONO_SYMBOL_FILE_MINOR_VERSION'.
880
881         * debug-mono-symfile.c
882         (mono_debug_symfile_lookup_location): Add support for the new line
883         number table format.
884
885 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * metadata.c (free_generic_class): Release the inflated
888         MonoClass of dynamic generic classes if it's not a generic
889         type definition.
890
891 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
892
893         * verify.c: Reapplied more of the reverted changes.
894
895 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
896
897         * reflection.c (lookup_custom_attr): Clean the cached flag or
898         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
899         for SRE types.
900
901 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
902
903         * verify.c: Reapplied a small part of the reverted changes.
904
905 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
906
907         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
908
909         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
910         previously in managed code.
911         (mono_monitor_exit): Ditto.
912         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
913
914         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
915         the managed definition.
916
917 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
918
919         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
920
921 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
922
923         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
924         
925         * monitor.c: Add some micro optimizations.
926
927         * icall.c (type_from_typename): Handle 'bool'.
928
929 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * verify.c: Implement constructor verification per P III 1.8.1.4.
932         Fixes #396716.
933
934 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
935
936         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
937         holding the assemblies lock here too.
938
939 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
940
941         * verify.c: Kill stack_top function.
942
943 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
944
945         * verify.c: Kill stack_get function.
946
947 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
948
949         * verify.c (mono_method_verify): Last change broke the build. Fixed.
950
951 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
952
953         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
954         more reliable.
955
956         * verify.c (mono_method_verify): Inflate params and locals to avoid
957         mismatch when checking for compatibility.
958
959 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
960
961         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
962         Length prefix should be size in bytes. Fix bug #339530.
963         
964         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
965         Length prefix should be size in bytes. Fix bug #339530.
966
967         Code is contributed under MIT/X11 license.
968
969 2008-06-05  Bill Holmes <billholmes54@gmail.com>
970
971         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
972
973         Contributed under MIT/X11 license.
974
975 2008-06-05  Martin Baulig  <martin@ximian.com>
976
977         * mono-debug-debugger.c
978         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
979
980 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
981
982         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
983         while holding the assemblies lock to prevent deadlocks. Handle the case
984         where the search hook returns NULL but the assembly was still loaded.
985         Fixes #323696.
986
987         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
988         modify domain state.
989
990 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
991
992         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
993         * Makefile.am (pedump_LDADD): Post-process object files and
994         add dtrace-generated object file, if necessary.
995
996         Code is contributed under MIT/X11 license.
997
998 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
999
1000         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
1001
1002 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1003
1004         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
1005
1006 2008-06-04  Mark Probst  <mark.probst@gmail.com>
1007
1008         * threads.c: Try to free everything from the delayed free table
1009         when shutting down threads, and set the variable to NULL after the
1010         table is freed so that calling
1011         mono_thread_hazardous_try_free_all() when shutting down the root
1012         domain doesn't crash.
1013
1014 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
1017         the caller if resulting type was inflated.
1018
1019         * class.c (mono_class_create_from_typespec): Free the MonoType if it
1020         was inflated.
1021
1022         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
1023
1024
1025 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
1028         class library tests.
1029
1030         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
1031         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
1032         #396989.
1033
1034 2008-06-04  Mark Probst  <mark.probst@gmail.com>
1035
1036         * domain.c, domain-internals.h: The JIT infos are now freed by the
1037         JIT info table code.  They are freed immediately if there only a
1038         single JIT info table in circulation.  If there is more, the free
1039         is delayed via a queue.
1040
1041         * threads.c, threads-types.h: New hazard pointer function for
1042         freeing all freeable delayed items in one sitting.
1043
1044 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1045
1046         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
1047
1048         * reflection.c (typebuilder_setup_properties): Same.
1049
1050         * reflection.c (typebuilder_setup_events): Same.
1051
1052 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1053
1054         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
1055         and use it for allocating memory.
1056
1057         * reflection.c (mono_marshal_spec_from_builder): Same.
1058
1059         * reflection.c: Change code to use new signatures.
1060
1061         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
1062
1063 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * decimal.c (rescale128): Put back one line which was accidently commented
1066         out.
1067         
1068         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
1069         to cause crashes.
1070
1071 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1072
1073         * reflection.c (mono_reflection_generic_class_initialize): Name must
1074         be always malloc'ed so we can free it later on. Do this for field, property
1075         and event.
1076
1077         * metadata.c (free_generic_class): Free field, property and event names.
1078
1079 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1080
1081         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
1082         instead of g_memdup.
1083
1084         * reflection.c (typebuilder_setup_fields): Same.
1085
1086 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1087
1088         * decimal.c (rescale128): Optimize this function a bit more.
1089
1090 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1091
1092         * metadata.c (free_generic_class): Release some memory from
1093         SRE generic classes.
1094
1095 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * reflection.c (mono_image_get_generic_field_token): No reference
1098         to name is kept, free it.
1099
1100         * reflection.c (mono_reflection_generic_class_initialize): Free
1101         more memory of the inflated field.
1102
1103 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
1106         code.
1107
1108 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1109
1110         * reflection.c (mono_dynamic_image_free): Release memory used by
1111         MonoDynamicImage::array_methods elements.
1112
1113         * reflection.c (assembly_add_win32_resources): Release memory after
1114         encoding.
1115
1116 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1117
1118         * decimal.c (log2_32): Use an optimized version for this function too.
1119         
1120         * decimal.c (log2_64): Fix this on 32 bit machines.
1121
1122 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1123
1124         * class.c (mono_dup_array_type): Implement allocation using a mempool.
1125
1126         * class.c (mono_metadata_signature_deep_dup): Same.
1127
1128         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
1129         a mempool.
1130
1131         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
1132
1133         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
1134
1135         * metadata-internals.h: Added mono_metadata_signature_dup_full.
1136
1137         * class-internals.h: Update signatures to take a MonoMemPool.
1138
1139 2008-06-02  Dick Porter  <dick@ximian.com>
1140
1141         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
1142         * icall-def.h: Add
1143         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
1144         FormatMessage API to get the error text.  Fixes bug 321827.
1145
1146 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * decimal.c: Add some micro optimizations to make decimal operations faster.
1149
1150 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1151
1152         * reflection.c (method_encode_clauses): Take a mempool
1153         as parameter and use it to allocate the clause array.
1154
1155         * reflection.c (mono_image_get_field_on_inst_token): Free
1156         the inflated type after encoding it.
1157
1158         * reflection.c (mono_dynamic_image_free): Free each element
1159         of MonoDynamicImage::gen_params.
1160
1161         * reflection.c (reflection_methodbuilder_to_mono_method):
1162         Allocate the generic param array from the mempool.
1163         Allocate signature params from the mempool.
1164
1165         * reflection.c (mono_reflection_generic_class_initialize):
1166         Free inflated fields after been used.
1167
1168 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1169
1170         * icall.c: Reapply the memory leak fixes as they no
1171         longer make mono crash.
1172
1173 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1174
1175         * reflection.c (mono_type_get_object): Don't store the suplied
1176         MonoType with type_hash. A caller which pass a type that
1177         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
1178         might end with a pointer to freed memory.
1179         The solution is to use byval_arg or this_arg from the associated
1180         MonoClass of the supplied type.
1181
1182 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * icall.c: Revert the rest of the last change as it breaks the build too.
1185
1186 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * icall.c: Revert a leak fix as it's breaking the build.
1189
1190 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1191
1192         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
1193
1194 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1195
1196         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
1197
1198 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1199
1200         * icall.c: Fix some memory leaks.
1201
1202 2008-05-29  Dick Porter  <dick@ximian.com>
1203
1204         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
1205         async socket operations from the pending list when a socket
1206         closes.  Leaving it until the threadpool services the event
1207         exposes a race condition when a socket descriptor is reused.
1208         Fixes bug 377589.
1209
1210 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * object.c: Fix negative index check for array alocation.
1213
1214 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * icall.c, marshal.c: Delegate wrappers should skip visibility.
1217         This check is performed by the verifier for IL created delegates
1218         and by Delegate::CreateDelegate for programatically created ones.
1219         Fixes #372406.
1220
1221 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1222
1223         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
1224         Fix code to use mono_array_size_t instead of int.
1225
1226         Based on patch by Luis F. Ortiz.
1227         Contributed under X11 license.
1228         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1229
1230 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1231
1232         * icall.c: Added ves_icall_System_Array_GetLongLength and
1233         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
1234         arrays.
1235
1236         * icall.h: Export both new functions.
1237
1238         Based on patch by Luis F. Ortiz.
1239         Contributed under X11 license.
1240         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1241
1242 2008-05-28  Martin Baulig  <martin@ximian.com>
1243
1244         The debugger now requires exactly r103463.
1245
1246         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
1247         This version is not supported by the debugger, wait for 72.
1248
1249 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1250
1251         * object.h: Changed array related functions to use
1252         mono_array_size_t instead of guint32. Forgot to commit this file.
1253
1254         Patch by Luis F. Ortiz.
1255         Contributed under X11 license.
1256         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1257
1258
1259 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
1262         don't define it. Use the number literal instead.
1263
1264 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1265
1266         * icall.c: Changed array related functions to use
1267         mono_array_size_t instead of guint32.
1268
1269         * icall.c (ves_icall_System_Array_GetLength): Check for length
1270         overflow under MONO_BIG_ARRAYS.
1271
1272         Based on patch by Luis F. Ortiz.
1273         Contributed under X11 license.
1274         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1275
1276 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
1279
1280         Based on patch by Luis F. Ortiz.
1281         Contributed under X11 license.
1282         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1283
1284 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * object.c, object.h: Changed array related functions to use
1287         mono_array_size_t instead of guint32.
1288
1289         Patch by Luis F. Ortiz.
1290         Contributed under X11 license.
1291         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1292
1293 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1294
1295         * object.h: Introduced mono_array_size_t typedef. This must be used
1296         in all places an array length is expected. This is 64bits wide if
1297         MONO_BIG_ARRAYS is enabled.
1298
1299         Patch by Luis F. Ortiz.
1300         Contributed under X11 license.
1301         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1302
1303 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * security-manager.c class.c: Set the class exception info by calling
1306         mono_class_set_failure ().
1307
1308         * class.c (mono_class_get_exception_data): New accessor function.
1309         (mono_class_set_failure): Store exception_data in the property hash.
1310
1311         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
1312         the struct as a property.
1313
1314         * loader.c (mono_get_method_full): Store the lookup result for method
1315         tokens in method_cache, the others in methodref_cache to decrease the memory
1316         usage of hash tables.
1317
1318         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
1319         (mono_image_init): method_cache is lazy inited now.
1320
1321         * metadata-internals.h (struct _MonoImage): Change method_cache to
1322         a MonoValueHashTable, add a separate methodref_cache.
1323
1324 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
1325
1326         * number-formatter.h: Fix tables to avoid arithemtic overflow in
1327           Double.ToString as exposed by Bug #383531.
1328
1329 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * number-formatter.h: Make some tables static.
1332
1333         * class.c (mono_method_set_generic_container): New accessor function.
1334         (mono_method_get_generic_container): Ditto.
1335
1336         * class-internals.h (struct _MonoMethod): Remove rarely used 
1337         'generic_container' field, store it in the property hash instead. Add 
1338         'is_generic' boolean field instead.
1339
1340         * image.c (mono_image_init): Initialize property_hash.
1341         (mono_image_close): Destroy property_hash.
1342
1343         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
1344         hold rarely used fields of runtime structures belonging to this image.
1345
1346         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
1347         to get/set method->generic_container.
1348
1349         * loader.c (mono_get_method_from_token): Avoid loading the method header for
1350         generic methods.
1351
1352 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * class.c (mono_class_inflate_generic_method_full): Don't increase
1355         mono_stats.inflated_method_count for methods found in the cache.
1356
1357         * threads.c (mono_thread_request_interruption): Add a comment about 
1358         QueueUserAPC ().
1359
1360 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
1363         interface_offsets_packed table.
1364         
1365         * class.c (mono_class_init): Remove some dead code.
1366
1367         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
1368         mono_class_setup_vtable () when CAS is active to detect security problems.
1369
1370 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
1373
1374         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
1375         parameters as it's irrelevant for delegate checking.
1376
1377 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
1380
1381         * class.c (mono_class_init): Control the creation of a generic vtable using
1382         a global which is true by default, but set to false by the runtime startup code.
1383         
1384         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
1385         Disabled for now since it breaks the embedding API.
1386         Move the setup of class->methods for arrays to mono_class_setup_methods ().
1387         (mono_class_setup_methods): Add a memory barrier.
1388
1389         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
1390         when mono_class_init () doesn't compute the generic vtable.
1391         
1392 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
1393         * profiler.c: Added mono_profiler_install_statistical_call_chain,
1394         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
1395         to support call chains (backtrace) in the stat profiler.
1396         * profiler.c, profiler-private.h: Likewise.
1397
1398 2008-05-22  Mark Probst  <mark.probst@gmail.com>
1399
1400         * generic-sharing.c: Init generic class when a method of it is
1401         requested via a runtime generic context.
1402
1403 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
1406
1407         * reflection.c (mono_type_get_object): Add a FIXME.
1408
1409         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
1410
1411         * class.c (mono_class_get_method_by_index): New helper function, returning an
1412         entry in the class->methods array.
1413
1414 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * class.c (mono_class_init): Only do the array optimization for szarrays. 
1417         Avoid creating a generic vtable for generic instances as well.
1418         (mono_class_get_method_from_name_flags): Don't search in the metadata for
1419         generic instances.
1420
1421 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * loader.c (mono_get_method_constrained): Inflate the signature
1424         with class context. Fix #325283.
1425
1426 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * object.c (mono_class_create_runtime_vtable): Add a comment.
1429
1430         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
1431         where needed.
1432         (setup_interface_offsets): Handle the case when this is called twice for arrays.
1433         (mono_class_setup_vtable_general): Add an assert.
1434         (mono_class_init): Avoid creating a generic vtable for arrays.
1435
1436         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
1437         here, let mono_class_init () do that.
1438
1439         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
1440         interfaces in mscorlib.
1441
1442         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
1443         interfaces. Add some comments.
1444         (mono_class_init): Call mono_class_setup_methods () here since it is no
1445         longer called by mono_class_setup_vtable ().
1446
1447         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
1448         not set in class->vtable.
1449         (mono_class_create_runtime_vtable): Reenable the disabled code.
1450
1451         * object.c (mono_class_create_runtime_vtable): Disable the last change for
1452         now as it causes some test failures.
1453
1454         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
1455         if using the vtable trampoline. Also remove some strange code which put the
1456         generic methods themselves into the vtable slots. Remove the AOT init_vtable
1457         stuff as it is no longer needed.
1458
1459 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * pedump.c: Give make --verify all option check code as well.
1462         Using --verify code won't check for metadata now.
1463
1464 2008-05-19  Martin Baulig  <martin@ximian.com>
1465
1466         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
1467
1468         * mono-debug.c
1469         (_mono_debug_using_mono_debugger): New global variable; it's set
1470         directly by the debugger, so mono_debug_using_mono_debugger() also
1471         works after attaching.
1472
1473 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * object.c (mono_class_create_runtime_vtable): Use memory barriers
1476         as we do double checked locking on MonoClass::runtime_info and
1477         MonoClassRuntimeInfo::domain_vtables.
1478
1479 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * debug-helpers.c (print_field_value): Fix a warning.
1482
1483 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
1484
1485         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
1486         set in the AOT case.
1487
1488 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1489
1490         * class.c (mono_class_setup_vtable_general): Use memory barriers
1491         as we do double checked locking on MonoClass::vtable.
1492
1493 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1494
1495         * reflection.c (resolve_object): Inflate only if the generic context
1496         is not null. Fixes #389886.
1497
1498 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
1499
1500         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
1501         instead of g_free.
1502
1503         Code is contributed under MIT/X11 license.
1504
1505 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * class.c: Revert unrelated change.
1508
1509 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1510
1511         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
1512         a generic instantiation, use mono_class_from_mono_type instead of playing
1513         with MonoType directly.
1514
1515 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1516
1517         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
1518         checks must ignore generic instantiations, so mono_class_has_parent is not
1519         suitable. Fixes #390128.
1520
1521 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
1522
1523         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
1524         it to avoid registering tokens during metadata generation. Fixes #390023.
1525
1526 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1527
1528         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
1529         consistent.
1530
1531         Contributed under MIT/X11 license.
1532
1533 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1534
1535         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
1536         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
1537         to fixup the EXE image.
1538         (mono_cleanup): Use mono_close_exe_image.
1539         (mono_close_exe_image): New function.
1540         * image.c: Include "marshal.h".
1541         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
1542         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
1543         counting when the image is loaded outside of mono_image_open_full. Set status
1544         based on GetLastError.
1545         * coree.c: Include required headers. Add init_from_coree.
1546         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
1547         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
1548         (_CorExeMain): Set init_from_coree.
1549         (CorExitProcess): Only call ExitProcess for now.
1550         (CorBindToRuntimeEx): New stub implementation.
1551         (CorBindToRuntime): New function.
1552         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
1553         (MonoFixupExe): ILONLY executables require no fixups.
1554         (mono_set_act_ctx): New function to set activation context.
1555         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
1556         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
1557         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
1558         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
1559         as MONO_INTERNAL.
1560         * domain-internals.h: Add mono_close_exe_image.
1561
1562         Contributed under MIT/X11 license.
1563
1564 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1565
1566         * metadata.c (mono_metadata_compute_size): Correctly calculate field
1567         size for generic param and event tables. Fixes #388977.
1568
1569 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * loader.c (mono_method_signature): Use memory barriers because of the double
1572         checked locking pattern.
1573
1574         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
1575         aborting or aborted as well. Fixes #376391.
1576         
1577         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
1578         existing runtime state in the Suspend handler during shutdown.
1579
1580 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
1581
1582         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
1583
1584         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
1585         which are starting up or shutting down.
1586
1587         * threads.c (mono_threads_set_shutting_down): Don't return a value since
1588         this function never returns if the runtime is already shutting down.
1589
1590         * icall.c (ves_icall_System_Environment_Exit): Update after 
1591         mono_threads_set_shutting_down () signature change.
1592         
1593 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * class.c: Added can_access_instantiation to verify if the instantiation
1596         is visible. Fix access check for nested types as they returned TRUE
1597         before doing type and generic instantiation visibility checks.
1598
1599 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * reflection.c (mono_reflection_create_generic_class): The created type
1602         must have a different container from its TypeBuilder. Otherwise they
1603         will end sharing generic arguments, which is wrong.
1604
1605         Due to the sharing, making a generic instance of the created type using
1606         the TypeBuider generic arguments resulted in the generic type definition
1607         been returned, which is wrong as well.
1608
1609         As a bonus the code was leaking the type_params array. This memory should
1610         be allocated from the image mempool.
1611
1612         This fixes bug #354047.
1613
1614 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1615
1616         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
1617         to here         as they are now used in assembly.c new code.
1618         Added a skipverification flag to MonoAssembly.
1619         New internal function mono_assembly_has_skip_verification.
1620
1621         * assembly.c: New function mono_assembly_has_skip_verification. It checks
1622         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
1623         part of #387274.
1624
1625 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
1628         needed. Fixes #387034.
1629
1630         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
1631
1632 2008-05-06  Miguel de Icaza  <miguel@novell.com>
1633
1634         * assembly.c (mono_assembly_load_reference): Prevent crash while
1635         disassembling Silverlight 2.0 executables while we still do not
1636         have GACed libraries.
1637
1638 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * reflection.c: Special case generic type definitions as well. Fixes #383444.
1641
1642 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
1645         of the dynamic case. Fixes #387404.
1646
1647 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         *verify.c (mono_verifier_is_class_full_trust): If under
1650         verify_all and the verifier mode was not set, only
1651         gac and corlib types are fulltrust. This makes --verify-all
1652         usable to detect unverifiable code, which is the expected
1653         use case.
1654
1655 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1656
1657         * verify.h: Ops, commited the header with debug
1658         enabled.
1659
1660 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1661
1662         * verify.c (merge_stack): Use the new value on unverifiable
1663         stack merges.
1664
1665         * verify.c (verify_type_compatibility_full): Comparison
1666         of nullable types can't use mono_class_is_assignable_from.
1667
1668         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
1669         that makes all verification errors be reported.
1670
1671         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
1672         mono_method_verify.
1673
1674 2008-05-05  Robert Jordan  <robertj@gmx.net>
1675
1676         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
1677         support for value types. See #386415.
1678
1679         * object.c: comments.
1680
1681         Code is contributed under MIT/X11 license.
1682
1683 2008-05-05  Martin Baulig  <martin@ximian.com>
1684
1685         * debug-mono-symfile.h
1686         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
1687         for old pre-terrania symbol files.
1688
1689 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1690
1691         * mono-config.c: Add ppc64 architecture.
1692
1693         Code is contributed under MIT/X11 license.
1694
1695 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1696
1697         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
1698           PPC64 uses function descriptors as well.
1699
1700         Code is contributed under MIT/X11 license.
1701
1702 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * object.c (compute_class_bitmap): Ignore literal static fields.
1705
1706         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
1707         var has an invalid format.
1708         (describe_ptr): Add some sanity checks for the vtable.
1709         (add_nursery_frag): Clear unused nursery fragments.
1710         (major_collection): Clear all remaining nursery fragments.
1711
1712 2008-05-03  Robert Jordan  <robertj@gmx.net>
1713
1714         * image.c, metadata-internals.h: add thunk_invoke_cache.
1715
1716         * marshal.c, marshal.h: implement
1717         mono_marshal_get_thunk_invoke_wrapper ().
1718
1719         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
1720
1721         Code is contributed under MIT/X11 license.
1722
1723 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         * verify.c (do_leave): Empty the stack.
1726
1727 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1728
1729         * class.c (mono_class_is_assignable_from): Variance
1730         doesn't work between reference and value types. For example,
1731         given type C<T+>, C<int32> is not assignable to C<object>.
1732         Break the argument checking loop on first error. 
1733
1734 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
1735
1736         * icall.c : base64_to_byte_array() needs some more strict
1737           check for sequence of '=' characters. Patch by Santa
1738           Marta (http://deee.g.hatena.ne.jp/santamarta).
1739
1740           Contributed under MIT/X11 license.
1741           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
1742
1743 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
1744
1745         * domain.c: Disable LoadLibrary support to fix Win32 build.
1746
1747         Code is contributed under MIT/X11 license.
1748
1749 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
1750
1751         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
1752         to help with cache behaviour.
1753
1754 2008-05-01  Miguel de Icaza  <miguel@novell.com>
1755
1756         * appdomain.c (mono_domain_from_appdomain): Add new accessor
1757         method. 
1758
1759 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
1762
1763 2008-05-01  Dick Porter  <dick@ximian.com>
1764
1765         * process.c (process_get_fileversion): Only pass 16 bits of
1766         language ID to VerLanguageName.  Fixes bug 381204.
1767
1768 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1769
1770         * verify.c (mono_method_verify): Fix the comparison
1771         operator for code bounds check.
1772
1773 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1774
1775         * verify.c (mono_method_verify): Check the bounds of
1776         all access of the code array.
1777
1778 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
1779
1780         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
1781
1782 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * image.c (mono_image_strong_name_position): Fix return value when the rva is
1785         not valid.
1786
1787 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
1788
1789         * loader.c (mono_get_method_from_token, mono_method_signature): Add
1790         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
1791         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
1792         fixup main EXE images when using mono.exe for mixed-mode assembly support.
1793         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
1794         mono_runtime_load.
1795         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
1796         runtime initialization from metadata.
1797         * assembly.c: Remove obsolete ceGetModuleFileNameA.
1798         (mono_set_rootdir): Use mono_get_module_file_name.
1799         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
1800         handles.
1801         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
1802         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
1803         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
1804         MonoCLIImageInfo. Add support for module handles.
1805         (load_cli_header): Update mono_cli_rva_image_map signature.
1806         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
1807         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
1808         (mono_image_rva_map): Add support for module handles.
1809         (mono_image_ensure_section_idx): Add support for module handles.
1810         (mono_image_close): Add support for module handles.
1811         (do_load_header): Add support for module handles.
1812         (mono_image_open_from_module_handle): New function for internal use.
1813         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
1814         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
1815         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
1816         handles.
1817         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
1818         * image.h: Add mono_image_fixup_vtable.
1819         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
1820         support.
1821         * coree.h: New file.
1822         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
1823         unsupported native code.
1824         (mono_marshal_set_callconv_from_modopt): New function splitted from
1825         mono_marshal_get_managed_wrapper.
1826         (mono_marshal_get_managed_wrapper): Use
1827         mono_marshal_set_callconv_from_modopt.
1828         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
1829         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
1830         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
1831         that results in a deadlock when the runtime is loaded in _CorDllMain.
1832         * Makefile.am: Add coree.c and coree.h.
1833
1834         Contributed under MIT/X11 license.
1835
1836 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1837
1838         * generic-sharing.c: Search for type arguments in array element
1839         types as well.
1840
1841 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1842
1843         * class-internals.h, generic-sharing.c: New, small runtime generic context.
1844
1845         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
1846
1847         * object.c: Don't setup the RGCTX when the vtable is created,
1848         because we're setting it up lazily now.
1849
1850 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
1853         64 bit support.
1854
1855 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1856
1857         * verify.c (verify_class_for_overlapping_reference_fields): 
1858         If class is under fulltrust allow reference types to overllap
1859         if they have the same RVA.
1860
1861 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1862
1863         * pedump.c: Added new flag valid-only, that makes the verifier
1864         behaves just like --security=validil. It won't fail type load
1865         due to unverifiable restrictions.
1866
1867 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1868
1869         * class-internals.h (struct MonoMethod): Added a verification_success
1870         field to cache verifier executions. Reduced MonoMethod:slot size by
1871         one bit.
1872
1873 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
1876         instead of a 'vt' argument to save an indirection and to allow these to be used
1877         for valuetypes.
1878         (scan_vtype): New helper function to scan an area using a gc descriptor.
1879         (mono_gc_wbarrier_value_copy): Implement this.
1880         (handle_remset): Add support for REMSET_VTYPE.
1881         (find_in_remset_loc): Ditto.
1882         (mono_gc_base_init): Allow some debugging options to be controlled through the
1883         use of the MONO_GC_DEBUG env variable.
1884         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
1885         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
1886
1887 2008-04-23  Martin Baulig  <martin@ximian.com>
1888
1889         * domain.c (mono_domain_create): Move the call to
1890         mono_debug_domain_create() down, after allocating the domain id.
1891
1892 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1893
1894         verify.c (verify_class_for_overlapping_reference_fields): Skip
1895         static fields while verifying for overlapping fields as they
1896         don't matter at all.
1897
1898 2008-04-23  Marek Habersack  <mhabersack@novell.com>
1899
1900         * domain-internals.h: added a declaration of
1901         mono_make_shadow_copy.
1902
1903         * assembly.c (mono_assembly_open_full): shadow copying of
1904         assemblies moved to here, so that all the assemblies within the
1905         application domain's private binary directories can be
1906         processed. Fixes bug #380546
1907
1908         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
1909         mono_make_shadow_copy and made non-static. The decision whether
1910         to shadow-copy an assembly is made based on its location - it's
1911         copied if it's in one of the private application domain binary
1912         directories and its different to the target file in the shadow
1913         directory. Fixes bug #380546
1914
1915 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
1918
1919         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
1920         types.
1921
1922         * reflection.c (mono_image_create_token): Handle 
1923         Method/ConstructorOnTypeBuilderInst.
1924         (resolve_object): Ditto.
1925         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
1926         so it can be called from resolve_object. Also handle the case when the inflated
1927         class already has its methods setup.
1928
1929 2008-04-21  Martin Baulig  <martin@ximian.com>
1930
1931         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
1932
1933 2008-04-20  Geoff Norton  <gnorton@novell.com>
1934
1935         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
1936         pointer dereference.
1937
1938 2008-04-15  Marek Habersack  <mhabersack@novell.com>
1939
1940         * appdomain.c (try_load_from): if IOMAP is in effect, call the
1941         portability API to look up the assembly file. Fixes behavior in
1942         situations when the application has a bin/ directory, but the
1943         assembly search patch refers to Bin/ (and thus the requested file
1944         name is Bin/SomeLibrary.dll). Fixes bug #379888
1945
1946 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         verify.c (mono_type_is_generic_argument): Extracted this check
1949         from a dozen places to here.
1950
1951         verify.c: Fixed all issues related to boxing generic arguments
1952         and their constraints.
1953
1954 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1955
1956         verify.c (mono_class_interface_implements_interface): Fix win32 build.
1957
1958 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
1961         isn't finished yet. Fixes #363447.
1962
1963 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
1964
1965         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
1966         Fixes #346419.
1967
1968 2008-04-13  Jb Evain  <jbevain@novell.com>
1969
1970         * domain.c: update the 2.1 profile versions.
1971         Merged from the Moonlight 2 branch.
1972
1973 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
1976         mscorlibs for the non-refonly case as well.
1977
1978         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
1979         in mono_assembly_load_from_full (). Fixes #378924.
1980
1981 2008-04-11  Geoff Norton  <gnorton@novell.com>
1982
1983         * icall.c: The global extern environ doesn't exist on Mac.  We
1984         need to call NSGetEnviron instead.
1985
1986 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1987
1988         verify.c: Add generic method constraint verification.
1989
1990 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1991
1992         class.c (mono_class_inflate_generic_method_full): Add a long
1993         explanation to the is_mb_open hack. Remove the FIXME.
1994
1995 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1996
1997         * verify.c (mono_method_verify): Mark all unknown opcodes
1998         as invalid. Mark jmp as unverifiable.
1999
2000 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2001
2002         * verify.c: Add code to do type constraint verification on class instances.
2003
2004         * verify.c (mono_verifier_verify_class): Use the type constraint 
2005         verification code.
2006
2007 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2008
2009         * class.c (mono_class_get_field_default_value): Don't pass cindex
2010         as hint to mono_metadata_get_constant_index. The local is not initialized
2011         and should contain garbage most of the time. This could only work
2012         with a lot of luck.
2013
2014 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
2015
2016         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
2017
2018 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
2019
2020         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
2021
2022         * class.c (mono_class_from_generic_parameter): Save the token of the
2023         generic param in MonoClass::sizes.generic_param_token.
2024
2025         * reflection.c (mono_custom_attrs_from_class): If the class type is
2026         VAR or MVAR retrieve the attributes of the generic param.
2027
2028 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2029
2030         * class.c (mono_class_init): Do class verification if the verifier
2031         is enabled.
2032
2033 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2034
2035         * verify-internal.h: Added mono_verifier_verify_class.
2036
2037         * verify.c: Added mono_verifier_verify_class. It checks for
2038         classes with explicit layout that have overlapping reference fields.
2039
2040         * pedump.c: Init the verifier state prior to verification. Fixed
2041         command line arguments.
2042
2043 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2044
2045         * Makefile.am: Added verify-internals.h, hopefully fix the build.
2046
2047 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * verify-internals.h: Fix a warning.
2050
2051 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2052
2053         * verify-internals.h: New header with the verifier configuration
2054         extracted from mini.c.
2055
2056         * verify.c: Implemented the new functions exported by verify-internals.h.
2057
2058 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2059
2060         * verify.c: Add proper verification of ckfinite.
2061
2062 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2063
2064         * verify.c (do_conversion): Improved error message to something
2065         more meanfull.
2066
2067         * verify.c (check_is_valid_type_for_field_ops): Fix to work
2068         with primitive types.
2069
2070 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2071
2072         * verify.c: Added tail prefix checking. Marked icall
2073         as unverifible.
2074
2075 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2076
2077         * verify.c: Fix the detection of branches to the middle
2078         of an instruction.
2079
2080 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
2081
2082         * verify.c: Implemented verification of volatile. and
2083         unaligned. prefix. Check if a type is valid after retrieving it.
2084
2085 2008-04-01  Dick Porter  <dick@ximian.com>
2086
2087         * process.c (process_get_fileversion): If there's no string block,
2088         set the file language to en_US.  Fixes the other new part of bug
2089         374600.
2090
2091 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
2092
2093         * class.c: New functions mono_method_can_access_field_full and
2094         mono_method_can_access_method_full. They perform type visibility
2095         and type site check.
2096
2097         * class-internal.h: Added exported functions.
2098
2099         * verify.c: Use new functions to implement proper visibility checks.
2100
2101 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
2104
2105 2008-03-28  Dick Porter  <dick@ximian.com>
2106
2107         * process.c (process_get_fileversion): Use the first language ID
2108         we see, rather than insisting on an invariant language.  Fixes bug
2109         374600.
2110
2111 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
2114         the streams to fix reading of invalid memory later.
2115
2116         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
2117         to ease debugging.
2118
2119 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
2122         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
2123
2124 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
2125         * threads.h: Added MonoThreadManageCallback type and
2126         mono_thread_set_manage_callback prototype
2127         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
2128         (used to store the mono_thread_manage callback).
2129         * threads.c: Added mono_thread_set_manage_callback, and handle
2130         "MonoThread->manage_callback" in build_wait_tids.
2131
2132 2008-03-26  Dick Porter  <dick@ximian.com>
2133
2134         * process.c (process_get_fileversion): Set FileVersionInfo strings
2135         to Empty when the resource doesn't have the particular info.
2136         Fixes bug 355717.
2137
2138 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
2139
2140         * verify.c (mono_method_verify): Proper prefix validation.
2141
2142 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
2145         itself in a separate argument instead of throwing them. Fixes #373448.
2146
2147         * appdomain.c: Bump corlib version.
2148
2149 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
2150
2151         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
2152
2153 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
2154
2155         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
2156         version macros.
2157
2158 2008-03-20  Mark Probst  <mark.probst@gmail.com>
2159
2160         * generic-sharing.c, class-internals.h: Code for putting
2161         reflection types into the runtime generic context.
2162
2163 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
2166         Fixes #340662. 
2167
2168
2169 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
2170
2171         * verify.c (VerifyContext): Added instruction prefix data to the struct.
2172
2173         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
2174
2175         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
2176
2177         * verify.c (do_cast): Let the result value keep the boxed status.
2178
2179         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
2180
2181 2008-03-17  Jb Evain  <jbevain@novell.com>
2182
2183         * reflection.c: when running on a 2.0 runtime, emit
2184         unconditionally the #~ header version as 2.0, and the
2185         CLI header version as 2.5, for symmetry's sake with csc.
2186
2187 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2188
2189         * class.c: Remove the unused cache_interface_offsets stuff.
2190
2191         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
2192         profiler.c: Fix warnings.
2193
2194 2008-03-16  Mark Probst  <mark.probst@gmail.com>
2195
2196         * generic-sharing.c, class-internals.h: Support for putting
2197         methods into the runtime generic context.
2198
2199 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * class.c (mono_class_setup_fields): Ignore calls made to this function for
2202         classes which are generic instances of not-yet finished typebuilders. Fixes
2203         #351172.
2204
2205         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
2206
2207 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
2210
2211         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
2212         field, replace it with a hash table in MonoDynamicImage.
2213
2214         * reflection.c (inflate_mono_method): Access the generic definition object from
2215         image->generic_def_objects instead of imethod->reflection_info.
2216
2217         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
2218
2219         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
2220         
2221         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
2222         function in reflection.c so it is easier to keep in sync with the dynamic image
2223         creation code.
2224
2225         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
2226         mono_image_close ().
2227
2228 2008-03-15  Mark Probst  <mark.probst@gmail.com>
2229
2230         * class.c (mono_class_generic_sharing_enabled): Disable generic
2231         sharing for all architectures except AMD64 and x86 to fix build.
2232
2233 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2234
2235         * verify.c: Use the generic definition MonoGenericContext when available.
2236         Remove code for checking generics instance compatibility in favor of
2237         mono_class_is_assignable_from.
2238
2239 2008-03-14  Mark Probst  <mark.probst@gmail.com>
2240
2241         * marshal.c, marshal.h, metadata-internals.h, image.c,
2242         wrapper-types.h: New wrapper for invoking a shared static method
2243         without having to pass the runtime generic context argument.
2244
2245 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2246
2247         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
2248
2249 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
2252         
2253         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
2254         create a token from a FieldOnTypeBuilderInst.
2255         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
2256         (resolve_object): Ditto.
2257
2258         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
2259         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
2260
2261 2008-03-14  Martin Baulig  <martin@ximian.com>
2262
2263         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
2264
2265         * debug-mono-symfile.h
2266         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
2267         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
2268
2269 2008-03-10  Martin Baulig  <martin@ximian.com>
2270
2271         * debug-mono-symfile.h
2272         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
2273         `lexical_block_table_offset'.
2274         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
2275         `lexical_blocks'.
2276         (MonoSymbolFile): Added `version'.
2277
2278         * mono-debug.h
2279         (MonoDebugLexicalBlockEntry): Removed.
2280         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
2281         `lexical_blocks'.
2282
2283         * mono-debug.c (mono_debug_add_method): Don't compute lexical
2284         blocks here; the debugger now does this internally.
2285
2286 2008-02-27  Martin Baulig  <martin@ximian.com>
2287
2288         * object.c (mono_runtime_exec_main): Call
2289         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
2290         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
2291
2292 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2293
2294         * verify.c (verify_type_compatibility_full): Allow native int to be converted
2295         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
2296
2297 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2298
2299         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
2300         ldftn with a virtual method.
2301
2302 2008-03-13  Geoff Norton  <gnorton@novell.com>
2303
2304         * decimal.c:  Only include memory.h if the platform has it.
2305
2306 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
2307
2308         * assembly.c, class.c, metadata-internals.h: make sure public key
2309         tokesns are compared in a case-insensitive way. Also, all
2310         the lookups in the GAC use a lowercase public key token
2311         (gaacutil already does the lowercasing on install). Fixes
2312         bug #369541.
2313
2314 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
2315
2316         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
2317         and return value.
2318
2319 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
2320
2321         * image.c: when someone loads a mscorlib from a file, return the
2322         currently loaded mscorlib (fixes bug #369253).
2323
2324 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2325
2326         * class.c: handle types with no parents by forcing them to have
2327         System.Object as a parent and marking them as broken (this currently
2328         allows the first part of bug #369173 to work as well, likely because
2329         we don't check for typeload exceptions everywhere yet).
2330
2331 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
2332
2333         * class.c: more complete check that types belong to corlib
2334         (fixes second part of bug #369173).
2335
2336 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
2337
2338         * generic-sharing.c:  Including glib.h for the MSVC builds to define
2339           "inline" to "__inline" before including mono-membar.h.
2340           
2341         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
2342           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
2343           MSVC builds.
2344
2345         Contributed under MIT/X11 license.
2346
2347 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2348
2349         * verify.c (do_invoke_method): Remove return type validation.
2350
2351         * verify.c (do_ret): Do return type validation at return site instead of
2352         call site.
2353
2354 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2355
2356         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
2357
2358         * verify.c: Some todos cleaned and improved a few error messages.
2359
2360 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
2361
2362         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
2363
2364 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
2367         system types correctly.
2368
2369         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
2370         function.
2371
2372 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * assembly.c (build_assembly_name): Fix a warning.
2375
2376 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2377
2378         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
2379         the called function takes an object type argument. Fixes storing or
2380         valuetypes across remoting as well as reducing memory usage.
2381         * image.c, metadata-internals.h: remove now unused ldfld_remote and
2382         stfld_remote wrapper caches.
2383
2384 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
2387         is not found.
2388
2389         * reflection.c (mono_image_register_token): New helper function to save
2390         a token->object mapping.        
2391
2392         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
2393         managed code.
2394
2395         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
2396         one dimension arrays. Fixes #367670.
2397         (mono_reflection_get_type_internal): Ditto.
2398
2399 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
2400
2401         * marshal.c: mono_load_remote_field_new() always returns object.
2402         so use the proper signature (fixes bug #366445).
2403
2404 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2405         
2406         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
2407         add an 'inline_failure' flag instead.
2408
2409 2008-03-04  Mark Probst  <mark.probst@gmail.com>
2410
2411         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
2412         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
2413         contains the location of "this", used for exception handling.
2414
2415 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
2418         their size on all platforms for perf reasons.
2419
2420 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2421
2422         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
2423         object-internal.h
2424
2425         * object-internal.h: Same.
2426
2427 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * reflection.h: Fix the build I just broke.
2430
2431 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
2434         Test if a token is valid, this remove explicit usage of 
2435         MonoDynamicImage::tokens from the verifier code.
2436
2437         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
2438
2439         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
2440         instead of direct access to MonoDynamicImage::tokens.
2441
2442 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2443
2444         * verify.c (token_bounds_check): Fix the build I just broke.
2445
2446 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
2449
2450         * verify.c (verifier_load_method): Fixed the errors message.
2451
2452         * verify.c (mono_method_verify): Fixed a debug message.
2453
2454 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
2455
2456         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
2457         mono-perfcounters.h, class-internals.h: support for predefined
2458         writable counters, query of categories and counters, bugfixes.
2459
2460 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2461
2462         * verify.c (do_refanytype): Verify the refanytype opcode.
2463
2464         * verify.c (mono_method_verify): Use do_refanytype.
2465
2466 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * verify.c (do_mkrefany): Verify the mkrefany opcode.
2469
2470         * verify.c (mono_method_verify): Use do_mkrefany.
2471
2472 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
2473
2474         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
2475         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
2476         implementation.
2477
2478 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
2481         the type load exception.
2482
2483 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
2484
2485         * verify.c: Added a few FIXME for method signatures
2486
2487         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
2488         of mono_method_get_signature and get vararg call working. Removed unused
2489         checks for return value.
2490
2491         * verify.c (do_refanyval): Verify the refanyval opcode.
2492
2493         * verify.c (mono_method_verify): Implemented verification of arglist and
2494         use do_refanyval.
2495
2496 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
2499         vtypes to marshal.c.
2500
2501         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
2502         it works for AOT as well.
2503
2504 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2505
2506         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
2507         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
2508         the system time is adjusted.
2509
2510 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
2511
2512         * icall.c, icall-def.h: use the new time functions (fixes the
2513         non-monotonic behaviour of TickCount).
2514
2515 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
2518         it breaks the build.
2519         
2520         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
2521         cattr is not finished yet.
2522
2523 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * verify.c: Proper token validation for field, method and type.
2526
2527 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2528
2529         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
2530
2531         * loader.c (method_from_memberref): Generate type load error instead of method missing
2532         if the type is not found.
2533
2534 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
2537         some of the conversions caused the generation of a marshal directive exception.
2538
2539 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2540
2541         verify.c: Report which exception should be thrown by the JIT.
2542         Added a lot of FIXME notes.
2543
2544 2008-02-22  Mark Probst  <mark.probst@gmail.com>
2545
2546         * generic-sharing.c: Runtime generic context slots are not
2547         instantiated on init anymore.  Instead, provide function to do the
2548         instantiating on demand.
2549
2550         * class-internals.h: Added vtable to runtime generic context.
2551         Macros for encoding direct and indirect slot offsets in one
2552         guint32.
2553
2554 2008-02-21  Mark Probst  <mark.probst@gmail.com>
2555
2556         * object.c, generic-sharing.c: Moved some generic sharing code
2557         from object.c to generic-sharing.c.
2558
2559         * generic-sharing.c: Added support for extensible runtime generic
2560         context.
2561
2562         * metadata-internals.h: Two new hash tables in MonoImage for
2563         extensible runtime generic context support.
2564
2565         * domain.c: Unregister generic vtables upon domain unloading.
2566
2567         * image.c: Destroy new hash tables upon image unloading.
2568
2569         * metadata.c: Unregister generic subclasses upon image unloading.
2570
2571         * class-internals.h: New data structure for runtime generic
2572         context template.  New fields in the runtime generic context for
2573         extensible part.
2574
2575         * Makefile.am: Added generic-sharing.c.
2576
2577 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2578
2579         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
2580         there is a pending loader exception, raise it.
2581
2582         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
2583         same.
2584
2585         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
2586         same.
2587
2588         Fixes #363450.
2589
2590 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
2593
2594         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
2595         
2596         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
2597         ref-only requests for compatibility with MS.
2598
2599 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2600
2601         * reflection.c (mono_custom_attrs_from_method): Don't silently
2602         return an empty list for generic method instances.
2603         (mono_custom_attrs_from_param): Likewise.
2604
2605 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
2606             Raja R Harinath  <harinath@hurrynot.org>
2607
2608         Fix #354757
2609         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
2610         * class.c (mono_class_inflate_generic_method_full): Initialize it
2611         when a fully-open method is instantiated.
2612         * metadata.c (inflated_method_equal, inflated_method_hash): Update
2613         to new field.
2614         * reflection.c (inflate_mono_method): Don't create a temporary context.
2615
2616 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2617
2618         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
2619         Compute correct value, to prepare for imethod->reflection_info going away.
2620
2621 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
2624
2625 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2626
2627         * verify.c: Implement skip visibility flag.
2628
2629 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2630
2631         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
2632         which contains an extra field to tell the kind of exception that should be thrown.
2633
2634         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
2635
2636 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
2637
2638         * loader.c (mono_method_get_param_names): Initialize 'klass' after
2639         'method' is updated.
2640
2641 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * class.c (mono_class_layout_fields): Set class->min_align for classes using
2644         explicit layout as well. Fixes #360375.
2645
2646 2008-02-11  Geoff Norton  <gnorton@novell.com>
2647
2648         * loader.c: Guard and dereference against inflated generic methods
2649
2650 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
2651
2652         * class.c: Include Retargetable spec in assembly name.
2653         * assembly.c: Always include PublicKeyToken spec in assembly name
2654         (with value "null" if assembly is not signed), and include
2655         Retargetable spec.
2656         * icall-def.h: Added icall for Assembly.get_fullname.
2657         * icall.c: Added icall returning the fullname of an assembly.
2658
2659 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
2660
2661         * class.c (mono_class_setup_vtable_general): Add a missing call to
2662         mono_class_setup_methods () which is needed in the AOT case.
2663
2664 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
2665
2666         * verify.c (mono_type_get_stack_name): Added. Return the name for the
2667         stack type of the given MonoType.
2668
2669         * verify.c (verify_type_compatibility_full): Handle the void type.
2670
2671         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
2672         way stack merging works.
2673
2674         * verify.c (store_local): Improved verification message.
2675
2676         * verify.c (do_branch_op): If the merging is invalid, the method
2677         is unverifiable and not invalid. Improved error message.
2678
2679         * verify.c (merge_stacks): Properly merge a boxed valuetype and
2680         a reference type diferent than System.Object. Improved error
2681         message.
2682
2683 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
2684
2685         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
2686
2687         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
2688         type of an enum even if the argument is byref.
2689
2690         * verify.c: Replace all explicit uses of enumtype and enum_basetype
2691         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
2692
2693         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
2694
2695         *verify.c (verify_type_compatibility_full): Make enum types
2696         compatible with their base types.
2697
2698         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
2699         types are compatible for the special case of a boxed valuetype and
2700         System.Object.
2701
2702         * verify.c (verify_stack_type_compatibility): The function
2703         is_compatible_boxed_valuetype was extracted from here.
2704
2705         * verify.c (push_arg): Only set ctx->has_this_store if the method
2706         is not static.
2707
2708         * verify.c (do_ldelem): Fixed a typo in an error message and added
2709         strict check for mixing int32 and native int as the array type
2710         and ldelem type.
2711
2712         * verify.c (merge_stacks): Consider boxed valuetypes in the
2713         compatibility checks.
2714
2715 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
2716         * profiler.h: (MonoGCEvent): Added start-stop the world events.
2717
2718 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2719         *class.c: use_new_interface_vtable_code: renamed the env var to have
2720         a "MONO_" prefix, and fix the logic to enable it by default.
2721
2722 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2723         *class.c:
2724         mono_class_setup_vtable_general: rewrote the way in which interface
2725         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
2726         makes the code more maintainable.
2727         For now the old code is still there, and can be activated setting
2728         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
2729
2730 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
2731
2732         * verify.c: guarded some debug functions around and #ifdef.
2733
2734         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
2735
2736 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
2737
2738         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
2739         changes for now since they seem to break too many things.
2740
2741 2008-02-05  Mark Probst  <mark.probst@gmail.com>
2742
2743         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
2744         mono_marshal_find_nonzero_bit_offset): Added macro and function
2745         for finding the byte- and bit-offset of a bitfield within a
2746         struct.
2747
2748 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
2749
2750         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
2751         (mono_marshal_get_struct_to_ptr): Ditto.
2752
2753         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
2754         cctor_signature.
2755
2756 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
2759         between methods for non-corlib types.
2760
2761 2008-02-02  Geoff Norton  <gnorton@novell.com>
2762
2763         * loader.c (mono_method_get_param_names): Populate the parameter name for 
2764         generic parameters as well. (Fixes #342536)
2765
2766 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
2767
2768         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
2769
2770         * verify.c (do_invoke_method): Fix for calling with byref structs.
2771
2772         * verify.c (do_cast): push a boxed value type based on the type token and not
2773         the type of stack.
2774
2775 2008-01-31  William Holmes  <billholmes54@gmail.com>
2776
2777         * process.c (process_module_string_read): Check the size returned form 
2778           VerQueryValue to avoid out of memory exception. 
2779
2780 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
2783         Handle properly modules which are not in the moduleref table. Fixes
2784         #356938.
2785
2786 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
2789         the dynamic case which is now in managed code.
2790         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
2791
2792         * marshal.c (mono_string_to_bstr): Fix a warning.
2793         (init_com_provider_ms): Ditto.
2794
2795         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
2796
2797         * exception.c (mono_get_exception_out_of_memory): New helper function.
2798
2799 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
2800
2801         * marshal.c: Add support for BSTR marshalling
2802         using other COM systems.
2803
2804         Code is contributed under MIT/X11 license.
2805
2806 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2807
2808         * object.c (mono_runtime_invoke_array): reverted previous
2809         commit as it breaks the build.
2810
2811 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * object.c (mono_runtime_invoke_array): Verify arguments for
2814         invalid types. Fixes #348522.
2815
2816 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2817
2818         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
2819         non-final virtual calls using call. 
2820
2821         * verify.c (do_invoke): fixed some TODOs.
2822
2823         * verify.c (push_arg): set has_this_store for "ldarga 0".
2824
2825 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
2828         which belong to an inflated class. Fixes #356531.
2829
2830 2008-01-26  Robert Jordan  <robertj@gmx.net>
2831
2832         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
2833         which resort to FindFirstFile when a certain error condition
2834         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
2835         Code is contributed under MIT/X11 license.
2836
2837 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
2838
2839         * marshal.c (emit_marshal_string): Fix out string marshalling
2840         to use specified encoding. Fixes #323900.
2841
2842         Code is contributed under MIT/X11 license.
2843
2844 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
2845
2846         * class.c (mono_class_inflate_generic_method_full): Don't modify
2847         iresult->context after cache check.
2848
2849 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * class.c (mono_class_inflate_generic_method_full): Change the
2852         struct assignments to memcpy for better visibility and add some comments.
2853
2854 2008-01-23  Dick Porter  <dick@ximian.com>
2855
2856         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
2857         procedure, and make it work on windows.
2858
2859 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
2862         a MonoReflectionTypeBuilder since it is always of that type.
2863
2864         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
2865
2866         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
2867
2868         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
2869         
2870         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
2871
2872         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
2873
2874         * reflection.c (mono_reflection_create_runtime_class): Remove already created
2875         instantiations from the type cache.
2876
2877 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
2880
2881         * verify.c (do_unbox_value): push a controled mutability managed pointer.
2882
2883 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2884
2885         * verify.c (do_ldstr): added, verifies if the #US token is valid.
2886
2887         * verify.c (mono_method_verify): removed old TODO
2888
2889 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2890
2891         * verify.c (do_newobj): add visibility check.
2892
2893 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2894
2895         * verify.c (do_load_function_ptr): add visibility check.
2896
2897 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
2898         *class.c:
2899         mono_generic_class_get_class: hook profiler events.
2900         mono_field_get_offset: added to support heap-shot in the new profiler.
2901         *class.h: exported mono_field_get_offset.
2902         * reflection.c:
2903         mono_reflection_setup_internal_class: hook profiler events.
2904
2905 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
2908         argument here too and use it to avoid checking for pending exceptions if 
2909         possible.
2910
2911 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
2912
2913         * assembly.c (build_assembly_name): add arg for passing the assembly
2914         flags. Do not consider a PublicKey with value "null" valid.
2915         (mono_assembly_name_parse_full): added boolean argument that will be
2916         set if the assembly name contains a PublicKeyToken spec. Added support
2917         for the Retargetable spec for which only Yes or No are allowed as valid
2918         value. Consider assembly name invalid if Retargetable spec is set, but
2919         either version, culture or public key (token) are not specified.
2920         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
2921         with implementation in assembly.c.
2922         * icall.c (fill_reflection_assembly_name): also copy assembly flags
2923         from MonoAssemblyName.
2924         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
2925         introduced argument for mono_assembly_name_parse_full to know if the
2926         assembly name has a PublicKeyToken spec, and if it has instruct
2927         fill_reflection_assembly_name to use default value for keyToken (if
2928         PublicKeyToken is null).
2929
2930 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * verify.c (mono_method_verify): fixed ovf ops with
2933         float values. They are unverifiable now.
2934
2935 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2936
2937         * class.c (set_failure_from_loader_error): add BadImageException to the
2938         list of exceptions that can cause a type to fail to load.
2939
2940         * class.c (mono_class_get_exception_for_failure): same.
2941
2942 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2943
2944         * verify.c (in_any_exception_block): added, check if offset
2945         is part of any exception handling clause.
2946
2947         * verify.c (get_stack_type): added VAR and MVAR types.
2948
2949         * verify.c (do_stobj): better error messages.
2950
2951         * verify.c (do_cpobj): added, check cpobj.
2952
2953         * verify.c (do_initobj): added, check initobj.
2954
2955         * verify.c (do_sizeof): added, check sizeof.
2956
2957         * verify.c (do_localloc): added, check localloc.
2958
2959         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
2960
2961 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
2964         save_lmf/restore_lmf opcodes.
2965
2966         * threads.c (mono_threads_install_notify_pending_exc): New function to
2967         install a callback notifying the JIT there is a pending exception on a thread.
2968         (mono_thread_request_interruption): Call the new callback.
2969         (mono_thread_get_and_clear_pending_exception): New function to return the
2970         exception pending on a thread.
2971
2972         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
2973         to turn off checking for pending exceptions.
2974         (mono_marshal_get_native_wrapper): Ditto.
2975
2976 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2977
2978         * threads-types.h: Get rid of the unnecessary extern declarations.
2979
2980 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
2981
2982         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
2983         return field from parent class if not private.
2984         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
2985         returns fields from parent class if they are not private.
2986         (method_nonpublic): added function to determine if a given method
2987         should be considered non-public. Returns false for private methods
2988         on parent class, and internal methods from parent on the 1.0 profile.
2989         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
2990         use method_nonpublic function to determine whether method should be
2991         returned.
2992         (property_accessor_public): use newly introduced method_nonpublic
2993         function to determine whether accessor is non-public. 
2994         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
2995         event from parent class if not private. Only return static event if
2996         Static flag is set, and only return static event from parent class if
2997         FlattenHierarchy flag is set.
2998         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
2999         include non-private events from parent class.
3000
3001 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
3004         warning.
3005
3006 2008-01-16  Wade Berrier <wberrier@novell.com>
3007
3008         * security.c: Add assembly.h header to appease some warnings
3009
3010 2008-01-16  Dick Porter  <dick@ximian.com>
3011
3012         * process.c (process_module_string_read): Remove trailing null
3013         when saving string.
3014
3015 2008-01-16  Mark Probst  <mark.probst@gmail.com>
3016
3017         * class-internals.h: A new data structure describing the layout of
3018         a runtime generic context (MonoRuntimeGenericContextTemplate).
3019
3020         * metadata-internals.h: Added a hash table to MonoDomain that maps
3021         from open generic classes to their runtime generic context
3022         templates.
3023
3024         * object.c: Building of the runtime generic context, including
3025         proper handling of generic type arguments of superclasses.
3026         Building of the runtime generic context according to the template.
3027
3028 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * class.c (mono_class_setup_fields): Set field.count for generic instances.
3031         Fixes #350856.
3032
3033         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
3034         mono_portability_find_file (). Fixes #325466.
3035         (mono_image_get_public_key): Fix a warning.
3036
3037 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
3040         Fixes #353550.
3041         (mono_class_from_name_case): Ditto.
3042
3043 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
3044
3045         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
3046           common storage for the tables used in the System/NumberFormatter class.
3047
3048 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
3051
3052 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
3053
3054         * verify.c (get_boxable_mono_type): check if the token is valid.
3055
3056         * verify.c (set_stack_value): changed to add an error if an
3057         invalid type is set on stack. Changed all callers due to signature change.
3058
3059         * verify.c (do_stobj): implement stobj validation.
3060
3061 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
3062
3063         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
3064         set container->is_method, it was set earlier.
3065
3066         * metadata.c (type_in_image): Handle MVARs which belong to not finished
3067         generic methods.
3068
3069         * reflection.c (mono_reflection_initialize_generic_parameter): Set
3070         is_method of the generic container to TRUE for methods.
3071
3072 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * metadata.c (type_in_image): Handle type parameters properly.
3075
3076         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
3077         memory ownership of this structure.
3078
3079 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
3080
3081         * verify.c (get_boxable_mono_type): make typedref types been just
3082         unverifiable. check for void type.
3083
3084         * verify.c (do_unbox_any): added, verify opcode unbox.any.
3085
3086         * verify.c (do_load_function_ptr): accept method spec tokens.
3087
3088 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * marshal.c (mono_class_native_size): Always set *align even if this is called
3091         recursively.
3092
3093 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
3094
3095         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
3096         out-of-date.
3097
3098 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100         * verify.c: removed some old unused tables. A huge bunch of small fixes
3101         to things found while testing the verifier with mono basic.
3102
3103         * verify.c (dump_stack_value): dump null literal flag to.
3104
3105         * verify.c (verify_type_compatibility_full): fix comparison
3106         for types that have a generic super type.
3107
3108         * verify.c (verify_stack_type_compatibility): fix compatibility
3109         between null literals and reference types. fix compatibility between
3110         boxed valuetypes and object. fix corner case test for enums.
3111
3112         * verify.c (do_cmp_op): proper verification of cgt.un in case
3113         of reference types.
3114
3115         * verify.c (do_invoke_method): fix error message.
3116
3117         * verify.c (do_store_indirect
3118
3119         * verify.c (check_is_valid_type_for_field_ops): proper verification
3120         of managed pointers to valuetypes and boxed valuetypes. proper verification
3121         of null literals.
3122
3123         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
3124         allow token to be a reference type.
3125
3126         * verify.c (do_cast): proper handling of boxes valuetypes.
3127
3128         * verify.c (do_stelem): proper handling of storing a boxed valuetype
3129         in object[].
3130
3131         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
3132         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
3133         fixed the decoding of unbox_any
3134
3135 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
3138
3139 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
3140
3141         * verify.c (do_newobj): do delegate verification.
3142
3143         * verify.c (verify_delegate_compatibility): perform delegate
3144         verification.
3145
3146         * verify.c (verify_ldftn_delegate): perform tests related to
3147         ldftn delegates.
3148
3149         * verify.c (mono_delegate_signature_equal): perform the
3150         slightly diferent signature comparison required by delegates.
3151
3152         * metadata.c (mono_metadata_type_equal_full): added and exported
3153         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
3154         allows signature only comparison.
3155
3156         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
3157         as MONO_INTERNAL.
3158
3159 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3160
3161         * verify.c: added a bunch of stack_slot_* functions to
3162         make access to stack slot type easier. This is required to
3163         allow optional flags, like null literal, boxed value and
3164         this pointer.
3165         All access paths to IlStackDesc::stype have been changed 
3166         to use these new funcions.
3167         Removed a bunch of unused functions and cleared all warnings.
3168         This patch introduces the usage of the this pointer and 
3169         boxed value flags.
3170
3171 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
3174
3175 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
3176
3177         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
3178         match managed version.
3179
3180         * appdomain.c: Bump corlib version.
3181         
3182         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
3183         argument.
3184
3185 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
3186
3187         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
3188         Set public key token to zero-length byte array if assembly is not
3189         strongnamed.
3190
3191 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3192
3193         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
3194         writing a vtype array elem.
3195
3196 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
3197
3198         * assembly.c (build_assembly_name): return FALSE if length of token is
3199         not 16 (if not "null").
3200         (mono_assembly_name_parse_full): return FALSE if value of version,
3201         culture, token or key is 0.
3202         * icall.c (fill_reflection_assembly_name): add boolean arguments to
3203         specify whether public key and public key token must be set to default
3204         value (zero-length byte array) if not available. Set versioncompat to
3205         SameMachine. If public key is available or the default is set, then
3206         set PublicKey flag.
3207         (ves_icall_System_Reflection_Assembly_FillName): if no public key
3208         is available, use empty byte array as default value. On the 2.0
3209         profile, use default value for public key token if not set.
3210         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
3211         profile, use default value for public key if not set. On the 2.0
3212         profile, use default value for public key token if not set.
3213         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
3214         default values for public key and public key token.
3215
3216 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3217
3218         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
3219         field to keep it in synch with the managed object.
3220
3221         * marshal.c (emit_marshal_object): Add support for byref marshalling of
3222         delegates. Fixes #351520.
3223
3224         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
3225         contains defined memory.
3226         
3227         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
3228
3229         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
3230         
3231         * sgen-gc.c (check_consistency): New helper function to do a consistency check
3232         of the GC data structures.
3233
3234         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
3235
3236         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
3237         
3238         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
3239         barrier.
3240         (mono_array_clone_in_domain): Ditto.
3241         (mono_array_clone_in_domain): Ditto.
3242
3243         * threads.c (start_wrapper): Register the thread start argument as a GC root.
3244         (cache_culture): Use a write barrier.
3245
3246         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
3247         (ves_icall_get_property_info): Ditto.
3248
3249         * object.h (MONO_STRUCT_SETREF): New macro.
3250
3251         * class-internals.h (MonoStats): Add some GC statistics.
3252
3253         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
3254
3255 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
3256
3257         * exception.c (mono_exception_from_name_two_strings):
3258         Break from loop after method is found.
3259
3260 2008-01-04  Dick Porter  <dick@ximian.com>
3261
3262         * process.c (process_module_string_read): Rename variable to
3263         reflect correct usage, after fixing bug 345972.
3264
3265 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
3266
3267         * verify.c (mono_type_create_fnptr_from_mono_method): 
3268         created a MonoType function pointer instance to be used during
3269         verification. The verifier releases this memory at end.
3270
3271         * verify.c (mono_method_is_constructor): extracted repeated
3272         checks for constructor into a single class.
3273
3274         * verify.c (do_push_field): use new extracted method
3275         for constructor check.
3276
3277         * verify.c (do_newobj): same.
3278
3279         * verify.c (do_ldftn): renamed to do_load_function_ptr
3280         and make it verify ldvirtftn too.
3281
3282         * verify.c (mono_method_verify: proper verification
3283         of ldvirtftn. release created MonoMethod instances.
3284
3285 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         * verify.c (token_bounds_check): added.
3288
3289         * verify.c (do_ldftn): added.
3290
3291         * verify.c (mono_method_verify): proper verificartion of ldftn.
3292
3293 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3294
3295         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
3296         than the table row count. It's the resposibility of the caller to
3297         make the bounds check and raise the correct error.
3298
3299         * metadata.c (mono_metadata_decode_row_col): Same.
3300
3301         * loader.c (mono_get_method_from_token): perform bounds check
3302         on token for methoddef table.
3303
3304 2007-12-29  Miguel de Icaza  <miguel@novell.com>
3305
3306         * icall.c
3307         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
3308         assert into a negative result, the managed code already coped with
3309         that.
3310
3311         Some folks on Windows reported this error. 
3312
3313 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
3314
3315         * appdomain.c: Bump corlib version.
3316         * icall.c:
3317         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
3318         CultureInfo.CreateCulture to create CultureInfo for name.
3319         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
3320         create CultureInfo for name. Fixes bug #347174.
3321
3322 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
3325         flags.
3326
3327         * verify.c (is_valid_branch_instruction): allow branching to the
3328         first instruction of the protected block.
3329
3330         * verify.c (is_valid_cmp_branch_instruction): same.
3331
3332         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
3333         avoid double initialization.
3334
3335         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
3336         detect which cases the eval stack should just be copied.
3337
3338         * verify.c (mono_method_verify): check if the eval stack
3339         is empty when entering a protected block.
3340
3341 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3342
3343         * verify.c: added is_clause_in_range, is_clause_inside_range,
3344         is_clause_nested and verify_clause_relationship. They perform
3345         the verifications stated in P1 12.4.2.7.
3346
3347         * verify.c (mono_method_verify): remove some unused variables,
3348         add the new exception clause checks, add instruction border
3349         checks for protected block start/end, improved some error 
3350         messages and fixed a bug in the way invalid instruction access
3351         is detected.
3352
3353 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
3356         from GC 7.0 if available.
3357
3358         * object.c: Remove an unused define.
3359         
3360         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
3361
3362         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
3363
3364         * null-gc.c (mono_gc_make_descr_for_array): Implement.
3365
3366         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
3367
3368         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
3369         to take the same arguments as the other make_descr functions.
3370
3371         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
3372
3373         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
3374         directly.
3375
3376         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
3377         mini.c.
3378
3379         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
3380         call to boehm-gc.c.
3381
3382         * boehm-gc.c (mono_gc_register_root): Fix a warning.
3383
3384         * null-gc.c (mono_gc_register_root): Fix a warning.
3385
3386         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
3387
3388         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
3389         (mono_gc_base_init): Call GC_init ().
3390
3391         * null-gc.c: Define mono_gc_register_root () as a no-op.
3392
3393         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
3394
3395 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
3396
3397         * verify.c: add prototype for merge_stacks at top
3398
3399         * verify.c (do_switch): added.
3400
3401         * verify.c (merge_stacks): on some cases the stack merging
3402         was not happening properly. Unequal stack sizes at merge
3403         points should be invalid.
3404
3405         * verify.c (mono_method_verify): added more debug info on stack state.
3406         verify switch properly.
3407
3408 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * method-builder.h: New file, moved the mono_mb_ declarations here from 
3411         marshal.h.
3412
3413         * boehm-gc.c marshal.c: Include method-builder.h.
3414
3415         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
3416
3417         * marshal.c: Remove some code which is now in method-builder.c.
3418
3419 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * method-builder.c: New file, extraction of the method builder functionality 
3422         from marshal.c.
3423
3424         * marshal.c: Move the mb functions into method-builder.c.
3425
3426         * marshal.h marshal.c: Export some mono_mb_... functions.
3427
3428         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
3429
3430         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
3431         the caller.
3432
3433         * class.c (mono_class_get_full): Check the token type in the dynamic case.
3434
3435         * loader.c (mono_field_from_token): Ditto.      
3436
3437         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
3438         type as well.
3439         
3440         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
3441         Fixes #342565.
3442
3443         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
3444         a helper function for setting it.
3445
3446         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
3447
3448         
3449         * assembly.c: Significally simplify code now that referenced assemblies are 
3450         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
3451
3452         * threads.h: Don't include  the internal threads-types.h header file. Fixes
3453         #349952.
3454
3455 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3456
3457         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
3458         instructions that were target of branches or are at protected block boundaries.
3459
3460         * verify.c (in_same_block): handle filter clauses.
3461
3462         * verify.c (is_valid_branch_instruction): added. checks the target of
3463         instructions br or brtrue/false.
3464
3465         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
3466         binary branch instructions such as beq and bge.
3467
3468         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
3469         and made it pin the instruction as been part of the exception block.
3470
3471         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
3472         of in_same_block.
3473
3474         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
3475         of in_same_block.
3476
3477         * verify.c (do_ret): ret from a protected block is unverifiable and
3478         not invalid.
3479
3480         * verify.c (do_static_branch): verify br and br.s instructions.
3481
3482         * verify.c (merge_stacks): add extra param to support detection
3483         of branches in the middle of instructions.
3484         
3485         * verify.c (mono_method_verify): verify branches and exception blocks
3486         that target the middle of instructions. Proper verification of br and br.s.
3487
3488 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
3489
3490         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
3491         skip_visibility field.
3492         (reflection_methodbuilder_from_dynamic_method): Ditto.
3493
3494         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
3495         registrations. Fixes #348193.
3496
3497         * threads.h: Move the internal mono_thread_get_pending_exception () to
3498         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
3499
3500 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
3503         icall registration. Fixes #348193.
3504
3505         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
3506         for corlib classes into object. Fixes #349621.
3507
3508 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
3509
3510         * icall.c (property_accessor_nonpublic): new function to determine
3511         whether an accessor allows a property to be considered non-public.
3512         Returns false for private accessor(s) from parent class, and internal
3513         accessor(s) from parent on 2.0 profile (and higher).
3514         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
3515         to determine whether property should be included if NonPublic flag
3516         is set. Fixes bug #349078.
3517
3518 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
3519
3520         * verify.c (init_stack_with_value): added.
3521
3522         * verify.c (mono_method_verify): extracted common
3523         code for exception initialization into init_stack_with_value.
3524
3525         * verify.c (mono_method_verify): initialize the exception
3526         for handler clauses as well.
3527
3528         * verify.c (mono_method_verify): fix the exception clause
3529         ordering rules, it should use handler end offset and not
3530         start offset.
3531
3532 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
3533
3534         * rawbuffer.c: remove useless warning.
3535
3536 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
3537
3538         * threads.h, threads-types.h: move functions to the correct header
3539         (fixes bug#349952).
3540
3541 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3542
3543         * verify.c (mono_method_verify): proper verification
3544         of exception handling clauses ranges and fallthru in
3545         and out of protected blocks.
3546
3547 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3548
3549         * verify.c (mono_method_verify): fixed compilation issue.
3550
3551 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3552
3553         * verify.c (mono_method_verify): a printf slipped in, changed
3554         to use verifier debug macro.
3555
3556 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * verify.c (is_correct_leave): check for filter clauses.
3559
3560         * verify.c (do_filter): added.
3561
3562         * verify.c (mono_method_verify): property verification of leave.
3563
3564
3565 2007-12-18  Mark Probst  <mark.probst@gmail.com>
3566
3567         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
3568         Win32 build, until we figure out how to do the proper thing on
3569         Win32.
3570
3571 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
3572
3573         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
3574         by the previous patch.
3575         
3576         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
3577         the assembly resolve handler for refonly assemblies.
3578
3579 2007-12-17  Mark Probst  <mark.probst@gmail.com>
3580
3581         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
3582         Make sure only one thread is allowed to commence shutdown, and
3583         don't allow new threads to be started once shutdown is in
3584         progress.
3585
3586 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3587
3588         * verify.c (is_correct_endfilter): added.
3589
3590         * verify.c (is_unverifiable_endfilter): added.
3591
3592         * verify.c (do_endfilter): added.
3593
3594         * verify.c (mono_method_verify): property verification of endfilter
3595         and fixed a corner case or endfinally.
3596
3597 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
3598
3599         * verify.h: new flags to support fail fast of unverifiable code and
3600         do non-strict verification. Non-strict verification is required to
3601         have MS runtime compatibility. There are a huge amount of unverifiable
3602         code that it accepts as verifiable. The strict mode verifies the code
3603         as the specs says.
3604         Non-strict mode will be required in cases where code needs to be
3605         accepted as verifiable but fails under strict mode.
3606
3607         * pedump.c: added support to fail fast and non-strict verification.
3608
3609         * verify.c: added support for both fail fast and non-strict verification.
3610
3611 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * verify.c (is_correct_endfinally): added.
3614
3615         * verify.c (mono_method_verify): property verification of endfinally.
3616
3617 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3618
3619         * verify.c (in_any_block): check for filter clauses.
3620
3621         * verify.c (is_correct_rethrow): added.
3622
3623         * verify.c (mono_method_verify): property verification of rethrow.
3624
3625         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
3626
3627 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3628
3629         * verify.c (do_throw): added.
3630
3631         * verify.c (mono_method_verify): property verification of throw
3632
3633 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
3636         assemblies. Fixes #346425.
3637
3638 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
3639
3640         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
3641         FieldBuilders.
3642
3643         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
3644
3645         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
3646         prevent asserts when this is called with a token which might not be valid.
3647
3648         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
3649         lookup_dynamic_token_class with valid_token == FALSE.
3650
3651         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
3652
3653         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
3654
3655         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3656         
3657 2007-12-10  Mark Probst  <mark.probst@gmail.com>
3658
3659         * gc.c: Don't delay threadpool thread finalization unless Mono is
3660         shutting down.
3661
3662 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
3663
3664         * threads.c: turn an assert into a non-fatal warning.
3665
3666 2007-12-09  Robert Jordan  <robertj@gmx.net>
3667
3668         * icall.c (GetVirtualMethod): Add missing argument validation.
3669
3670 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * verify.c (do_cast): added.
3673
3674         * verify.c (mono_method_verify): property verification of castclass and isinst.
3675
3676
3677 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3678
3679         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
3680
3681         * verify.c (do_stelem): added.
3682
3683         * verify.c (mono_method_verify): property verification of stelem.X.
3684
3685 2007-12-07  Mark Probst  <mark.probst@gmail.com>
3686
3687         * class.c, class-internals.h: Introduce an environment variable
3688         (MONO_GENERIC_SHARING) through which the extent of generic code
3689         sharing can be controlled (share all classes, share only corlib
3690         classes, or share nothing).
3691
3692         * object.c: Only create runtime generic context for classes for
3693         which sharing is enabled.
3694
3695 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3696
3697         * verify.c (do_ldelem): refactor it to work with ldelem.any.
3698
3699         * verify.c (mono_method_verify): property verification of ldelem.any.
3700
3701 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3702
3703         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
3704         added ldelem.X opcodes.
3705
3706         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
3707
3708         * verify.c: proper verification of ldelem.X 
3709
3710 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
3713
3714 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3715
3716         * verify.c (mono_method_verify): null literal requires special handling,
3717         the value pushed on stack need to be flagged as so.
3718
3719         * verify.c (do_ldelema): Verify ldelema properly.
3720
3721 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3722
3723         * verify.c: Verify ldlen properly.
3724
3725 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
3728         to the target object's type. Fixes #346160.
3729
3730 2007-12-05  Dick Porter  <dick@ximian.com>
3731
3732         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
3733         Solaris needs the same workaround as BSD-derived systems.  Fixes
3734         bug 323524, patch by Burkhard Linke
3735         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
3736
3737 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
3738
3739         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
3740         handle to use when error dialog is shown; otherwise, update mask
3741         to show no error dialog when an error occurs.
3742
3743 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
3746
3747         * class.c (mono_class_get_field_default_value): New helper function to initialize
3748         field->def_type and field->data.
3749
3750 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
3753         the general one.
3754
3755         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
3756
3757         * marshal.c: Avoid depending on delegate->method_info being set.
3758
3759         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
3760         
3761         * object.c (mono_delegate_ctor): Set delegate->method.
3762
3763         * object-internals.h (struct _MonoDelegate): Add 'method' field.
3764
3765         * appdomain.c: Bump corlib version.
3766
3767 2007-11-27  Raja R Harinath  <harinath@gmail.com>
3768
3769         * metadata.c (mono_generic_inst_equal_full): Short-circuit
3770         equality check if we're comparing canonicalized MonoGenericInsts.
3771
3772 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * class.c (generic_array_methods): Call mono_class_setup_methods () before
3775         accessing class->methods.
3776
3777 2007-11-22  Dick Porter  <dick@ximian.com>
3778
3779         * threads.c: Ensure that the synch_cs is set before trying to use
3780         it.
3781
3782 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
3783
3784         * profiler.c: r89126 broke the statistial profiler, unbreak.
3785
3786 2007-11-22  Martin Baulig  <martin@ximian.com>
3787
3788         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
3789
3790         * mono-debug.c
3791         (mono_debug_debugger_version): Bump to 3.
3792         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
3793         -> mono_debugger_class_initialized().
3794
3795         * mono-debug-debugger.c
3796         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
3797
3798         * class.c
3799         (mono_debugger_start_class_init_func): Removed.
3800         (mono_debugger_class_loaded_methods_func): Added.
3801         (mono_class_setup_methods): Call it here.
3802
3803 2007-11-22  Martin Baulig  <martin@ximian.com>
3804
3805         * mono-debug.c
3806         (mono_debug_add_delegate_trampoline): New public method.
3807         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
3808
3809         * mono-debug.h
3810         (MonoSymbolTable): Added `global_data_table'.
3811         (MonoDebuggerTypeKind): Removed.
3812
3813 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
3814
3815         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
3816         these methods.
3817
3818         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3819         
3820 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
3821
3822         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
3823
3824 2007-11-20  Martin Baulig  <martin@ximian.com>
3825
3826         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
3827
3828         * mono-debug-debugger.c
3829         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
3830         (mono_debugger_remove_breakpoint): Likewise.
3831         (mono_debugger_check_breakpoints): Likewise.
3832         (mono_debugger_register_class_init_callback): New public method.
3833         (mono_debugger_remove_class_init_callback): Likewise.
3834         (mono_debugger_add_type): Likewise.
3835
3836         * mono-debug-debugger.h
3837         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
3838
3839 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
3840
3841         * class.c: more interface implementations needed for the
3842         array enumerator (fixes bug #341112).
3843
3844 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
3845
3846         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
3847         fix ParamName of ArgumentNullExceptions.
3848
3849 2007-11-17  Miguel de Icaza  <miguel@novell.com>
3850
3851         * reflection.c (mono_reflection_encode_sighelper): Generate the
3852         modopts and modreqs.   I have a useless test that crashes monodis,
3853         but that shows the code working.
3854
3855 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
3856
3857         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
3858         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
3859
3860 2007-11-15  Dick Porter  <dick@ximian.com>
3861
3862         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
3863         When joining a thread, it's the thread that's calling Join that
3864         gets WaitSleepJoin state not the target.  Fixes the standalone
3865         test case in bug 334740, and hopefully the whole bug too.
3866
3867 2007-11-15  Dick Porter  <dick@ximian.com>
3868
3869         * process.c: Read file version info from the files pointed at by
3870         process modules, not the current process.  Fixes bug 315969.
3871
3872         Use windows typedef names in some places to fix warnings on the
3873         windows build.
3874
3875 2007-11-15  Mark Probst  <mark.probst@gmail.com>
3876
3877         * image.c, metadata-internals.h: Added a generic_class_cache hash
3878         to MonoImage for looking up generic classes when sharing generics.
3879
3880 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
3881
3882         * sgen-gc.c: warning cleanups.
3883
3884 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
3887         inherited properties.
3888
3889 2007-11-14  Mark Probst  <mark.probst@gmail.com>
3890
3891         * object.c, class-internals.h: Added more information to the
3892         runtime generic context.
3893
3894 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
3895
3896         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
3897         instead of just the target method. Generalize the abstract method handling to
3898         handle any non-static method.
3899
3900         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3901         mono_marshal_get_delegate_invoke () signature change.
3902
3903 2007-11-13  Mark Probst  <mark.probst@gmail.com>
3904
3905         * class.c, class-internals.h: Made
3906         mono_type_get_basic_type_from_generic () public.  Fixed member
3907         access check for shared generics.
3908
3909         * loader.c: Don't insert field into field cache if it's part of a
3910         non-inflated generic class.
3911
3912         * domain.c, domain-internals.h: The generic sharing context is now
3913         part of the jit info data structure.  Added two accessor
3914         functions.
3915
3916 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
3919         the array Get/Set/Address methods, since the JIT inlines them.
3920
3921         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
3922
3923         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
3924         (mono_image_init): Initialize runtime_invoke_direct_cache.      
3925
3926         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3927         mono_marshal_get_delegate_invoke signature change.
3928
3929         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
3930         an additional argument. Add support for invoking abstract methods.
3931
3932         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
3933
3934         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
3935
3936 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3937
3938         * class.c: Do field layout for open generic classes as well.
3939
3940 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3941
3942         * gc.c, gc-internal.h: Don't finalize threadpool threads with
3943         other objects, because the threadpool is still around.  Put them
3944         in a list instead and after finalizing all other objects in the
3945         root domain shut down the thread pool and then finalize the
3946         threads.  Fixes bug #337383.
3947
3948         * threads.c, thread-types.h: New mono_thread_create_internal()
3949         function for marking a thread with the threadpool flag before it
3950         started.  Set synch_cs to NULL after freeing it.
3951
3952         * threadpool.c: Mark threadpool threads before they start.
3953
3954 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
3955
3956         * reflection.h, reflection.c: don't export random functions
3957         and lazy load dbnull and missing objects.
3958
3959 2007-11-07  Jonathan Chambers <joncham@gmail.com>
3960
3961         * class.c: Initialize COM types if COM interfaces
3962         are present (not just COM classes).
3963         
3964         Code is contributed under MIT/X11 license.
3965
3966 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3967         * reflection.c:
3968         create_dynamic_mono_image: hook module profiler events (dynamic case).
3969         mono_image_basic_init: hook assembly profiler events (dynamic case).
3970
3971 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3972         * profiler.c:
3973         simple_appdomain_unload: completely terminate the profiler
3974         instead of only processing the statistical samples.
3975         simple_shutdown: make sure this is really called exactly once,
3976         even in multithreaded applications, and always listen to
3977         appdomain events.
3978         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
3979         here, the "[un]load" functions will do it.
3980         Fixes bugs #333791 and #325261.
3981
3982 2007-11-07  Geoff Norton  <gnorton@novell.com>
3983
3984         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
3985         rather than depend on __APPLE__.
3986
3987 2007-11-07  Mark Probst  <mark.probst@gmail.com>
3988
3989         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
3990
3991 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
3992
3993         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
3994         UTF16 MonoString. Fix the crash from bug #335488
3995
3996 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
3997
3998         * marshal.c: Correct (for non-Win32 OS) length != size in 
3999         mono_string_from_bstr. Fix #339530.
4000
4001 2007-11-06  Geoff Norton  <gnorton@novell.com>
4002
4003         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
4004         to succeed
4005
4006 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
4007
4008         * process.c: Added run-time GetProcessId API detection for Windows.
4009
4010 2007-11-04  Miguel de Icaza  <miguel@novell.com>
4011
4012         * reflection.c  (mono_param_get_objects): If a parameter has the
4013         attribute [System.Runtime.InteropServices.Optional] we should
4014         set the DefaultValue of the ParameterInfo to be
4015         System.Reflection.Missing instead of DBNull.
4016
4017         See bug #339013.
4018
4019         (mono_get_reflection_missing_object): New method,
4020         returns the System.Reflection.Missing.Value singleton instance.
4021
4022 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
4023
4024         * culture-info-table.h : regenerated.
4025
4026 2007-11-02  Jonathan Chambers <joncham@gmail.com>
4027
4028         * icall.c: Use GetEnvironmentStrings on windows
4029         so we are using the same environment block as 
4030         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
4031         #333740.
4032         
4033         Code is contributed under MIT/X11 license.
4034
4035 2007-10-31  Martin Baulig  <martin@ximian.com>
4036
4037         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
4038
4039         * mono-debug-debugger.h
4040         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4041
4042 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
4043
4044         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
4045         classes.
4046
4047 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
4048
4049         * culture-info-table.h : regenerated.
4050
4051 2007-10-30  Robert Jordan  <robertj@gmx.net>
4052
4053         * icall-def.h, icall.c:
4054         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
4055
4056         Code is contributed under MIT/X11 license.
4057
4058 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * class.c (mono_class_setup_vtable): Find the inflated methods in the
4061         inflated class instead of inflating them again.
4062         
4063         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
4064         dynamic case.
4065
4066         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
4067         Call setup_supertypes () after klass->parent is set.
4068         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
4069
4070         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
4071         for inflated instances of not yet created dynamic generic classes.
4072         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
4073         times from inflated_method.
4074         (methodbuilder_to_mono_method): Ditto.
4075
4076 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
4077
4078         * gc.c: code cleanup and removed old untested option of not creating the
4079         finalizer thread.
4080
4081 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
4082
4083         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
4084         creating a jump trampoline for dynamic methods.
4085
4086 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
4087
4088         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
4089         generic TypeBuilders when called from another method of the same type (bug #335131).
4090
4091
4092 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
4093
4094         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
4095         doesn't seem to work perfectly.
4096         
4097         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
4098         called multiple times.
4099         (methodbuilder_to_mono_method): Ditto.
4100         (resolve_object): Inflate FieldBuilder's.
4101
4102 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4103
4104         * string-icalls.c, string-icalls.h, appdomain.c: patch from
4105         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
4106         RemoveEmptyEntries in the string.Split implementation (bug #322375).
4107
4108 2007-10-26  Dick Porter  <dick@ximian.com>
4109
4110         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
4111         Thread initialisation changes
4112
4113 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
4114
4115         * verify.c: fix compatibility check between arrays and System.Array
4116
4117 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
4118
4119         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
4120         too. Fixes #336999.
4121
4122 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * object.c (mono_value_box): Use typed allocation here.
4125
4126 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
4127
4128         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
4129         trampoline instead of compiling the method right away.
4130
4131         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
4132
4133 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
4134
4135         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
4136         related fields for dynamic classes. Fixes #334493.
4137
4138 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
4141         
4142         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
4143
4144         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
4145         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
4146
4147         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
4148
4149         * reflection.c (create_generic_typespec): Initialize klass->generic_container
4150         if needed.
4151         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
4152
4153 2007-10-18  Jonathan Chambers <joncham@gmail.com>
4154
4155         * marshal.c: Use correct key when removing item
4156         from ccw_hash.
4157         
4158         Code is contributed under MIT/X11 license.
4159
4160 2007-10-17  William Holmes  <billholmes54@gmail.com>
4161
4162         *marshal.c: Adding a case to marshal booleans to U1
4163
4164         Code is contributed under MIT/X11 license.
4165
4166 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * class.c (mono_class_from_name): Search the modules compromising dynamic
4169         assemblies. Fixes #331601.
4170
4171 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
4174         exception if the type name contains an assembly component. Fixes #334203.
4175
4176         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
4177         modules inside dynamic assemblies. Fixes #334200.
4178         
4179         * reflection.c: Set image->public_key and image->public_key_length;
4180
4181         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
4182         fields.
4183
4184         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
4185         
4186 2007-10-16  Mark Probst  <mark.probst@gmail.com>
4187
4188         * metadata.c: Implemented correct comparing of generic classes.
4189         An inflated generic class can be equal to a non-inflated one if it
4190         is inflated with generic type variables as type arguments.  Fixes
4191         bug #333798.
4192
4193 2007-10-15  Dick Porter  <dick@ximian.com>
4194
4195         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
4196         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
4197         81646.
4198
4199         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
4200         instead of a monitor lock.  This means that monitor_try_enter and
4201         co can set the thread state safely.
4202         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
4203         thread_interrupt_requested, so interrupt actually works.
4204
4205         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
4206         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
4207         state accessor function
4208
4209 2007-10-15  Martin Baulig  <martin@ximian.com>
4210
4211         * mono-debug.h
4212         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
4213         the debugger with the current runtime.
4214
4215 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
4216
4217         * object.c, object-internals.h: added the ability to set a single
4218         trampoline for all the slots in a vtable.
4219
4220 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4221
4222         * marshal.c: deal with a possible race condition during multicast
4223         delegate invocation.
4224
4225 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4226
4227         * class.c: ensure value type methods don't have the synchronized
4228         flag set.
4229
4230 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
4231
4232         * string-icalls.c, string-icalls.h: reverted unapproved patch that
4233         breaks the build.
4234
4235 2007-10-11  Joel Reed  <joelwreed@comcast.com>
4236
4237         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
4238         to take an options parameter so that empty entries can be removed during
4239         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
4240
4241 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4242
4243         * marshal.c: make sure we don't store the signature from a dynamic
4244         method into the runtime invoke cache (bug #327189).
4245
4246 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4247
4248         * marshal.c: make sure the wrapper methods are properly initialized.
4249
4250 2007-10-11  Mark Probst  <mark.probst@gmail.com>
4251
4252         * metadata.c, metadata-internals.h: Generalized
4253         mono_type_stack_size() to mono_type_stack_size_internal() which
4254         takes an additional argument specifying whether it allows open
4255         types.
4256
4257 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4258
4259         * verify.c (do_invoke_method): handle typedbyref params
4260         correctly and check for unverifiable return values.
4261
4262         * verify.c (do_newobj): fix a warning.
4263
4264 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4265
4266         * verify.c: don't tread typedbyref as allways unverifable,
4267         so uses, like (ld/st)loc.0 are valid. verify for the cases
4268         that it matters, like boxing related operations.
4269
4270 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4271
4272         * verify.c: add verification of the newobj opcode. verification
4273         of delegate instantation still missing due ldftn and virldftn not
4274         pushing the function type on stack
4275
4276 2007-10-08  Mark Probst  <mark.probst@gmail.com>
4277
4278         * class-internals.h: Runtime generic context data structure
4279         definition.
4280
4281         * object.c: Initialization of runtime generic context at runtime
4282         vtable creation time.
4283
4284 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
4285         * class.c (mono_class_create_from_typedef,
4286         mono_class_from_generic_parameter, mono_ptr_class_get,
4287         mono_fnptr_class_get, mono_bounded_array_class_get)
4288         * domain.c (mono_domain_create, mono_domain_free)
4289         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
4290         * image.c (do_mono_image_load, mono_image_close):
4291         Hooked up load-unload profiler events.
4292
4293 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
4294
4295         * domain.c: track statistics about the actual amount of native code
4296         allocated.
4297
4298 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4299
4300         * class.c: the valuetype enumerators don't have the additional
4301         supertypes interfaces.
4302
4303 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4304
4305         * class.c: need more interfaces setup for the IEnumerator<T>
4306         object created for arrays (tests/ienumerator-interfaces.2.cs).
4307
4308 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
4311
4312 2007-10-05  Alp Toker  <alp@atoker.com>
4313
4314         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4315         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4316         #315863.
4317
4318 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4319
4320         * verify.c (verify_type_compatibility_full): verification of
4321         compatibility improved, validates correctly non-strict checks between
4322         native int and I4 types different than (unsigned)int32.
4323
4324         * verify.c (do_store_indirect): added, do all verification of
4325         ldind.X opcodes. 
4326
4327         * verify.c (get_load_indirect_mono_type): renamed to
4328         get_indirect_op_mono_type, as it now returns the MonoType for 
4329         ldind.X and stind.X opcodes.
4330
4331 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4332
4333         * reflection.c: Fix the encoding of generic type definition for
4334         TypeBuilders.
4335
4336         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
4337         mono_image_typedef_or_ref but allows to specify if typespec lookups should
4338         be made. Typespec check is done prior to typeref cache lookup.
4339
4340         * reflection.c (mono_image_typedef_or_ref): now just delegate to
4341         mono_image_typedef_or_ref_full.
4342
4343         * reflection.c (encode_generic_class): encode the generic class
4344         directly instead of calling encode_type.
4345
4346         * reflection.c (encode_type): encode the generic type definition
4347         MonoClass as a generic instantiation.
4348
4349         * reflection.c (create_typespec): cache typespec tokens in
4350         the assembly->typespec cache. Don't create typespec for a generic
4351         instance MonoClass. Create typespec for the generic type defintion.
4352
4353         * reflection.c (create_generic_typespec): encode the generic
4354         class directly instead of calling encode_type.
4355
4356         * reflection.c (mono_image_create_token): encode the generic
4357         type definition not using a typespec for MonoType instances.
4358
4359
4360 2007-10-04  Raja R Harinath  <rharinath@novell.com>
4361
4362         Fix #328812
4363         * class.c (mono_image_init_name_cache): Don't return nested
4364         'protected internal' classes.
4365         (mono_class_from_name_case): Likewise.
4366
4367 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
4368
4369         * icall-def.h, icall.c : get_bundled_machine_config() is now the
4370           common function used by both DefaultConfig in System.dll and
4371           InternalConfigurationHost in System.Configuration.dll.
4372
4373 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4374
4375         * class.c: automatically add to vectors only a few essential explicit
4376         generic interfaces. The rest of the interfaces that arrays should
4377         provide are currently implicitly added (but still not lazily, see the
4378         design in the discussion of bug#325495 for the details of what is
4379         needed for that). Additionally, implicit interfaces are assigned the
4380         same vtable slot as the explicit interfaces (as they are compatible):
4381         this enables huge memory savings since we don't need to instantiate
4382         as many memthods and as large vtables anymore. Also, Since
4383         GetEnumerator<T> returns an instance of a type that is required to
4384         support a similarly large set of interfaces as arrays, we add
4385         implicit interfaces and interface offset sharing support to those
4386         types, too. This change adds all the required interfaces so that
4387         the anonarray.cs test case in the bug report works (we don't add
4388         all the interfaces to arrays of arrays 3-level deep and more because
4389         of the memory requirements explained in the bug and since they are much
4390         less common: the lazy-loading support will enabled them to work, too).
4391
4392 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4393
4394         * verify.c (merge_stacks): major clean up, all type compatibility
4395         checks are done by verify_type_compatibility. This fix my earlier lack
4396         of understanding of the CLR type system and merge_stacks no longer looks
4397         scary.
4398
4399         * verify.c: fixed some bad spelling.
4400
4401 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
4404         a given stack slock.
4405         
4406         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
4407         verify_type_compatibility_full. This removed a near indentical function and fixed
4408         handling of Int32 and IntPtr across all opcodes.
4409
4410 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4411
4412         * class.c: only vectors have the additional generic interfaces.
4413
4414 2007-10-01  Jonathan Chambers <joncham@gmail.com>
4415
4416         * mono-config.c: Use g_strcasecmp instead of
4417         strcasecmp like everywhere else to fix
4418         compilation with MSVC.
4419         
4420         Code is contributed under MIT/X11 license.
4421
4422 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4423
4424         * object.c, object-internals.h: refactored the IMT code to enable
4425         building a single slot at a time and lazily creating the IMT trampolines
4426         and thunks.
4427
4428 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
4431
4432         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
4433         Fixes #328501.
4434         
4435 2007-09-29  Raja R Harinath  <harinath@gmail.com>
4436
4437         * loader.c (method_from_methodspec): Rearrange to avoid
4438         un-necessary exposition.  Don't assert out if the method's
4439         declaring type is a generic type definition.
4440
4441 2007-09-28  Martin Baulig  <martin@ximian.com>
4442
4443         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
4444
4445 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
4446
4447         * class-internals.h: optimize field layout of MonoClass to
4448         requires less cachelines at runtime and save a few bytes on 64 bit
4449         systems.
4450
4451 2007-09-28  Jb Evain  <jbevain@novell.com>
4452
4453         * reflection.c: when encoding type names in custom attributes,
4454         if the type is a closed generic type, its generic arguments
4455         have to be serialized as AssemblyQualifiedName, so that when
4456         they are deserialized, it's possible to re-create them properly.
4457         Fixes #329450.
4458
4459
4460 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4461
4462         * object.c, class-internals.h: added delegate-creation counter.
4463
4464 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
4465
4466         * class.c: cleanup of the code that synthetizes interfaces for
4467         arrays in 2.0: saves quit a bit of corlib mempool memory.
4468         Code to fix bug #325495 ifdeffed out for now until the issues
4469         with memory usage and O(n^2) behaviour are fixed.
4470
4471 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4472
4473         * marshal.c: when possible, do not duplicate the name of the methods
4474         in the method builder and in the generated MonoMethod.
4475
4476 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4477         * verify.c: added support for type checking ldind_* opcodes.
4478
4479 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
4482         which is used to distinguish the fully open instantiation of a TypeBuilder
4483         with the rest. This temporary hack is required to restore the property that
4484         the fully open instantiation is the same type of the generic type definition.
4485
4486         * class-internals.h (mono_generic_class_is_generic_type_definition):
4487         new function as part of the internal API.
4488
4489         * class.c (inflate_generic_type): return NULL when the generic inst is
4490         fully open. The fully open generic type is now the same as the generic type
4491         definition for non TypeBuilder types.
4492
4493         * class.c (mono_generic_class_get_class): removed assert since it is
4494         no longer valid, gklass->cached_class can point to the generic type definition.
4495
4496         * class.c (mono_generic_class_is_generic_type_definition): new.
4497
4498         * metadata.c (mono_generic_class_hash): added is_tb_open field
4499         to the hash calculation.
4500
4501         * metadata.c (free_generic_class): if the generic class is associated
4502         with the generic type definition, its field will come from the mempool and
4503         must not be freed.
4504
4505         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
4506         new, this function identifies the corner case of a TypeBuilder fully open
4507         instantiation.
4508
4509         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
4510         for lookup. Set gclass->cached_class to be the container class in case of
4511         the fully open instantiation of non TypeBuilder types.
4512
4513         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
4514         to compare generic classes.
4515
4516         * reflection.c (method_encode_methodspec): remove assert that
4517         no longer is valid.
4518
4519         * reflection.c (mono_reflection_generic_class_initialize): add
4520         an aditional assert to ensure the proper type is used.
4521
4522 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
4523
4524         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
4525         to enjoy it.
4526
4527 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4528
4529         * verify.c (push_arg): Fixed support for ldarga
4530         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
4531         MonoType used as first arg in case of instance calls.
4532
4533 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4534
4535         * verify.c: Support for verifying VAR and MVAR types, 
4536
4537 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * icall.c (ves_icall_get_property_info): Set the reflected type of the
4540         accessors correctly.
4541
4542 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
4543
4544         * threads.c: support OSX and other systems in
4545         mono_thread_get_stack_bounds (bug #328026).
4546
4547 2007-09-25  Martin Baulig  <martin@ximian.com>
4548
4549         * mono-debug.h
4550         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
4551
4552 2007-09-24  Martin Baulig  <martin@ximian.com>
4553
4554         * mono-debug.h
4555         (MonoDebugClassEntry): Moved the definition of this struct into
4556         mono-debug.c to make it private.
4557
4558         * mono-debug.c
4559         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
4560         type table per symbol file, we don't need to store the symfile id
4561         any longer.
4562
4563 2007-09-24  Martin Baulig  <martin@ximian.com>
4564
4565         Create one type table per symbol file, since a `MonoClass *' gets
4566         invalid when its image is unloaded.
4567
4568         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
4569         (MonoDebugHandle): Added `type_table'.
4570
4571 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4572
4573         * mempool.c, mempool.h: added mono_mempool_new_size () API
4574         to be able to specify a smaller initial size for the pool.
4575         Adjusted the code to slowly increase pool size before using
4576         the previous default size.
4577         * image.c: use a small initial size for image mempools.
4578
4579 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
4580
4581         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
4582         Fixes ##320990.
4583
4584         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
4585         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
4586
4587 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * metadata.c (mono_type_create_from_typespec): Remove an invalid
4590         free. Fixes #327438.
4591
4592 2007-09-21  Raja R Harinath  <harinath@gmail.com>
4593
4594         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
4595         generic instantiations, etc.
4596         <MONO_TYPE_ARRAY>: Likewise.
4597
4598 2007-09-21  Martin Baulig  <martin@ximian.com>
4599
4600         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
4601         these structs were never defined.
4602         (MonoDebugHandle): Removed the `_priv' field, it was never used.
4603
4604 2007-09-21  Martin Baulig  <martin@ximian.com>
4605
4606         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
4607
4608 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
4609
4610         * image.c: removed the guid hash tables: we can get the same info
4611         without the additional memory usage hit (partially fixes also bug #327052).
4612
4613 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4614
4615         * profiler.h, profiler-private.h, profiler.c: add a new profiler
4616         event to handle unloading methods. After the event is called, the
4617         corresponding MonoMethod* must be considered invalid.
4618         * loader.c (mono_free_method): call the new mono_profiler_method_free
4619         event.
4620
4621 2007-09-20  Mark Probst  <mark.probst@gmail.com>
4622
4623         * domain-internals.h: New flag in MonoJitInfo which marks shared
4624         generic methods.  New hash table (shared_generics_hash) in
4625         MonoDomain to keep track of shared generic methods.  Prototypes
4626         for functions to register and lookup shared generic methods.
4627
4628         * domain.c: Support for registering and looking up shared generic
4629         methods via a hash table (shared_generics_hash) in MonoDomain.
4630
4631         * class-internals.h: New exception to signal failure of shared
4632         compilation of a generic method.  New counters for generics
4633         sharing in MonoStats.
4634
4635 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
4636
4637         * image.c, metadata-internals.h: don't keep a file descriptor open
4638         for loaded assemblies (bug#325988).
4639
4640 2007-09-19  Raja R Harinath  <rharinath@novell.com>
4641
4642         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
4643         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
4644         use the corresponding datatypes.
4645         (type_in_image): Update to changes.
4646         (CleanForImageUserData): Simplify.
4647         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
4648         Avoid quadratic behaviour in handling the "stolen" list by
4649         separating the filter predicate out, and by prepending the stolen
4650         items rather than appending them.
4651         (steal_ginst_in_image): Likewise.
4652         (mono_metadata_clean_for_image): Update to changes.
4653
4654 2007-09-19  Martin Baulig  <martin@ximian.com>
4655
4656         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
4657
4658 2007-09-19  Martin Baulig  <martin@ximian.com>
4659
4660         * mono-debug.c (mono_debug_cleanup): Don't call
4661         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
4662
4663 2007-09-19  Raja R Harinath  <harinath@gmail.com>
4664
4665         Fix crash on 'make run-test' in mcs/errors
4666         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
4667         Avoid more potential allocations in mono_class_from_mono_type.
4668         (ginst_in_image): Update to changes.
4669         (gclass_in_image): Rearrange slightly.
4670
4671 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4672
4673         * class.c (mono_class_init): Move the code that sets up class->methods to 
4674         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
4675
4676         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
4677         canonical instance of an inflated generic signature.
4678         (mono_type_create_from_typespec): Remove an invalid free.
4679
4680         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
4681
4682 2007-09-18  Marek Habersack  <mhabersack@novell.com>
4683
4684         * domain-internals.h: added a declaration of the
4685         mono_assembly_load_full_nosearch internal function.
4686
4687         * assembly.c (mono_assembly_load_with_partial_name): use
4688         mono_try_assembly_resolve return value properly.
4689         (mono_assembly_load_full_nosearch): copied the function body from
4690         mono_assembly_load_full, without the code to invoke assembly
4691         search hooks.
4692         (mono_assembly_load_full): calls the above new function and if the
4693         assembly is not resolved, invokes the search hooks.
4694
4695         * appdomain.c (mono_runtime_init): restore the global postload
4696         assembly search handlers.
4697
4698 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * class.c (mono_class_init): Make sure class->methods and class->properties
4701         are never NULL in the generics case.
4702
4703         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
4704
4705 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * metadata.c (free_generic_class): Disable some code to fix the build.
4708
4709         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
4710
4711         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
4712         from the image mempool.
4713
4714         * metadata.c (free_generic_class): Free more data from the inflated class.
4715
4716         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
4717
4718         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
4719         mempool.
4720         (mono_type_create_from_typespec): Ditto.
4721
4722         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
4723         MonoImage to the caller.
4724         (mono_init_internal): Save the opened image in a global variable.
4725         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
4726
4727         * reflection.c (resolve_object): Fix a leak.
4728
4729         * metadata.c: Fix the freeing of data in the generics caches.
4730         
4731         * metadata.c (free_generic_inst): Comment this out to fix the build.
4732         (free_generic_class): Ditto.
4733
4734         * metadata.c: Free cached generic methods, instantinations and classes when
4735         they are removed from the caches.
4736         (mono_metadata_free_type): Free the type itself.
4737
4738         * class.c: Free the result of mono_class_inflate_generic_type () in a few
4739         places.
4740
4741 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4742
4743         * boehm-gc.c: restrict managed allocs to __thread supporting
4744         architectures.
4745
4746 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
4749         (mono_generic_class_get_class): Fix a leak.
4750
4751         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
4752         mono_metadata_free_type ().
4753         (mono_metadata_inflate_generic_inst): Fix a leak.
4754
4755 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * mono-debug.c (free_header_data): Fix a leak missed earlier.
4758
4759         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
4760         mempool.
4761
4762         * mono-debug.c (mono_debug_close_image): Fix call to 
4763         g_hash_table_remove ().
4764
4765 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4766
4767         * icall-def.h: redirect all the string ctor to the managed
4768         CreateString () methods.
4769         * string-icalls.c, string-icalls.h: removed dead code for string
4770         ctors and icalls.
4771
4772 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4773
4774         * mono-debug.c: Fix memory leaks.
4775
4776 2007-09-14  Jonathan Chambers <joncham@gmail.com>
4777
4778         * threads-types.h: Implement mono_hazard_pointer_set and 
4779         mono_hazard_pointer_clear macros using do/while(0) to fix
4780         compilation with MSVC.
4781         
4782         Code is contributed under MIT/X11 license.
4783
4784 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
4787         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
4788
4789 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4790
4791         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
4792         icalls.
4793
4794 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4795
4796         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
4797         managed-code allocated as well.
4798
4799 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * class.c (mono_class_is_assignable_from): Add support for generic variance.
4802
4803 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4804
4805         * boehm-gc.c: fixed the build after the AOT changes.
4806
4807 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * wrapper-types.h: Add an ALLOC wrapper type.
4810
4811         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
4812         reference managed allocator methods.
4813
4814 2007-09-12  Marek Safar  <marek.safar@gmail.com>
4815
4816         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
4817         of Type array and not MonoType, a fix suggested by Hari.
4818         
4819 2007-09-12  Jonathan Chambers <joncham@gmail.com>
4820
4821         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
4822         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
4823         
4824         Code is contributed under MIT/X11 license.
4825
4826 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4827
4828         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
4829
4830 2007-09-12  Marek Habersack  <mhabersack@novell.com>
4831
4832         * image.c (do_mono_image_open): if assembly file fails to open and
4833         MONO_IOMAP is in effect, try to find the path in a
4834         case-insensitive way.
4835
4836         * appdomain.c (mono_runtime_init): do not install postload hooks -
4837         tests show that MS.NET doesn't use anything of that sort to
4838         trigger the AppDomain.AssemblyResolve event.
4839         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
4840         made non-static.
4841         (mono_runtime_init): init portability helpers here.
4842
4843         * assembly.c (mono_assembly_load_with_partial_name): if other   
4844         attempts fail, trigger the AppDomain.AssemblyResolve event handler
4845         to resolve the assembly.
4846
4847         * domain-internals.h: added mono_try_assembly_resolve and marked
4848         it as internal.
4849
4850 2007-09-11  Jb Evain  <jbevain@novell.com>
4851
4852         * object-internals.h (MonoReflectionDynamicMethod): add
4853         a `MonoReflectionType *owner` field. The owner is used
4854         * reflection.c:
4855         (mono_reflection_create_dynamic_method): use the owner of the dynamic
4856         method as the class declaring the dynamic method.
4857         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
4858         dynamic method to the declaring type of the methodbuilder.
4859
4860 2007-09-11  Mark Probst  <mark.probst@gmail.com>
4861
4862         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
4863         rules for calling methods via reflection.
4864
4865 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
4866
4867         * reflection.c (resolve_object): Add support for MonoGenericClass. 
4868         Inflate MonoType's.
4869
4870 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
4871
4872         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
4873         provide a managed method that does fast allocations without needing
4874         a managed->unmanaged transition. Boehm GC implementation currently
4875         enabled for ptrfree objects on sane architectures.
4876
4877 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4878
4879         * marshal.c, marshal.h: exported a couple of useful functions and
4880         added mono_mb_get_label () to easily handle backward branches.
4881
4882 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
4883
4884         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
4885
4886 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4887
4888         * loader.c (find_method): Fixed the regression introduced while
4889         fixing bug #81466.
4890
4891 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
4892
4893         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
4894         well.
4895         
4896         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
4897         icall.c reflection.c: Pass a MonoGenericContext argument to 
4898         mono_lookup_dynamic_token ().
4899
4900         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
4901         #82744.
4902         
4903 2007-09-09  Robert Jordan  <robertj@gmx.net>
4904
4905         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
4906         for generic methods.
4907
4908         * object.c (mono_object_get_virtual_method): Handle generic methods.
4909         Fixes bug #78882.
4910
4911         Code is contributed under MIT/X11 license.
4912
4913 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4914
4915         * image.c: fix locking in mono_image_load_file_for_image ().
4916
4917 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
4918
4919         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
4920         used only as a cache: added an icall to fill it.
4921
4922 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
4923
4924         * reflection.h: exposed mono_reflection_free_type_info
4925         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
4926         since mono_reflection_bind_generic_parameters makes a copy of it.
4927         * reflection.c (free_type_info): subinfos should be freed.
4928         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
4929         made non static.
4930         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
4931         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
4932         this fixes #82695 and #81726.
4933    
4934
4935 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
4936
4937         * process.h, process.c:  added support for user profile/info in
4938           ProcessStartInfo. For now only Windows works.
4939
4940 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4941
4942         * metadata.c: consider the generic arguments when comparing
4943         signatures (bug #82614).
4944
4945 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4946
4947         * cil-coff.h, image.c: updated assembly loader to cope with the
4948         PE32+ 64 bit file format.
4949
4950 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4951
4952         * assembly.c, class.c, domain.c, loader.c: remove useless
4953         inclusion of cil-coff.h.
4954
4955 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
4956
4957         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
4958         if interface is marked with CoClassAttribute. 
4959    
4960         Code is contributed under MIT/X11 license.
4961
4962 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4963
4964         * sgen-gc.c: ensure no object from the to space is copied again or finalized
4965         if it's seen twice in major collections.
4966
4967 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4968
4969         * sgen-gc.c: big objects are not copied to the gray area, but they
4970         need to be considered for scanning, too, if they are brought alive
4971         by an object ready for finalizations or a survived one.
4972
4973 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4974
4975         * sgen-gc.c: properly account the number of disappearing links when
4976         they are nullified.
4977
4978 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4979
4980         * sgen-gc.c: share the code to scan the registered roots between the
4981         different types of collections.
4982
4983 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
4986
4987 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
4990         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
4991
4992 2007-08-28  Mark Probst  <mark.probst@gmail.com>
4993
4994         * security-manager.c (mono_security_manager_get_methods):
4995         LinkDemandSecurityException now has 2 arguments instead of 3.
4996
4997 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
5000         platforms which need it.
5001
5002 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
5003
5004         * sgen-gc.c: unregister thread data structures with a pthread_key_t
5005         dtor.
5006
5007 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
5008
5009         * threads.c: free the thread static data on thread exit.
5010
5011 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
5012
5013         * class.c: walk the hierarchy to find the generic definition for
5014         a class (fixes runtime part of bug #82498).
5015
5016 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
5017
5018         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
5019         ...
5020
5021         * image.c (mono_image_close): Here. Hopefully fixes #82510.
5022
5023 2007-08-24  Mark Probst  <mark.probst@gmail.com>
5024
5025         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
5026
5027 2007-08-24  Robert Jordan  <robertj@gmx.net>
5028
5029         * appdomain.c: don't perform the ':'->';' substitution on Win32.
5030
5031 2007-08-24  Jb Evain  <jbevain@novell.com>
5032
5033         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
5034         for byref types.
5035
5036 2007-08-24  Mark Probst  <mark.probst@gmail.com>
5037
5038         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
5039         #82286.
5040
5041 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
5042
5043         * assembly.c: Fix a warning.
5044         
5045 2007-08-23  Marek Habersack  <mhabersack@novell.com>
5046
5047         * appdomain.c: parse the <runtime> section looking for the probing
5048         element with the 'privatePath' attribute, which sets additional
5049         directories in which the runtime should look for assemblies.
5050
5051 2007-08-23  Robert Jordan  <robertj@gmx.net>
5052
5053         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
5054         Fixes #82499.
5055
5056 2007-08-23  Martin Baulig  <martin@ximian.com>
5057
5058         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
5059         _mono_debug_init_corlib() and remove it from the header file.
5060
5061 2007-08-23  Martin Baulig  <martin@ximian.com>
5062
5063         * mono-debug-debugger.c
5064         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
5065         don't notify the debugger about it.
5066
5067         * mono-debug-debugger.h
5068         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
5069
5070 2007-08-23  Robert Jordan  <robertj@gmx.net>
5071
5072         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
5073         Code is contributed under MIT/X11 license.
5074
5075 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
5076
5077         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
5078
5079 2007-08-22  Martin Baulig  <martin@ximian.com>
5080
5081         * mono-debug.c: Store debugging info on a per-domain basis and
5082         free it on domain unload.  Add support for unloading symbol files.
5083
5084         * mono-debug.h
5085         (MonoDebugList): New typedef.
5086         (MonoSymbolTable):
5087         - add `data_tables and `type_table'.
5088         - replace 'symbol_files' and `num_symbol_files' with a
5089           `MonoDebugList *'.
5090         (mono_debug_data_table): Removed.
5091         (mono_debug_list_add): New public function.
5092         (mono_debug_list_remove): New public function.
5093         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
5094         (mono_debug_init_2_memory): Renamed into
5095         mono_debug_open_image_from_memory().
5096         (mono_debug_close_image): New public function.
5097         (mono_debug_domain_create): Likewise.
5098         (mono_debug_domain_unload): Likewise.
5099         (MONO_DEBUGGER_VERSION): Bump to 60.
5100
5101         * mono-debug-debugger.h
5102         (MonoDebuggerEvent):
5103         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
5104         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
5105         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
5106         - rename `THREAD_CREATED' and `THREAD_EXITED' into
5107           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
5108         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
5109           meaning.
5110         (mono_debugger_add_symbol_file): Removed.
5111         (mono_debugger_add_type): Removed.
5112         (mono_debugger_lookup_type): Removed.
5113         (mono_debugger_lookup_assembly): Removed.
5114
5115         * domain.c
5116         (mono_domain_create): Call mono_debug_domain_create().
5117         (mono_init_internal): Call mono_debug_init_corlib().
5118
5119         * assembly.c
5120         (mono_assembly_close): Call mono_debug_close_image().
5121
5122 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
5123
5124         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
5125         mmap call.
5126
5127 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5128
5129         * sgen-gc.c: ensure section->pin_queue_end is initialized
5130         correctly when non pinning objects in the section have been found.
5131
5132 2007-08-22  Marek Habersack  <mhabersack@novell.com>
5133
5134         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
5135         containing a list of directories separated by ':'. MSDN docs say
5136         the directories should be separated with ';'. Part of a bugfix for
5137         bug #81446
5138
5139 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
5140
5141         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
5142         it should MonoType and not MonoClass.
5143
5144 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
5145
5146         * culture-info-table.h : regenerated.
5147
5148 2007-08-20  William Holmes  <billholmes54@gmail.com>
5149
5150         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
5151          to call ReplaceFile Kernel32 on windows or in io-layer.
5152         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
5153         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
5154          as an internal call.
5155
5156         Code is contributed under MIT/X11 license.
5157
5158 2007-08-20  Jb Evain  <jbevain@novell.com>
5159
5160         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
5161         and MONO_EXCEPTION_FIELD_ACCESS.
5162
5163         * debug-helpers.[c|h]: new mono_field_full_name function.
5164
5165 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5166
5167         * class.c: Removed class_security_level() and moved it to
5168         security-core-clr.c.
5169
5170         * security-core-clr.c, security-core-clr.h: class_security_level()
5171         is now public and renamed to mono_security_core_clr_class_level().
5172         It also looks for security attributes in the classes a class is
5173         nested in.
5174
5175 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5176
5177         * security-core-clr.c, security-core-clr.h: CoreCLR security
5178         utility functions.
5179
5180         * Makefile.am: Added security-core-clr.[ch].
5181
5182         * security-manager.c, security-manager.h: Functions and enum for
5183         setting and getting the security mode.
5184
5185         * class.c: CoreCLR security checks.
5186
5187 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
5188
5189         * icall-def.h, process.c, process.h: implemented icall to get
5190         user/system processor times.
5191
5192 2007-08-17  Mark Probst  <mark.probst@gmail.com>
5193
5194         * domain.c, threads.c, class-internals.h, domain-internals.h: New
5195         reader-lock-free jit_info_table.
5196
5197 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
5200
5201         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
5202
5203         * object-internals.h (MonoException): Add missing _data member.
5204
5205 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5206
5207         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
5208         checking that only methods with matching qname or fqname are picked
5209         from implemented interfaces.
5210
5211 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5212
5213         * verify.c (do_newarr):added, do type verification of
5214         newarr ops, push the right value on the eval stack.
5215         * verify.c (mono_method_verify): use do_newarr
5216
5217
5218 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5219
5220         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
5221         factored the common code into get_boxable_mono_type, which
5222         is now using mono_type_get_full, this fixed byref related tests.
5223
5224 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5225
5226         * class.c: added mono_type_get_full, this function has the same
5227         behavior of mono_class_get_full but the returned MonoType has
5228         all metadata of the associated token in case of a typespec token.
5229         * class.c: added mono_type_retrieve_from_typespec, used by 
5230         mono_type_get_full to retrieve the token type.
5231         * class.c (mono_class_create_from_typespec): changed to use
5232         mono_type_retrieve_from_typespec.
5233         * class.c (mono_ldtoken): changed to use mono_type_get_full
5234         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
5235         * class-internals.h: exported mono_type_get_full for internal use.
5236
5237 2007-08-16  Jb Evain  <jbevain@novell.com>
5238
5239         * domain.c (supported_runtimes): add entry for
5240         the 'moonlight' runtime version.
5241
5242 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5243
5244         * verify.c (mono_method_verify): small typo sliped in.  
5245
5246 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5247
5248         * verify.c (do_unbox_value): added, do type verification of
5249         unboxing ops
5250         * verify.c (mono_method_verify): use do_unbox_value
5251
5252
5253 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5254
5255         * verify.c (dump_stack_value): fixed typo, was printing string
5256         instead of object on stack.
5257         * verify.c (do_box_value): moved the byref check up as it leads
5258         to invalid code and should be done earlier.
5259         * verify.c: improved error messages for and ldobj
5260
5261 2007-08-15  William Holmes  <billholmes54@gmail.com>
5262
5263         * marshal.c (emit_marshal_custom): Omit the call to 
5264           marshal_native_to_managed when calling native to managed 
5265           and the argument is specified as an out argument.
5266
5267         Code is contributed under MIT/X11 license.
5268
5269 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5270
5271         * verify.c: fixed the type checks for generics, function pointers and vectors.
5272         Added type verification for ldobj and ldtoken. The verifier
5273         would segfault if header or signature of a method contained references
5274         to non-existant types.
5275
5276 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5277
5278         * marshal.c (cominterop_get_ccw): Patch from
5279         Bill Holmes to no walk up interface hierarchy. 
5280         All parent methods should be present in the interface for COM.
5281    
5282         Code is contributed under MIT/X11 license.
5283
5284 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5285
5286         * marshal.c (emit_marshal_com_interface): Patch from
5287         Bill Holmes to handle COM Interfaces as return values
5288         for native->managed calls.
5289    
5290         Code is contributed under MIT/X11 license.
5291
5292 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
5293
5294         * marshal.c (cominterop_get_idispatch_for_object): Implement
5295         for runtime callable wrappers.
5296    
5297         Code is contributed under MIT/X11 license.
5298
5299 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
5300
5301         * pedump.c (main): changed from mono_init to mono_init_from_assembly
5302         so 2.0 types are accessible
5303
5304
5305 2007-08-13  Miguel de Icaza  <miguel@novell.com>
5306
5307         * domain.c (mono_init_internal): Call mono_assembly_load_friends
5308         once we load mscorlib.   Due to the order in which we initialize,
5309         the mono_assembly_load_full routine that loads mscorlib did not
5310         load friends.   We now load it once we load the
5311         mono_defaults.internals_visible_class class. 
5312
5313         * assembly.c: Expose the mono_load_friend_assemblies method.
5314
5315 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
5316
5317         * verify.c: improved the handling of boxing, better
5318         type checking for unary ops and conversion. Fix bug
5319         regarding managed pointer compatibility checking
5320
5321 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
5322
5323         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
5324
5325         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
5326
5327 2007-08-09  Raja R Harinath  <rharinath@novell.com>
5328
5329         * reflection.c (dup_type): Remove.
5330         * class.c (dup_type): Remove.
5331         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
5332         instead of the dodgy 'dup_type'.
5333         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
5334         handle the case where 'dup_type' needed the second argument.
5335
5336 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
5337
5338         * domain.c: Fix a warning.
5339
5340 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5341
5342         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
5343         checking that methods with the same fqname are not overridden
5344         with a method from an ancestor.
5345
5346 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * threads.c (free_thread_static_data_helper): Avoid a crash if
5349         thread->static_data is not yet set.
5350
5351 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
5352
5353         * marshal.c: Use correct image when emitting
5354         native wrapper for COM calls.
5355    
5356         Code is contributed under MIT/X11 license.
5357
5358 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
5359
5360         * icall-def.h, security.c, security.h :
5361           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
5362
5363 2007-08-07  Martin Baulig  <martin@ximian.com>
5364
5365         * mono-debug-debugger.h
5366         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
5367
5368         * domain.c (mono_domain_free): Call
5369         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
5370
5371 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5372
5373         * verify.c (check_underflow, check_overflow): error message now returns IL offset
5374         * verify.c (in_same_block): code should test if either offset is inside the clauses
5375         * verify.c (mono_method_verify): push the exception into the eval stack of exception
5376         and filter blocks
5377
5378 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * image.c (mono_image_close): Fix a leak.
5381
5382         * object.c (mono_runtime_invoke_array): Avoid using alloca.
5383
5384         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
5385
5386 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
5387
5388         * domain.c, threads.c, threads-types.h: fix memory retention issue
5389         with thread static variables not being cleared on domain unload.
5390         Reuse thread static slots after domain unload.
5391
5392 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5393
5394         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
5395         nullable type.
5396
5397         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
5398         now done in mono_runtime_invoke_array.
5399
5400         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
5401         receiver is a nullable type.
5402
5403         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
5404         generic parameter.
5405
5406 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
5407
5408         * marshal.c: Implement COM Objects as return type for 
5409         managed->unmanaged calls. Added Release calls for COM Object
5410         out/return values in managed->unmanaged calls.
5411
5412         Code is contributed under MIT/X11 license.
5413
5414 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
5415
5416         * threads.h, threads-type.h: move the hazard pointer declarations
5417         to the private header.
5418
5419 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
5420
5421         * file-io.c, appdomain.c: memory leak fixes.
5422
5423 2007-08-02  Dick Porter  <dick@ximian.com>
5424
5425         * socket-io.c
5426         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
5427         SO_REUSEADDR setting into io-layer/sockets.c.
5428
5429 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
5430
5431         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
5432         from Object when called on a generic parameter. Fixes #82211.
5433
5434 2007-08-01  Dick Porter  <dick@ximian.com>
5435
5436         * file-io.c (convert_share): Test FileShare values bit-by-bit.
5437         Fixes bug 79250 yet again.
5438
5439 2007-07-30  Martin Baulig  <martin@ximian.com>
5440
5441         Merged the `debugger-dublin' branch.
5442
5443         * mono-debug.h
5444         (MonoDebugDataTable): New typedef.
5445         (MonoDebugMethodAddressList): New typedef.
5446         (MonoDebugWrapperData): Removed.
5447         (MonoDebugSymbolTable): Removed `current_data_table',
5448         `current_data_table_size', `current_data_table_offset'.
5449         (MonoDebugDataItemType): Moved into mono-debug.c.
5450         (MonoDebugMethodJitInfo): Remove `address'.
5451         (mono_debug_data_table): New global variable.
5452         (mono_debug_lookup_method_addresses): New public function.
5453         (mono_debug_find_method): Take a `MonoMethod *', not a
5454         `MonoDebugMethodInfo *'.
5455
5456         * mono-debug.c: Drop support for the old symbol tables.
5457
5458 2007-06-28  Martin Baulig  <martin@ximian.com>
5459
5460         * mono-debug.c (mono_debug_debugger_version): New public variable.
5461
5462 2007-07-31  William Holmes  <billholmes54@gmail.com>
5463
5464         * metadata.c Changed mono_type_create_from_typespec to not insert
5465           the type into the hash map until after
5466           do_mono_metadata_parse_type has completed.
5467         Fixes Bug #82194
5468         Code is contributed under MIT/X11 license.
5469
5470 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
5473         generic parameter. Fixes #82211.
5474
5475 2007-07-27  Jb Evain  <jbevain@novell.com>
5476
5477         * pedump.c (dump_metadata, dump_metadata_header): dump
5478         versions contained in the metadata header.
5479
5480 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
5481
5482         * threads.c: register small_id_table with the GC.
5483
5484 2007-07-27  Mark Probst  <mark.probst@gmail.com>
5485
5486         * threads.c, threads.h, class-internals.h, object-internals.h:
5487         Hazard pointers, to be used by lock-free parallel algorithms.
5488
5489 2007-07-26  Dick Porter  <dick@ximian.com>
5490
5491         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
5492         routine on non-windows platforms, as I've not managed to think of
5493         a non-kludgy way of doing this.  Finishes off bug 78739.
5494
5495 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
5496
5497         * object.c: properly setup interface_bitmap in proxy vtables.
5498
5499 2007-07-25  Marek Habersack  <mhabersack@novell.com>
5500
5501         * appdomain.c (get_shadow_assembly_location): do not use TickCount
5502         to create unique shadow copy target directories, use the domain's
5503         serial number instead. Each domain gets a unique target directory
5504         that way.
5505
5506         * domain.c (mono_domain_create): added code to increment domain
5507         shadow copy serial number and cache the value in the current
5508         domain structure.
5509
5510         * domain-internals.h (struct _MonoDomain): added a new field -
5511         shadow_serial to hold the serial number used in generation of
5512         shadow-copy directories. This is to make sure that the directory
5513         name is unique for each and every domain created. We avoid a race
5514         condition with overriding assemblies already in use by other app
5515         domains.
5516
5517 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
5518
5519         * class.c (mono_bounded_array_class_get): fixed memory leak when 
5520         binding generic parameters.
5521
5522 2007-07-24  Raja R Harinath  <rharinath@novell.com>
5523
5524         * metadata.c (do_mono_metadata_parse_generic_class): Use
5525         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
5526         error.
5527
5528 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
5529
5530         * loader.c, class-internals.h, reflection.c: removed the per-method
5531         generics hashtable: we use the global one through the call of
5532         mono_class_inflate_generic_method ().
5533
5534 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5535
5536         * class.c, metadata.c, class-internals.h: introduce yet another
5537         generics global cache for inflated methods (fixes 98% of the perf
5538         issue in bug #81806).
5539
5540 2007-07-23  Raja R Harinath  <rharinath@novell.com>
5541
5542         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
5543         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
5544         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
5545         return a MonoGenericInst containing (a copy) of those types.
5546         (mono_metadata_inflate_generic_inst): Update to changes.
5547         (mono_metadata_parse_generic_inst): Likewise.
5548         (mono_get_shared_generic_inst): Likewise.
5549         * reflection.c (mono_class_bind_generic_parameters): Likewise.
5550         (mono_reflection_bind_generic_method_parameters): Likewise.
5551         * metadata-internals.h: Likewise.
5552         * icall.c (free_generic_context): Kill.
5553         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
5554
5555         * reflection.c (reflection_methodbuilder_to_mono_method): Use
5556         mono_metadata_type_dup.
5557         * marshal.c (mono_mb_create_method): Likewise.
5558
5559         * metadata.c (mono_metadata_type_dup): Rename from
5560         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
5561         MonoImage.  Handle a few more cases, esp. when no mempool is given.
5562         * marshal.c, metadata-internals.h: Update to changes.
5563
5564 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5565
5566         * class.c: fixed a small leak for array classes and removed warning.
5567
5568 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
5569
5570         * loader.c (mono_method_get_param_token): Make this work on generic methods.
5571         Return 0x8000000 for return parameters. Fixes #82161.
5572
5573 2007-07-21  Marek Habersack  <grendello@gmail.com>
5574
5575         * appdomain.c (get_shadow_assembly_location): append the current
5576         ticks value to the path. Avoids overwriting the same assemblies by
5577         several threads at the same time.
5578
5579 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5580         and Raja R Harinath  <rharinath@novell.com>
5581
5582         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5583         Simplify slightly.
5584         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
5585         property for testing if a method is a generic method definition.
5586
5587 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5588
5589         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
5590
5591 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * verify.c: used function from private branch, reverted to the one in class.h 
5594
5595 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5596
5597         * verify.c: a typo slipped in and the code wont compile
5598
5599 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5600
5601         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
5602         disabled box instruction as it is doing the wrong thing
5603         improved stack dump messages, now it is easier to debug type related issues
5604
5605
5606 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
5607
5608         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
5609
5610 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5611
5612         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
5613         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
5614         grouped with class and valuetype. This change will simply 
5615         the code as it should be handled just like unmanaged pointers.
5616
5617 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5618
5619         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
5620
5621 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5622
5623         * verify.c: several stack merge issues fixed, reference comparisons now
5624         check the type size. strict type check now works correctly.
5625         added more uses of IS_MANAGED_POINTER macro.
5626         fixed issues pointed by running the test suite against .net.
5627         
5628
5629 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5630
5631         * class.c, loader.c, class-internals.h: Removed the
5632         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
5633         defines.
5634
5635         * icall.c: Better error checking in some internal reflection
5636         methods.
5637
5638 2007-07-18  William Holmes  <billholmes54@gmail.com>
5639
5640         * filewatcher.c : removed unused variable 'filename' in 
5641           ves_icall_System_IO_FSW_SupportsFSW
5642
5643 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
5644
5645         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
5646         obsolete, removed.
5647
5648 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
5649
5650         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
5651         
5652         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
5653
5654 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
5657         Implement generics support.
5658         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5659
5660         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
5661         type_args and method_args arguments.
5662         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
5663         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5664         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
5665
5666 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
5667
5668         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
5669           It adds a rootimage parameter to mono_reflection_get_type_internal,
5670           adds new function mono_reflection_get_type_with_rootimage and use
5671           the rootimage to resolve the types instead of the current image
5672
5673 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5674
5675         * culture-info-table.h: Forgot to update after r78304.
5676
5677 2007-07-13  Raja R Harinath  <rharinath@novell.com>
5678
5679         * class.c (mono_class_is_open_constructed_type)
5680         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
5681
5682 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
5683
5684         * class.c (mono_bounded_array_class_get):  method fails if used with
5685         an incomplete TypeBuilder enum (no basetype field), fixed it by 
5686         avoiding calculating the size for such array as it cannot be instantiated.
5687         Fix bug #82015
5688
5689 2007-07-12  Raja R Harinath  <rharinath@novell.com>
5690
5691         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
5692         field.
5693         * metadata.c, reflection.c: Update to changes.
5694
5695 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
5698         mono_class_is_valid_enum, they are used to valide a enum when loading.
5699         * reflection.c: used new functions to throw TypeLoadException when and
5700         invalid enum is build with TypeBuilder. Fixes #82018
5701   
5702 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5703
5704         * object.c: forgot commit of mono_class_setup_methods () to access
5705         iface->methods.
5706         * object-internals.h: added a few more handy fields to
5707         MonoIMTCheckItem.
5708
5709 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
5710
5711         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
5712         iface->methods.
5713
5714 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5715
5716         * class-internals.h, object-internals.h, object.c: IMT-based
5717         interface invocation core from Massimiliano Mantione
5718         (massi@ximian.com) with a reworked arch-specific interface,
5719         bsearch implementation and a few bugfixes and memory savings by me.
5720
5721 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
5722
5723         * class.c (mono_class_create_from_typedef): mono would segfault if 
5724         an enum did not have a __value field. It now throws a TypeLoadException
5725         for such cases. Fix bug #82022
5726
5727 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
5730
5731 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5732
5733         * class.c (mono_class_init): If a class is already inited but has
5734         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
5735
5736 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5737
5738         * class.c: Properly handle the case of an unimplemented interface
5739         method.  Fixes: 81673.
5740
5741 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5742
5743         * class-internals.h, object.c: cleanup patch from massi: use
5744         MonoVTable->interface_bitmap since the vtable interfaces offset array
5745         is going away.
5746
5747 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5748
5749         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
5750         GetMDStreamVersion icall instead.
5751
5752 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
5753
5754         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
5755         not use mono_dl_build_path() with a full library name: makes
5756         fallbacks to libgaim and libfam work.
5757
5758 2007-07-06  William Holmes  <billholmes54@gmail.com>
5759
5760         * assembly.c: Added a continue statement in probe_for_partial_name when
5761          parse_assembly_directory_name fails.  Fixes : 82002
5762
5763 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
5766         and added a verification  for TYPEDBYREF.
5767         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
5768         make native int interchangeable with int32 and some small cleanup and formating.
5769         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
5770         handle byref of byref.
5771         * verify.c (push_local): handle byref of byref.
5772         * verify.c (do_binop): invalid mix of values is unverifiable
5773         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
5774         added visibility checks
5775         * verify.c (field related method): added visibility checks
5776         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
5777
5778 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
5779
5780         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
5781         string.
5782
5783 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * profiler.c (mono_profiler_load): Fix an off-by-one error.
5786
5787         * marshal.c (emit_marshal_string): When returning a string from managed code,
5788         allways make a copy even for unicode strings. Fixes #81990.
5789
5790 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
5791
5792         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
5793         of byref generic inst types (bug #81997).
5794
5795 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
5798         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
5799
5800 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
5801
5802         * marshal.c (emit_marshal_string): Add support for unicode strings in
5803         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
5804
5805 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5806
5807         * verify.c: field load/store are now verified, missing only access checks now
5808
5809 2007-06-28  Martin Baulig  <martin@ximian.com>
5810
5811         * mono-debug.c (mono_debug_debugger_version): New public variable.
5812
5813 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
5814
5815         * locales.c: When constructing DateTimeFormat or NumberFormat for
5816         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
5817         MonoCultureInfo contructed from the current locale is always
5818         read-only and has UseUserOverride set to true. All MonoCultureInfo
5819         instances returned for GetCultures have both IsReadOnly and
5820         UseUserOverride set to true. Fixes part of bug #81930.
5821
5822 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
5823
5824        * icall-def.h: Update System.__ComObject icalls
5825        * marshal.c: Avoid managed transition (and object creation)
5826        when looking up COM interface in RCW.
5827        * marshal.h: Ditto.
5828        
5829        Code is contributed under MIT/X11 license.
5830
5831 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
5834         to avoid crashes during assembly unloading.
5835
5836 2007-06-22  Raja R Harinath  <rharinath@novell.com>
5837
5838         Fix MethodInfo.IsGenericMethodDefinition
5839         * reflection.c (mono_reflection_bind_generic_method_parameters):
5840         Rearrange code to ensure we always uses a generic method definition.
5841         * class.c (mono_class_inflate_generic_method_full): Set
5842         'generic_container' field only for generic method definitions.
5843         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5844         Use presense of 'generic_container' field as indication of being a
5845         generic method definition.
5846
5847 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5850
5851         * object-internals.h: Reflect changes in the layout of the managed Delegate
5852         class.
5853         
5854         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
5855         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
5856         runtime memory used by the dynamic method. Fixes #77146.
5857
5858 2007-06-21  Dick Porter  <dick@ximian.com>
5859
5860         * file-io.h: 
5861         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
5862         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
5863         81767.
5864
5865 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5866
5867         * reflection.c (method_encode_methodspec): Add a tripwire.
5868         * class.c (inflate_generic_type): The fully open generic type is
5869         not the same as the generic type definition.
5870
5871 2007-06-21  Martin Baulig  <martin@ximian.com>
5872
5873         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
5874
5875         * mono-debug-debugger.h
5876         (MonoDebuggerBreakpointInfo): Removed.
5877         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
5878         (mono_debugger_remove_breakpoint): Likewise.
5879         (mono_debugger_breakpoint_callback): Likewise.
5880         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
5881
5882 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5883
5884         * metadata.c (mono_metadata_lookup_generic_class): The fully open
5885         generic type is not the same as the generic type definition.
5886         * class.c (mono_generic_class_get_class): Likewise.
5887
5888 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
5889
5890         * icall.c: The second argument to 
5891         System.Reflection.MethodBase.GetMethodFromHandleInternalType
5892         is a MonoType not a MonoClass.
5893
5894 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5895
5896         * verify.c: support for function pointers in the verifier
5897
5898 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5899
5900         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
5901
5902 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
5903
5904         * assembly.c: removed Mono.Data.SqliteClient from the list of
5905         forward-compatible assemblies as it breaks the ABI (bug #81899).
5906
5907 2007-06-19  Raja R Harinath  <rharinath@novell.com>
5908
5909         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
5910         lookup/update with the loader lock.
5911         * reflection.c (mono_class_bind_generic_parameters): No need to
5912         protect mono_metadata_lookup_* with the loader lock.
5913         * class.c (inflate_generic_type): Likewise.
5914         
5915         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
5916         on a generic instantiated type.
5917
5918 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
5919
5920         *verify.c: produce meanfull error messages on verification error
5921         *verify.c: fixed some cases of verification errors reported as validation errors
5922         *pedump.c: fixed the error name array, now it shows validation errors properly
5923         *verify.h: fixed the contant that should be used for verification errors
5924
5925 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
5926
5927         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
5928         for bug #77596, 81858 and 80743 (generics data structures on domain
5929         unload).
5930
5931 2007-06-15  Raja R Harinath  <rharinath@novell.com>
5932
5933         Avoid allocating 'MonoGenericContext' on the heap.
5934         * class-internals (_MonoMethodInflated::context): Make field
5935         inline, not a pointer.
5936         * loader.c (method_from_methodspec): Allocate 'new_context' on the
5937         stack.  Use the context embedded within the inflated method as the
5938         hash key, rather than 'new_context'.
5939         * class.c (inflate_generic_context): Simplify.  Return a struct
5940         rather than allocating on the heap.
5941         (mono_class_inflate_generic_method_full): Update to changes.  Now,
5942         doesn't salt away a copy of the context -- simplifying the
5943         lifetime rules of a 'MonoGenericContext *'.
5944         (mono_method_get_context): Return pointer to embedded context.
5945         (setup_generic_array_ifaces): Allocate temporary context on stack.
5946         * reflection.c (inflate_mono_method): Likewise.
5947         (mono_reflection_bind_generic_method_parameters): Likewise.
5948         Use the context embedded within the inflated method as the hash key.
5949
5950         Avoid a source of allocation of 'MonoGenericContext'.
5951         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
5952         and 'cached_context' fields into embedded 'MonoGenericContext' field.
5953         * class.c: Update to changes.
5954         (mono_generic_class_get_context): Simplify drastically.  Now just
5955         returns a pointer to the field.
5956         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
5957         argument as a const pointer.
5958         (mono_metadata_generic_context_equal): Likewise.
5959         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
5960         Update to changes.
5961
5962 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
5963
5964         * verify.c improved the handling of brtrue/brfalse, factored out common code
5965
5966 2007-06-14  Raja R Harinath  <rharinath@novell.com>
5967
5968         Kill MonoGenericMethod.
5969         * class-internals.h (MonoGenericContext::method_inst): Rename from
5970         'gmethod' and convert to a MonoGenericInst.
5971         (MonoGenericMethod): Remove.
5972         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
5973         * loader.c (method_from_methodspec): Update to changes.  Use a
5974         MonoGenericContext as the key to the hashtable.
5975         * metadata.c (mono_metadata_generic_context_equal): Rename from 
5976         'mono_metadata_generic_method_equal' and take MonoGenericContext.
5977         (mono_metadata_generic_context_hash): Likewise from
5978         'mono_metadata_generic_method_hash'.  Change hash function.
5979         (mono_metadata_load_generic_params): Update to changes.
5980         (mono_get_shared_generic_method): Remove.
5981         * metadata-internals.h (mono_get_shared_generic_method): Remove.
5982         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
5983         (inflate_generic_context): Likewise.
5984         (mono_class_inflate_generic_method_full): Likewise.
5985         (setup_generic_array_ifaces): Likewise.
5986         (mono_class_create_from_typespec): Likewise.
5987         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
5988         (method_encode_methodspec): Update callsite.
5989         (reflection_methodbuilder_to_mono_method): Update to changes.
5990         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
5991         MonoGenericContext as the key to the hashtable.
5992         (inflate_mono_method): Update to changes.
5993
5994         * class-internals.h (MonoGenericMethod::container): Remove.
5995         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5996
5997 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
5998
5999         * profiler-private.h, profiler.c, profiler.h: added API to profile
6000         exception events.
6001
6002 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
6003
6004         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
6005
6006 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
6007
6008         * verify.c: method invocation is now validated, now we verify parameter types on stack.
6009         Fixed overflow and underflow not aborting the verification process.
6010
6011 2007-06-13  Mark Probst  <mark.probst@gmail.com>
6012
6013         * class-internals.h (MonoStats): Added stats entries for dynamic
6014         code allocations.
6015
6016 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * loader.c (mono_free_method): Free header->locals and header->clauses.
6019
6020         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
6021         dynamic case.
6022
6023         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
6024
6025         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
6026
6027 2007-06-12  Raja R Harinath  <rharinath@novell.com>
6028
6029         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
6030         the tables.
6031
6032 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6033
6034         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
6035
6036 2007-06-11  Raja R Harinath  <harinath@gmail.com>
6037
6038         MonoGenericMethod on a diet
6039         * class-internals.h (_MonoMethodInflated::reflection_info): Move
6040         here ...
6041         (_MonoGenericMethod::reflection_info): ... from here.
6042         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6043         Update to changes.
6044         * reflection.c (inflate_mono_method): Likewise.
6045         (mono_reflection_bind_generic_method_parameters): Likewise.
6046
6047 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6048
6049         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
6050         *verify.c: factored long ldarg forms to share code with short forms
6051
6052 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6053
6054         *verify.c: fixed code formating factored some duplicate code
6055         into a new function
6056
6057         *verify.h: fixed binary incompatibility introduced earlier
6058
6059         *pedump.c: fixed formating
6060
6061 2007-06-11  Raja R Harinath  <harinath@gmail.com>
6062
6063         Fix assertion when disassembling Mono.C5.dll
6064         * loader.c (method_from_methodspec): Avoid inflating a method
6065         twice with the same context.  If the methodref is inflated, use
6066         the declaring method instead.
6067
6068         * class.c (mono_class_from_generic_parameter): Fix case similar to
6069         bug #81830 handled below, but for method containers.
6070
6071 2007-06-10  Raja R Harinath  <harinath@gmail.com>
6072
6073         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
6074         get_shared_generic_class.  Directly inflate the instance.
6075         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
6076         (inflate_generic_class): Delete.
6077         (get_shared_generic_class): Delete.  Move setting of
6078         'cached_class' and 'cached_context' ...
6079         * metadata.c (mono_metadata_lookup_generic_class): ... here.
6080
6081         * metadata.c (mono_metadata_lookup_generic_class): Change
6082         signature to take the components of a MonoGenericClass rather than
6083         an allocated MonoGenericClass.  Change semantics to be intern-like.
6084         * reflection.c (mono_class_bind_generic_parameters): Update to
6085         changes.  Make locking region tighter.
6086         * class.c (inflate_generic_class): Update to changes.
6087         (get_shared_generic_class): Likewise.
6088         * metadata-internals.h: Likewise.
6089
6090         * reflection.c (mono_class_bind_generic_parameters): Take and
6091         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
6092         (mono_reflection_bind_generic_parameters): Use
6093         'mono_class_bind_generic_parameters' rather than duplicate the code.
6094         * class.c (mono_bounded_array_class_get): Update to changes.
6095         * object-internals.h: Likewise.
6096
6097         * reflection.c (mono_class_bind_generic_parameters): Only support
6098         parameterizing generic type definitions.  Remove support for other
6099         open types.
6100
6101 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
6104
6105         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
6106         in the dynamic case.
6107
6108 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
6109
6110         * threads.c: When cleaning up thread, reset the Background bit.
6111         Fixes bug #81720.
6112
6113 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
6114
6115        * metadata.c: Move variable declarations to top of scope.
6116        * verify.c: Move variable declarations to top of scope.
6117
6118        Code is contributed under MIT/X11 license.
6119
6120 2007-06-08  Raja R Harinath  <rharinath@novell.com>
6121
6122         * reflection.c (mono_class_bind_generic_parameters): Replace
6123         open-coded loop with mono_metadata_inflate_generic_inst.
6124
6125         * class.c (get_shared_generic_class): Don't call
6126         mono_get_shared_generic_inst.  Use the container's own
6127         'class_inst'.
6128
6129         * metadata.c (mono_metadata_load_generic_params): Move
6130         initialization of 'context' field here from ...
6131         * class.c (mono_class_create_from_typedef): ... here, and ...
6132         * loader.c (mono_get_method_from_token): ... here.
6133
6134         * class.c (get_shared_generic_class): Rename from
6135         mono_get_shared_generic_class and make static.
6136         (mono_get_shared_generic_inst): Move to metadata.c.
6137         * loader.c (mono_get_shared_generic_method): Likewise.
6138         * class-internals.h, metadata-internals.h: Update to changes.
6139
6140         Fix #81830
6141         * class.c (mono_class_from_generic_parameter): Don't assume a
6142         generic container owner exists.  Generic containers from monodis
6143         don't have any.
6144
6145 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
6146
6147         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
6148         * verify.h: new typedefs to returns the non-verifiable status
6149         * verify.c: initial implementation of generics, stack merging and object compatibility check
6150
6151 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6152
6153         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6154         a MonoInternalHashTable again (fixed bug in internal hash table
6155         code).
6156
6157 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6158
6159         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6160         MonoInternalHashTable again (fixed bug in internal hash table
6161         code).
6162
6163 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6164
6165         * class.c, image.c, class-internals.h, domain.c,
6166         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
6167         changes.  Have to figure out what makes them break the SWF
6168         regression.
6169
6170 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6171
6172         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6173         a MonoInternalHashTable now.
6174
6175 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6176
6177         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6178         MonoInternalHashTable now.
6179
6180 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
6181
6182         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
6183         invoke_impl code.
6184
6185         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
6186
6187         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
6188         dependent trampoline.
6189
6190         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6191
6192         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
6193
6194 2007-05-29  Robert Jordan  <robertj@gmx.net>
6195
6196         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
6197
6198 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
6201
6202 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
6203
6204        * marshal.c: Fix interface lookup loops for
6205        cominterop_get_com_slot_for_method and 
6206        cominterop_get_method_interface. Only need to lookup
6207        if type is a class, else use interface type method is on.
6208
6209        Code is contributed under MIT/X11 license.
6210
6211 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
6212
6213         * reflection.c: HasSecurity can be present even if no specially 
6214         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
6215         SecurityAttribute). Fix CAS regression tests on buildbot.
6216
6217 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
6218
6219        * appdomain.c: Add configure checks for header files.
6220        * image.c: Add configure checks for header files.
6221        * file-io.c: Add configure checks for header files.
6222        * debug-mono-symfile.c: Add configure checks for header files.
6223        * threadpool.c: Add configure checks for header files.
6224        * console-io.c: Add configure checks for header files.
6225        * profiler.c: Add configure checks for header files.
6226        * rawbuffer.c: Add configure checks for header files.
6227        * icall.c: Add configure checks for header files.
6228        * rand.c: Add configure checks for header files.
6229        * socket-io.c: Add configure checks for header files.
6230
6231        Code is contributed under MIT/X11 license.
6232
6233 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
6234
6235         * reflection.c (mono_custom_attrs_from_builders): Remove the 
6236         assertion as it breaks the build.
6237         
6238         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
6239
6240         * reflection.c (lookup_custom_attr): Make a copy here too.
6241
6242         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
6243         dynamic images.
6244
6245         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
6246         images.
6247
6248         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
6249         info.
6250
6251 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
6252
6253         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
6254         (load_cattr_value): Ditto.
6255
6256 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
6259
6260 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
6261
6262         * threads.c: In "start_wrapper", set apartment_state to MTA if
6263         apartment_state is Unknown and we're running on 2.0 profile or
6264         higher.
6265         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
6266         to main method, then set apartment_state to Unknown on 1.0 profile,
6267         and MTA on 2.0 profile.
6268
6269 2007-05-16  Jb Evain  <jb@nurv.fr>
6270
6271         * class-internals.h (MonoDefaults): Add an attribute_class and
6272           customattribute_data_class.
6273         * domain.c (mono_init_internal): Populate them.
6274         * reflection.c: Use them to remove duplicates. Make a vew
6275         MonoClass variables `static'.
6276
6277 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6278
6279         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
6280         step in implementing IMT, so that all isinst checks now can go
6281         through the bitmap.
6282         This was needed because vtables for TransparentProxy need to look
6283         like the vtable of the "target" class, so they need to point to
6284         its interface bitmap directly.
6285
6286         * object.c: inside "mono_class_create_runtime_vtable" and
6287         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
6288
6289 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
6290
6291         * object-internals.h
6292           culture-info.h : added territory field in MonoCulture and
6293           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
6294         * locales.c : fill territory field above too.
6295         * culture-info-table.h : regenerated.
6296
6297 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
6300         Fixes #81599.
6301
6302 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
6303
6304         * object.c: Always initialize apartment, even if 
6305         there is no custom attributes on entry point.
6306         
6307         Code is contributed under MIT/X11 license.
6308
6309 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
6310
6311         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
6312         * metadata.c: If no encoding is set, check for unicode
6313         on class.
6314         
6315         Code is contributed under MIT/X11 license.
6316
6317 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6318
6319         * threads.c: Handle if mono_thread_current returns NULL 
6320         
6321         Code is contributed under MIT/X11 license.
6322
6323 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6324
6325         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
6326         in start_wrapper. Added mono_thread_init_apartment_state and
6327         mono_thread_cleanup_apartment_state.
6328         * object.c: Initialize thread apartment state on main thread
6329         by checking for STAThreadAttribute on entry point.
6330         * object-internals.h: Add apartment_state field to MonoThread.
6331         * threads-types.h: Add unmanaged definition of 
6332         System.Threading.ApartmentState, MonoThreadApartmentState.
6333         
6334         Code is contributed under MIT/X11 license.
6335         
6336 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
6337
6338         * class.c: Fix windows build.
6339         * class-internals.h: Fix windows build.
6340         
6341         Code is contributed under MIT/X11 license.
6342
6343 2007-05-08  Robert Jordan  <robertj@gmx.net>
6344
6345         * process.c (CreateProcess_internal):
6346         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
6347         .CreateNoWindow was specified. Fixes #81496.
6348
6349 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6350
6351         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
6352         step in implementing IMT, replaced it with two compact arrays
6353         (interfaces_packed and interface_offsets_packed) and a bitmap that
6354         is used for isinst checks (interface_bitmap).
6355
6356         * class.c: (compare_interface_ids): compare function to pass to
6357         bsearch when looking for an interface with a given id.
6358         (mono_class_interface_offset): reimplemented using bsearch on
6359         interfaces_packed, getting the offset from interface_offsets_packed.
6360         (print_implemented_interfaces): utility debugging function.
6361         (setup_interface_offsets): reworked to initialize interfaces_packed,
6362         interface_offsets_packed and interface_bitmap.
6363
6364         * object.c: replaced all accesses to "MonoClass.interface_offsets"
6365         with uses of interfaces_packed and interface_offsets_packed.
6366
6367 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6368
6369         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
6370         mono_class_interface_offset prototype to wrap all accesses to
6371         "MonoClass.interface_offsets".
6372
6373         * class.c: Implemented mono_class_interface_offset, and wrapped all
6374         accesses to "MonoClass.interface_offsets".
6375
6376         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
6377         "MonoClass.interface_offsets".
6378
6379 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
6380
6381         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
6382         GetMethodFromHandle overloads (bug #78637).
6383
6384 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6385
6386         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
6387         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
6388
6389 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
6392         #81498.
6393
6394         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
6395         gracefully.
6396         (mono_custom_attrs_from_index): Ditto.
6397
6398         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
6399         Fixes #81501.
6400
6401 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
6402
6403         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
6404         is now allocated from a mempool.
6405
6406 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
6407
6408         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
6409         caller holds threads_lock, leading to deadlocks. Fixes #81476.
6410
6411 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
6412
6413         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
6414         mono_loader_clear_error () too late. Fixes #81463.
6415
6416 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
6417
6418         * culture-info-table.h : regenerated.
6419
6420 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
6421
6422         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
6423         is missing.
6424
6425 2007-04-25  Dick Porter  <dick@ximian.com>
6426
6427         * Makefile.am: Put the mingw enforced-optimisation back into the
6428         PLATFORM_WIN32 section.
6429
6430 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
6433         patch.
6434
6435         * image.c (mono_image_load_module): New API function to load a module reference.
6436
6437         * image.c (load_modules): Load modules lazily. Fixes #80812.
6438
6439         * class.c (mono_class_from_typeref): Use mono_image_load_module.
6440         
6441         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
6442
6443         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
6444         to mono_image_load_module_dynamic.
6445
6446 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
6447
6448         * marshal.c: Fix calling convention for CCW on non-windows
6449         platforms. STDCALL on windows, CDECL everywhere else to work 
6450         with XPCOM and MainWin COM.
6451         
6452         Code is contributed under MIT/X11 license.
6453
6454 2007-04-23  Martin Baulig  <martin@ximian.com>
6455
6456         Fix #80969.
6457
6458         * loader.c
6459         (method_from_memberref): Added `gboolean *used_context' argument.
6460         (mono_get_method_from_token): Likewise.
6461         (mono_get_method_full): Don't insert the method in the cache when
6462         `used_context' is true.
6463
6464 2007-04-23  Raja R Harinath  <rharinath@novell.com>
6465
6466         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
6467
6468         * reflection.c (mono_reflection_bind_generic_parameters): Don't
6469         create new MonoTypes for returned types.
6470         * class.c (mono_generic_class_get_class): Export mono-internal.
6471         * class-internals.h: Update to changes.
6472
6473 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
6474
6475         * threadpool.c, threadpool.h, icall-def.h: patch from
6476         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
6477
6478 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
6479
6480         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
6481         
6482         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
6483
6484         * threads.c (mono_thread_get_stack_bounds): New helper function.
6485
6486         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
6487         Correctly compute stack bounds when attaching. Fixes #81394.
6488
6489 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
6490
6491         * reflection.c: fix handling of doubles in custom attributes
6492         for the arm-fpa format (bug #81368).
6493
6494 2007-04-18  Raja R Harinath  <rharinath@novell.com>
6495
6496         * reflection.c (assembly_add_win32_resources): Mildly relax an
6497         bounds check to let the end pointer point just past the end of the
6498         allocated buffer.  (may fix #81384)
6499
6500 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
6501
6502         * culture-info-table.h : regenerated.
6503
6504 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
6507         the thread is aborted early.
6508
6509 2007-04-05  Dick Porter  <dick@ximian.com>
6510
6511         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
6512         FindFirstFile()/FindNextFile() to find entries.  This lets the
6513         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
6514         81038.
6515
6516         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
6517         the parameters of
6518         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
6519
6520 2007-04-04  Martin Baulig  <martin@ximian.com>
6521
6522         * debug-helpers.c
6523         (mono_method_desc_full_match): Add support for nested classes.
6524
6525 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
6528
6529 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
6532         waiting for too many threads.
6533
6534 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
6535
6536         * environment.c: Fix return value check on uname so we can get the 
6537         executing version on Solaris operating systems.
6538
6539 2007-03-28  Jb Evain  <jbevain@gmail.com>
6540
6541         * class.c (mono_type_get_name_recurse): Complete the
6542         fix for the creation of assembly qualified names for
6543         pointer types. Fixes #81208.
6544
6545 2007-03-27  Dick Porter  <dick@ximian.com>
6546
6547         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
6548         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
6549         changed.
6550
6551         * threads.c
6552         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
6553         the value of ReleaseMutex().
6554
6555 2007-03-27  Dick Porter  <dick@ximian.com>
6556
6557         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
6558         in little-endian order, not network endian, so must be converted
6559         to host endian here.  Fixes bug 80593.
6560
6561 2007-03-22  Jb Evain  <jbevain@gmail.com>
6562
6563         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
6564         qualified names for pointer types. Fixes #81208.
6565
6566 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
6567
6568         * marshal.c: Add support for PreserveSigAttribute. 
6569         
6570         Code is contributed under MIT/X11 license.
6571
6572 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * process.c: Fix endianness issues. Fixes #81126.
6575
6576         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
6577         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
6578
6579         * image.c (mono_image_lookup_resource): Make this work on big-endian
6580         machines.Change API contract so the caller needs to free the return value.
6581         
6582         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
6583         API change.
6584         
6585 2007-03-14  Martin Baulig  <martin@ximian.com>
6586
6587         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
6588         mono_type_get_desc() as well.
6589
6590 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
6591
6592         * icall.c:  Fix environ access in VS.  
6593         
6594 2007-03-13  Alp Toker  <alp@atoker.com>
6595
6596         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
6597         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
6598         #63841.
6599
6600 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
6603         circular references among dynamic methods. Fixes #81091.
6604
6605         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
6606
6607 2007-03-09  Martin Baulig  <martin@ximian.com>
6608
6609         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
6610
6611 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
6612
6613         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
6614         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
6615         
6616         Code is contributed under MIT/X11 license.
6617         
6618 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
6619
6620         * loader.c: Reapply patch for bug #79424.
6621
6622 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * metadata.c (mono_type_to_unmanaged): Only convert object to
6625         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
6626
6627 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
6628
6629         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
6630         (and incorrectly set) is_reference field from MonoGenericInst.
6631
6632 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6633
6634         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
6635         a little earlier.
6636
6637         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
6638
6639         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
6640
6641 2007-03-05  Miguel de Icaza  <miguel@novell.com>
6642
6643         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
6644         FileOptions.1 value to mean "temporary", map that to
6645         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
6646
6647         Fixes 80688
6648
6649 2007-03-03  Marek Habersack  <mhabersack@novell.com>
6650
6651         * appdomain.c: implement MS .Net style shadow copying. Copies of
6652         the assemblies are made in a subdirectory of the dynamic base
6653         directory, the assembly names are preserved.
6654         Copy .mdb and .config files along with the assemblies being shadowed.
6655
6656 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
6659         (emit_marshal_handleref): Ditto.
6660
6661         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
6662         on Visual C++. Fixes #80671.
6663
6664 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
6665
6666         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
6667         for clone operations.
6668
6669 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6670
6671         * marshal.c: Fix warnings.
6672
6673 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
6674
6675         * loader.c: allow case-insensitive matching of the dll name
6676         in dllmap handling when prefixed with "i:".
6677
6678 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
6679
6680         * threads.c: Fix #ifdef for dummy_apc function for VS.
6681
6682 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
6683
6684         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
6685
6686 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
6687         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
6688         giving precedence to the methods with a fully qualified name
6689         (InterfaceName.MethodName) when building the interface sections
6690         of the vtable.
6691
6692 2007-02-16  Dick Porter  <dick@ximian.com>
6693
6694         * threadpool.c (append_job): Fix fast-path array handling, so it's
6695         less likely the array will grow exponentially when the load is
6696         heavy.
6697
6698 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6699
6700         * metadata-internals.h, loader.c: fix dllmap lookup order
6701         for non-function maps, too, and prepare for fallback code.
6702
6703 2007-02-12  Robert Jordan  <robertj@gmx.net>
6704
6705         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
6706         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
6707         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
6708         GlobalFree. Fixes a part of bug #77075.
6709
6710 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
6711
6712         * loader.c: implemented typedef parent in field memberref.
6713
6714 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
6715
6716         * marshal.c: Fix warnings and remember to call Release on
6717         IUnknown of RCW.
6718         
6719         Code is contributed under MIT/X11 license.
6720
6721 2007-02-10  Miguel de Icaza  <miguel@novell.com>
6722
6723         * class-internals.h: Add MonoHandleRef definition, and
6724         handleref_class to mono_defaults. 
6725
6726         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
6727         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
6728
6729         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
6730         (do nothing on this stage)
6731         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
6732         (emit_marshal_handleref): New method, used for argument handling
6733         of HandleRefs. 
6734
6735 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
6736
6737         * class.c (mono_class_setup_parent): Lazily init com types.
6738         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
6739         init com types.
6740         * object.c (mono_remote_class_vtable): Lazily init com types.
6741         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
6742         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
6743         * domain-internals.h: Expose mono_init_com_types.
6744         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
6745         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
6746         Add support for COM Callable Wrapper marshalling.
6747         * marshal.h: Add icall definitions.
6748         * gc.c: Handle freeing of CCWs in finalizer code.
6749         
6750         Code is contributed under MIT/X11 license.
6751
6752 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
6753
6754         * reflection.c: changed all the signature encoding code to use
6755         a variable-sized buffer.
6756
6757 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6758
6759         * marshal.c: locking fixes: never take the loader lock
6760         or other runtime locks when holding the marshal lock
6761         (fixes bug#80664).
6762
6763 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
6764
6765         * marshal.c: make the delegate function pointer mapping
6766         work for the moving GC.
6767
6768 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
6769
6770         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
6771         for bug #80618.
6772
6773 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6774
6775         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
6776         gmodule.
6777
6778 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
6779
6780         * threadpool.c: made the code moving-GC safe.
6781
6782 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6783
6784         * assembly.c, boehm-gc.c, class-internals.h, class.c,
6785         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
6786         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
6787         warning cleanup.
6788         * reflection.c: warning cleanup, some threading and moving GC fixes.
6789
6790 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
6791
6792         * class.c, loader.c: create the needed Set/Get/Address array methods
6793         as well as the .ctors in mono_class_init (), fixes bug #80567.
6794
6795 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
6796
6797         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
6798         we doesn't decrease its alignment. Should fix the sparc build.
6799
6800 2007-01-24  Dick Porter  <dick@ximian.com>
6801
6802         * socket-io.c
6803         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
6804         Create the returned object if we need to ignore an unsupported
6805         socket option.  Fixes a segfault reported by Atsushi.
6806
6807 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6808
6809         * class.c, object.c: restrict GC-tracked fields to
6810         UIntPtr fields used inside corlib, so we provide better
6811         type info to the GC and also allow broken packing as in
6812         bug #80580.
6813
6814 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
6815
6816         * sgen-gc.c: removed duplicated function.
6817
6818 2007-01-19  Miguel de Icaza  <miguel@novell.com>
6819
6820         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
6821         value that means that the value is not supported, but that we
6822         should not return a failure, but instead report this as a
6823         successful operation.
6824
6825 2007-01-19  Raja R Harinath  <rharinath@novell.com>
6826
6827         Fix tests/bug79956.2.il
6828         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
6829         (mono_generic_class_get_class): If the generic definition in an
6830         enum, copy over other fields related to it.
6831
6832 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
6833
6834         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
6835         genericinst enums (bug #79215).
6836
6837 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
6838         * class.c: Fix bug 80307.
6839
6840 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
6841
6842         * image.c: if the file table is not present, try to load
6843         all the modules, since we don't have info about them
6844         having or not metadata (bug #80517).
6845         * assembly.c: allow mono_assembly_load_references () to
6846         work for netmodules.
6847
6848 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6849
6850         * image.c, metadata-internals.h, object.c: execute module
6851         cctors when running on the 2 runtime if present (bug #80487).
6852
6853 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6854
6855         * icall.c: optimized InitializeArray() on bigendian.
6856
6857 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
6858
6859         * icall.c: fix for the broken ARM FPA double format.
6860
6861 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
6862
6863         * icall.c: handle endian issues for r4 and r8 types, too, in
6864         the InitializeArray() icall.
6865
6866 2007-01-15  Miguel de Icaza  <miguel@novell.com>
6867
6868         * loader.c (mono_loader_error_prepare_exception): Clear the error
6869         once we have extracted the information from it, do this before we
6870         call into the JIT's class loading mechanisms.
6871
6872         * object.c (mono_class_create_runtime_vtable): Do not clear the
6873         loader error before calling mono_class_get_exception_for_failure
6874         as the loader error is needed inside
6875         mono_class_get_exception_for_failure to throw the error (thinko).
6876
6877         Fixes #80521
6878         
6879 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
6880
6881         * reflection.c: align fields rva data so it's faster to load at
6882         runtime.
6883
6884 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6885
6886         Prepare to simplify GenericMethod handling.
6887         * class-internals.h (mono_method_get_context): New accessor function.
6888         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
6889         rather than directly accessing '->context' field.
6890
6891         * class-internals.h (_MonoGenericParam.method): Move ...
6892         (_MonoGenericContainer): ... here.  Add into union with klass field.
6893         * class.c, icall.c, loader.c, metadata.c, reflection.c:
6894         Update to changes.
6895
6896 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
6897
6898         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
6899         the wrapper type enum and reduce relocations.
6900
6901 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6902
6903         * reflection.c (inflate_mono_method): Reuse method instantiation
6904         from the generic method, if available.
6905
6906 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6907
6908         * marshal.c (emit_marshal_variant): Fix conv_arg
6909         type in last commit, based on whether parameter is byref.
6910         
6911 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6912
6913         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
6914         marshalling.
6915         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
6916         MONO_TYPE_OBJECT back for VARIANT support.
6917
6918 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6919
6920         * marshal.c, marshal.h, icall-def.h: Implement 
6921         Marshal.ReAllocCoTaskMem.
6922
6923 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
6924
6925         * marshal.c: memory retention fixes: use the proper
6926         image cache for runtime_invoke method lookups.
6927
6928 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
6929
6930         * mempool.c: added code to help debug mempool allocations.
6931
6932 2007-01-11  Dick Porter  <dick@ximian.com>
6933
6934         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
6935         support (experimenting with faking it with IP_MTU_DISCOVER for
6936         systems that don't have IP_DONTFRAGMENT.)
6937         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
6938         icall.
6939
6940         * icall-def.h: new System.Net.Sockets.Disconnect icall.
6941
6942         * socket-io.h: Add new fields to MonoSocketAsyncResult
6943         corresponding to the new ones in Socket.cs.
6944
6945 2007-01-11  Raja R Harinath  <rharinath@novell.com>
6946
6947         Fix IronPython regression mentioned in #80249
6948         * metadata.c (do_mono_metadata_parse_generic_class): Clear
6949         'cached_context' field, since it may have been initialized as a
6950         side-effect of metadata parsing.
6951
6952         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
6953         (_MonoGenericClass.cached_class): Move here and rename from lone
6954         remaining field of ...
6955         (_MonoInflatedGenericClass): ... this.  Remove.
6956         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
6957         to changes.
6958
6959         Fix mcs/tests/test-128.cs regression.
6960         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
6961         2007-01-10 change below.
6962         [MONO_TYPE_OBJECT]: Recurse into array case.
6963
6964 2007-01-11  Raja R Harinath  <harinath@gmail.com>
6965
6966         * class-internals.h (mono_get_inflated_generic_class): Remove.
6967         * class.c (mono_get_inflated_generic_class): Remove.
6968         (mono_generic_class_get_class): Rename from
6969         mono_class_create_generic.
6970         (mono_class_from_mono_type) [GENERICINST]: Use it.
6971         * reflection.c, metadata.c: Update to changes.  Use
6972         'mono_class_from_mono_type'.
6973
6974 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
6975
6976         * reflection.c: use passed type when encoding an array element
6977         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
6978
6979 2007-01-09  Robert Jordan  <robertj@gmx.net>
6980
6981         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
6982         result arguments (someDelegate.EndInvoke (unrelatedAres)).
6983         Fixes bug #80392.
6984
6985 2007-01-09  Raja R Harinath  <rharinath@novell.com>
6986
6987         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
6988
6989         * object.c (set_value): Avoid aliasing between type->data.klass
6990         and type->data.generic_class.
6991
6992         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
6993
6994 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6995
6996         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
6997         between type->data.klass and type->data.generic_class.
6998
6999 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
7000
7001         * marshal.c: In MS.NET, StringBuilder objects are not copied by
7002         value in out parameters.
7003
7004 2007-01-08  Raja R Harinath  <rharinath@novell.com>
7005
7006         Simplify invariant for MonoGenericClass::klass field.
7007         * class.c (mono_class_create_generic): Verify 'klass' is null.
7008         * metadata.c (do_mono_metadata_parse_generic_class): Don't
7009         initialize 'klass' field.
7010
7011 2007-01-05  Raja R Harinath  <rharinath@novell.com>
7012
7013         Ongoing work to avoid redundant data and simplify invariants.
7014         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
7015         'generic_class', and change type to a GenericInst.
7016         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
7017         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
7018
7019 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
7020
7021         * class.c : skip io-layer under PLATFORM_WIN32.
7022
7023 2007-01-03  Tor Lillqvist  <tml@novell.com>
7024
7025         Fix #80305: In a bundled executable, look in the bundled exe
7026         assembly to determine the runtime version. Add the possibility to
7027         bundle also the machine.config file.
7028         
7029         * assembly.c (mono_assembly_open_from_bundle): Make
7030         non-static. Allow being called even if we have no bundled
7031         assemblies, and return NULL right away in that case.
7032
7033         * domain-internals.h: Declare mono_assembly_open_from_bundle()
7034         here.
7035
7036         * domain.c (app_config_parse): Take an assembly exe file name as
7037         parameter instead of a config file name. Check for a bundled
7038         config file for that assembly by calling
7039         mono_config_string_for_assembly_file() (see below) before looking
7040         for one in the file system.
7041         (get_runtimes_from_exe): Corrsponding change to call of
7042         app_config_parse().
7043         (get_runtimes_from_exe): Check for bundled assembly exe file first
7044         by calling mono_assembly_open_from_bundle(). If no bundled
7045         assembly exe file is found, call mono_image_open() as before to
7046         look it up in the file system.
7047
7048         * mono-config.c: Add variable bundled_machinec_onfig.
7049         (mono_config_string_for_assembly_file): New function.
7050         (mono_config_for_assembly): Move code snippet that looks for a
7051         bundled assembly .config file into the above new function. Call
7052         it.
7053         (mono_register_machine_config, mono_get_machine_config): New
7054         functions to set and retrieve
7055
7056         * assembly.h: Declare mono_register_machine_config().
7057
7058         * mono-config.h: Declare mono_get_machine_config() and
7059         mono_config_string_for_assembly_file().
7060
7061         * icall.c: No declaration of environ necessary on Win32. It is
7062         declared (as a macro expanding to a function call) in stdlib.h.
7063         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
7064         New internal mono function. Returns the value of
7065         mono_get_machine_config() as a Mono string.
7066
7067         * icall-def.h: Add get_bundled_machine_config().
7068
7069 2007-01-04  Raja R Harinath  <rharinath@novell.com>
7070
7071         Remove redundant field
7072         * class-internals.h (_MonoGenericContext.container): Remove field.
7073         * loader.c (mono_method_get_signature_full): Don't parse a
7074         "container" for a signature parse when the signature is inflated
7075         immediately.
7076         (method_from_methodspec): Likewise, for a generic_inst.
7077         * class.c, metadata.c, reflection.c: Update to changes.
7078
7079 2006-01-04  Raja R Harinath  <rharinath@novell.com>
7080
7081         * class-internals.h (_MonoGenericClass): Rename 'context' field to
7082         'cached_context', and change semantics -- it starts off NULL, and
7083         is initialized on demand.
7084         * class.c (mono_generic_class_get_context): New accessor to
7085         replace 'context' field accesses.
7086         (mono_class_get_context): New helper.
7087         (*): Update to changes.
7088         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
7089
7090 2007-01-03  Miguel de Icaza  <miguel@novell.com>
7091
7092         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
7093         before the memcpy.   Fixes Marshal2 regression.
7094
7095 2007-01-02  Jb Evain  <jbevain@gmail.com>
7096
7097         * blob.h: add a MONO_TYPE_ENUM definition
7098         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
7099         fix the encoding of arrays of enums in custom attributes.
7100
7101         Fixes #79666.
7102
7103 2007-01-01  Miguel de Icaza  <miguel@novell.com>
7104
7105         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
7106         string is null terminated, but only cut the string short if it
7107         overflows the buffer.   
7108         
7109         (mono_string_to_byvalstr): Also fix this routine.   The code here
7110         was not properly terminating a string (it was only terminated
7111         because of the previous catch-all memset). 
7112
7113         I left the memset, because I do not know if applications expect
7114         the runtime to clear this region. 
7115
7116         Fixes #79944.
7117
7118         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
7119         Clear the error before returning to unmanaged code to prevent the
7120         runtime from being confused later on (fixes  80420).
7121         (ves_icall_type_from_name): Always call mono_loader_clear_error
7122         after parsing a type that could have failed.
7123         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
7124
7125         * loader.c (mono_loader_clear_error): Fix indentation.
7126
7127 2006-12-28  Martin Baulig  <martin@ximian.com>
7128
7129         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
7130
7131 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
7132
7133         * reflection.c: patch from Rolf Bjarne Kvinge to fix
7134         getting a token for an EnumBuilder.
7135
7136 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7137
7138         * reflection.c: be more careful in case resource generation
7139         fails to create the data array.
7140
7141 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
7142
7143         * sgen-gc.c: write barrier for clone and fix unregister handles.
7144
7145 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
7146
7147         * reflection.c: some fixes needed in the generics code for the moving GC.
7148
7149 2006-12-22  Robert Jordan  <robertj@gmx.net>
7150
7151         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
7152         account. Fixes bug #80299.
7153
7154 2006-12-21  Raja R Harinath  <rharinath@novell.com>
7155
7156         Fix WaitHandle usage in delegates.
7157         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
7158         * object.c (mono_wait_handle_new): Use the property set method to
7159         initialize the handle.
7160         (mono_wait_handle_get_handle): New.
7161         * threadpool.c (mono_async_invoke): Use it.
7162         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
7163         Likewise.
7164         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
7165
7166 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
7167
7168         * marshal.c (emit_marshal): Call emit_marshal_variant and
7169         emit_marshal_com_interface when applicable.
7170         (emit_marshal_variant, emit_marshal_com_interface): Add
7171         methods for this case and remove if's from emit_marshal_object.
7172         
7173 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
7174
7175         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
7176
7177 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
7178
7179         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
7180         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
7181         and GlobalFree on Windows. Remove FIXME.
7182
7183 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
7184
7185         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
7186         implementation for managed objects.
7187
7188 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
7189
7190         * object.c: implemented code to be used for checking
7191         that no reference field overlaps with non-references.
7192
7193 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7194
7195         * threadpool.c: fix queue code to be compatible with the
7196         moving GC.
7197
7198 2006-12-18  Miguel de Icaza  <miguel@novell.com>
7199
7200         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
7201         in structures by throwing ArgumentNullException.
7202
7203         (emit_marshal_safehandle): Also when they are null parameters.
7204
7205         (emit_marshal_safehandle): Add support for ref
7206         SafeHandles parameters
7207
7208 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7209
7210         * profiler.c: updated to use the mono-dl API instead of
7211         gmodule.
7212
7213 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7214
7215         * profiler.c: updated to use the mono-dl dynamic loading
7216         API instead of gmodule.
7217
7218 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
7219
7220         * profiler.c: use readlink, older versions of glib don't have
7221         g_file_read_link ().
7222
7223 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7224
7225         * profiler.c: try to detect the path to mono if libc fails to provide
7226         a useful name (bug #80286).
7227
7228 2006-12-16  Raja R Harinath  <rharinath@novell.com>
7229
7230         Fix #80242
7231         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
7232         instance, use the generic type definition instead.
7233         (ves_icall_Type_GetNestedTypes): Likewise.
7234         * class.c (mono_class_create_generic): Always set the
7235         nested_classes of a generic instance to NULL, even if the generic
7236         type definition has nested types.
7237
7238 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
7239
7240         * marshal.c (mono_string_from_bstr): Revert previous Windows change
7241         and fix on Linux.
7242         
7243 2006-12-15  Miguel de Icaza  <miguel@novell.com>
7244
7245         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
7246         my arguments were in the wrong order.   I also fixed the Windows
7247         version which seems to have had the same issue.
7248
7249         (mono_free_bstr): On Unix, this is g_free.
7250         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
7251         conversions (for the tests in corlib to pass).
7252
7253 2006-12-14  Miguel de Icaza  <miguel@novell.com>
7254
7255         * marshal.c (emit_ptr_to_object_conv): For now, ignore
7256         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
7257         exception if a ref SafeHandle in a struct has changed).
7258         
7259         (emit_struct_conv): Do not perform layout checks for classes
7260         derived from SafeHandle, as those are specially handled. 
7261
7262         (emit_object_to_ptr_conv): Add support for
7263         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
7264
7265         (emit_marshal_safehandle): Implement conversion of return values
7266         of safehandles (MARSHAL_ACTION_CONV_RESULT).
7267         
7268         * threads.c: WaitHandle now is compiled with two different handles
7269         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
7270         for 2.0.
7271         
7272         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
7273         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
7274         these routines to cope with both kinds of fields.
7275
7276 2006-12-12  Miguel de Icaza  <miguel@novell.com>
7277
7278         * metadata.c (mono_type_to_unmanaged): Handle the case where
7279         type->data.klass is a SafeHandle, and in that case, return the
7280         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
7281         MONO_MARSHAL_CONV_SAFEHANDLE. 
7282
7283 2006-12-11  Miguel de Icaza  <miguel@novell.com>
7284
7285         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
7286         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
7287         calling emit_marshal_object.
7288
7289         (emit_marshal_safehandle): Implement marshalling of
7290         SafeHandle parameters (no ref support yet).
7291
7292         (MarshalAction): Document the defines as I implement
7293         them for SafeHandle.
7294
7295         (emit_marshal_object): indentation police.
7296
7297         * class-internals.h: Define MonoSafeHandle.
7298         Add safehandle_class to MonoDefaults type.
7299
7300         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
7301         list of classes to check for fields. 
7302
7303         * domain.c (mono_init_internal): Add SafeHandle to the list of
7304         mono_defaults loaded.
7305
7306 2006-12-15  Raja R Harinath  <rharinath@novell.com>
7307
7308         Fix #80253
7309         * reflection.c (mono_reflection_bind_generic_parameters): If the
7310         generic type definition is a type builder, ensure that it is fully
7311         initialized before instantiating it.  Kill some dead code.
7312
7313 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
7314
7315         * object.c: clear the loader_error () before loading
7316         more metadata stuff (bug #80258).
7317
7318 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
7319
7320         * icall.c, icall-defs.h: type modifiers icalls for
7321         parameters and properties.
7322
7323 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
7324
7325         * object.c, icall.c: fixed warnings.
7326
7327 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7328
7329         * marshal.c: fixed a couple of leaks and coding style in a few places.
7330
7331 2006-12-08  Dick Porter  <dick@ximian.com>
7332
7333         * process.c: Cope with NULL ProcessStartInfo arguments on windows
7334         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
7335         80173.
7336
7337 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7338
7339         * process.c: ProcessStartInfo may have only filename set and
7340         arguments can be NULL.
7341
7342 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7343
7344         * icall.c: fix leak found by Robert Jordan.
7345
7346 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7347
7348         * marshal.c, marshal.h: generate managed method to access an element
7349         of a multi-dimensional array.
7350
7351 2006-11-30  Paolo Molaro (lupus@ximian.com)
7352
7353         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
7354
7355 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7356
7357         * icall.c: back out GetFields () fix until the serialization code is
7358         fixed to not depend on the incorrect behaviour.
7359
7360 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
7361
7362         * profiler.c: provide defaults if none are set.
7363
7364 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
7365
7366         * Makefile.am, attrdefs.h: new public header file with
7367         constants for attributes for use by embedders.
7368
7369 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
7370
7371         * icall.c: GetFields () fix for bug #80064.
7372
7373 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
7374
7375         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
7376         removed long unused icalls.
7377
7378 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
7379   
7380         * marshal.c: 
7381                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
7382                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
7383                 can be generated without a delegate class.
7384                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
7385         
7386         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7387
7388 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7389
7390         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
7391         #80069.
7392
7393 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7394
7395         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
7396         icall-def.h: added icalls needed by System.GC.
7397
7398 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
7399
7400         * loader.c: ensure the class in catch clauses is handled
7401         correctly for generics methods (fixes bug#79980).
7402
7403 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
7404
7405         * monitor.h, monitor.c: added mono_locks_dump () function
7406         to help debug deadlocks involving managed locks.
7407
7408 2006-11-13  Dick Porter  <dick@ximian.com>
7409
7410         * file-io.c (get_file_attributes): If the file is a symlink try
7411         and get the stat data for the target, but also add the
7412         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
7413         the specs for the windows symlink support, but will probably have
7414         to be reworked when I have test data from a vista machine.  Fixes
7415         bug 79887.
7416
7417 2006-11-13  Dick Porter  <dick@ximian.com>
7418
7419         * gc.c (mono_domain_finalize): 
7420         * marshal.c (mono_delegate_begin_invoke): 
7421         * threadpool.c (socket_io_init, mono_thread_pool_init)
7422         (mono_thread_pool_finish): 
7423         * monitor.c (mono_monitor_try_enter_internal): 
7424         * threads.c (mono_thread_resume, mono_thread_init)
7425         (mono_thread_suspend_all_other_threads)
7426         (mono_thread_execute_interruption): 
7427         * appdomain.c (mono_domain_unload): Check for NULL error returns
7428         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
7429         75733.
7430
7431 2006-11-11  Miguel de Icaza  <miguel@novell.com>
7432
7433         * process.c
7434         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
7435         Only close the handle if the value of the handle is not
7436         INVALID_HANDLE_VALUE.  This just makes the process a bit more
7437         robust.
7438
7439         Improvement for #75733, so that we do not run into this problem. 
7440
7441         
7442         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
7443         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
7444         internal variables.  Fixes #79462 
7445         
7446
7447 2006-11-09  Dick Porter  <dick@ximian.com>
7448
7449         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7450         Use poll() not select().  Fixes bug 79397.
7451
7452 2006-11-09  Raja R Harinath  <rharinath@novell.com>
7453
7454         Fix #79872
7455         * assembly.c (mono_assembly_load_from_full): Check that the given
7456         image has an assembly manifest.
7457
7458 2006-11-09  Ankit Jain  <jankit@novell.com>
7459
7460         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
7461         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
7462         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
7463
7464 2006-11-07  Dick Porter  <dick@ximian.com>
7465
7466         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7467         Put the old resolver behaviour back for pre-2.0 profiles.
7468
7469 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
7470
7471         * threadpool.c: precise GC and locking fixes.
7472
7473 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
7474
7475         * class.c: don't load types that have an explicit unaligned
7476         managed reference. Provide better info in the TypeLoad exception.
7477         Part of the fix for bug #79744.
7478         * object.c: use the correct check for class type load issues.
7479
7480 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
7481
7482         * class.c: enforce alignment of fields with managed references
7483         even when Pack=1 is forced by the user (bug #77788).
7484
7485 2006-11-03  Dick Porter  <dick@ximian.com>
7486
7487         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7488         If the address reverse lookup fails, return it as the hostname
7489         anyway.  Fixes bug 79721.
7490
7491 2006-11-03  Dick Porter  <dick@ximian.com>
7492
7493         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
7494         Fix build on Windows.
7495
7496 2006-11-02  Dick Porter  <dick@ximian.com>
7497
7498         * icall-def.h: 
7499         * object-internals.h: 
7500         * exception.c (mono_get_exception_thread_interrupted): 
7501         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
7502         Fixes bug 74525.
7503
7504         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
7505         Check for pending Thread.Interrupt.
7506
7507 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
7508         * loader.c: Fixed bug 79684.
7509
7510 2006-10-27  Dick Porter  <dick@ximian.com>
7511
7512         * file-io.c (get_file_attributes): Force symlinks to directories
7513         to be returned as a regular file.  Fixes bug 79733.
7514 2006-10-26  Dick Porter  <dick@ximian.com>
7515
7516         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
7517         CreateFile to open a directory then we need to set the
7518         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
7519
7520 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
7521
7522         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
7523         friends.
7524
7525 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7526
7527         * sgengc.c: small cleanup of timer code.
7528
7529 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
7530
7531         * sgen-gc.c: fix some warnings and start adding support for
7532         complete object removal on domain unload.
7533
7534 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
7535
7536         * assembly.c: build_assembly_name should not consider a version
7537         number without build or revision number invalid. Fixes bug #79715.
7538
7539 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
7540
7541         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
7542         call kernel32 function OutputDebugString directly.
7543         
7544         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7545         
7546 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
7547
7548         * reflection.c: small cleanup, using a function to insert a MonoString
7549         in the string heap.
7550
7551 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
7552
7553         * reflection.c: moving GC fixes.
7554
7555 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
7556
7557         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
7558         all the objects with finalizers belonging to an unloading appdomain.
7559
7560 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
7561
7562         * sgen-gc.c: added ability to allocate even when the nursery is fully
7563         pinned and fixed a couple of bugs.
7564
7565 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * threads.h: Revert the last change for now.
7568
7569         * threads.h (mono_thread_get_pending_exception): Rename this to
7570         mono_thread_get_undeniable_exception ().
7571
7572 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
7573
7574         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
7575         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
7576         when fname does not refer to valid assembly. This result in a more
7577         meaningful error message.
7578         * exception.c: added mono_get_exception_bad_image_format2 which 
7579         constructs a BadImageFormatException using the ctor taking a custom
7580         message and the file name. Passing in a NULL msg results in a default
7581         message.
7582         * exception.h: define mono_get_exception_bad_image_format2 function.
7583         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
7584         when file name pointed to an invalid IL image. Use 
7585         mono_get_exception_file_not_found2 to construct FileNotFoundException,
7586         as this results in a more meaningful error message.
7587
7588 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
7591         #79465.
7592
7593 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
7594
7595         * metadata.c (mono_type_size): Change the align parameter to guint32 for
7596         consistency with the other _size functions.
7597         (mono_type_stack_size): Ditto.
7598
7599         * class.c object.c icall.c: Fix warnings caused by the above change.
7600
7601         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
7602
7603         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
7604
7605         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
7606
7607 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7608
7609         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
7610         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
7611         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
7612         threadpool.h, threads-types.h: mark more internal functions.
7613
7614 2006-10-11  Dick Porter  <dick@ximian.com>
7615
7616         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7617         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
7618         reproduce the bug even before applying the fix.)
7619
7620 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
7621
7622         * reflection.c: allow retrieving attributes for arguments in generic
7623         methods (bug #79241).
7624
7625 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
7626
7627         * debug-mono-symfile.c: properly check fopen () result (found by
7628         coverity).
7629
7630 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
7631
7632         * reflection.c: make error message clearer and fixed two
7633         issuelets found by Coverity.
7634
7635 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
7636
7637         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
7638
7639 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7640
7641         * object-internals.h, gc-internal.h, profiler-private.h:
7642         mark internal functions.
7643
7644 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7645
7646         * reflection.c: put data in the text section.
7647         * icall.c: recognize more types in type_from_typename ().
7648         * process.c, marshal.c: added some GC FIXMEs.
7649
7650 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7651
7652         * loader.c: check for NULL before initializing.
7653
7654 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
7655
7656         * gc.c (finalizer_thread): Use a non-alertable wait here.
7657
7658         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
7659         until the correct solution is found.
7660
7661 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * reflection.c (mono_module_get_object): Avoid an assert when operating on
7664         modules with no metadata. Fixes #79596.
7665
7666         * image.c (load_metadata_ptrs): Put back the error message when
7667         the #- heap is encountered since the support is not complete yet.
7668
7669 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7670
7671         * gc.c: do not allow the user to SuppressFinalize () a
7672         delegate because it would leak the trampoline if present.
7673
7674 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7675
7676         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
7677         PropertyPtr table.
7678
7679 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
7682
7683         * metadata.c (mono_metadata_get_param_attrs): Ditto.
7684
7685         * row-indexes.h: Add definitions for *Ptr tables.
7686
7687         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
7688
7689         * metadata.c (mono_metadata_translate_token_index): New helper function to
7690         translate table indexes used in uncompressed metadata.
7691         (mono_metadata_decode_table_row): Ditto.
7692         (mono_metadata_decode_table_row_col): Ditto.
7693
7694         * metadata.c: Add table schema for *Ptr tables.
7695
7696         * class.c loader.c: Use the new helper function to access the affected metadata
7697         tables.
7698         
7699         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
7700         #38532.
7701         
7702 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
7705         sequences which can be unbounded in size. Fixes #79583.
7706
7707 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
7710         static initialization.
7711
7712         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
7713
7714         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
7715
7716         * domain.c (mono_domain_free): Free up type_init_exception_hash.
7717
7718         * object.c (mono_runtime_class_init): Implement correct semantics when a static
7719         ctor fails, i.e. throw the same exception on subsequent accesses.
7720         
7721 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
7722
7723         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
7724         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
7725         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
7726         Handle marshalling of interfaces and VARIANTs contained in structs.
7727         
7728         Code is contributed under MIT/X11 license.
7729         
7730 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
7731
7732         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
7733         
7734         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
7735         mempool.
7736
7737 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7738
7739         * console-io.c: ignore previous SIGINT handler.
7740
7741 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
7744         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
7745         #79460, #79461, #79485.
7746
7747         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
7748
7749         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
7750         #79217.
7751
7752 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
7753
7754         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
7755         could be generated from it.
7756
7757 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
7758
7759         * rand.c: fix read loop to correctly handle EINTR.
7760
7761 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7762
7763         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
7764         internal calls are defined to keep methods closer to the declaring
7765         type and allow a significant reduction in runtime relocations and
7766         memory usage.
7767
7768 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
7769
7770         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
7771         exception message to have FileNotFoundException use the default
7772         assembly load error message. Fixes bug #79426.
7773         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
7774
7775 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7776
7777         * threadpool.c: (start_thread_or_queue) use the root domain when
7778         creating the thread instead of the async object one.
7779
7780 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
7781
7782         * class.c, object.c, class-internals.h, reflection.c:
7783         for arrays, store element_size inside MonoClass (speedup
7784         for array object creation).
7785
7786 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
7787
7788         * icall.c: fixed CodeBase to use the file name and not the module
7789         name (bug #79365).
7790
7791 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7792
7793         * mono-debug.c, mono-debug.h: export find_method as
7794         mono_debug_find_method ().
7795
7796 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7797
7798         * debug-helpers.c, class-internals.h: added a few functions useful
7799         when debugging under gdb.
7800
7801 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7802
7803         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
7804         characters that need special handling.
7805
7806 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
7807
7808         * mono-config.c: make the os/cpu specification more flexible,
7809         allowing lists and negation.
7810
7811 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
7812
7813         * marshal.c: COM Interop fixes. Handle case where method->klass.
7814         is interface. Handle BSTR/MonoString when null. Use CDECL as 
7815         calling convention on non-windows platforms. This is for
7816         compatibility with XPCOM and MainWin COM.
7817         
7818         Code is contributed under MIT/X11 license.
7819         
7820
7821 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
7822
7823         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
7824         correctly. Fixes #79217.
7825
7826         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
7827
7828 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
7829
7830         * mono-config.c: allow both an os and cpu attribute for dllmap
7831         and dllentry elemnets to enable a single config file to be used
7832         for multiple architectures.
7833
7834 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
7835
7836         * loader.c: MonoLoaderError was cleared too soon on load failure.
7837         Fixes bug #79424.
7838
7839 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
7840
7841         * icall.c: use the defining class vtable when accessing a
7842         static field, not a pobblibly derived class.
7843
7844 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * icall.c string-icalls.c: Remove references to unicode.h.
7847
7848         * unicode.h unicode.c Makefile.am: Remove these unused source files.
7849
7850         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
7851
7852         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
7853         indicating the image where custom marshaller types should be looked up.
7854         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
7855         custom marshallers, instead of corlib. Fixes #79425.
7856
7857 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
7858
7859         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
7860
7861 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
7862
7863         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
7864         Implement Environment.ProcessorCount.
7865         
7866         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
7867         Implement Environment.ProcessorCount.
7868         
7869         * icall.c: 
7870         Add Environment.ProcessorCount icall.
7871         
7872         Patch by Jason McFall.
7873
7874 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7875
7876         * assembly.c: don't append .exe/.dll when the filename already contains
7877         one of those extensions.
7878
7879 2006-09-12  Martin Baulig  <martin@ximian.com>
7880
7881         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
7882         to array interfaces.
7883
7884 2006-09-11  Martin Baulig  <martin@ximian.com>
7885
7886         * reflection.c (mono_image_build_metadata): Create the
7887         MethodImpl's after emitting all types and methods, so we don't
7888         need another fixup pass for them.
7889
7890 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * class.c (mono_class_from_name_case): Fix regression introduced by the last
7893         change.
7894
7895 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
7896
7897         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
7898         unload.
7899
7900 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
7901
7902         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
7903         args is not set. Fixes #78926.
7904
7905 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
7906
7907         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
7908
7909         * image.c (load_class_names): Move this to class.c, and rename it to 
7910         'mono_image_init_name_cache'.
7911         (load_modules): Fix a warning.
7912
7913         * class.c icall.c image.c: Initialize image->name_cache lazily.
7914
7915         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
7916         on its name using information in the AOT file.
7917
7918         * class.c (mono_class_from_name): Use the new hook function.
7919
7920 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * reflection.c (mono_param_get_objects): Handle enum default parameter values
7923         correctly.
7924
7925         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
7926         Fixes #79289.
7927         
7928 2006-09-06  Martin Baulig  <martin@ximian.com>
7929
7930         * icall.c (mono_lookup_internal_call): Small fix.
7931
7932 2006-09-05  Raja R Harinath  <rharinath@novell.com>
7933
7934         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
7935         double g_free.
7936
7937 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
7938
7939         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
7940         when --debug is specified.
7941
7942 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
7943
7944         * class.c (setup_generic_array_ifaces): Fix a warning.
7945
7946 2006-09-04  Miguel de Icaza  <miguel@novell.com>
7947
7948         * Temporarily remove the patch to assemly.c that checks the
7949         assembly versions as it breaks our gacutil.
7950
7951 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
7952
7953         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
7954
7955         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
7956         a net 1.0 runtime.
7957
7958         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
7959         created using the default ctor. Fixes #79152.
7960         (mono_string_builder_to_utf16): Ditto.
7961
7962 2006-09-01  Martin Baulig  <martin@ximian.com>
7963
7964         Fix handling of the generic array interfaces.
7965
7966         * class-internals.h
7967         (MonoDefaults): Removed `generic_array_class' and added
7968         `generic_ilist' class.
7969
7970         * class.c
7971         (mono_bounded_array_class_get): Add the new generic array interfaces.
7972         (setup_generic_array_ifaces): New static method; create vtable
7973         entries for each method in the generic array interfaces.
7974
7975         * metadata.c
7976         (select_container): Allow "parent-less" generic methods.
7977
7978         * marshal.c
7979         (mono_marshal_get_generic_array_helper): New public method.
7980
7981         * icall.c
7982         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
7983         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
7984         moved the interncall into System.Array.
7985
7986 2006-09-01  Raja R Harinath  <rharinath@novell.com>
7987
7988         A few more cases of avoiding work on types with ->byref set.
7989         Has the real fix for #79238
7990         * icall.c (is_generic_parameter): New helper.
7991         (ves_icall_Type_GetGenericParameterPosition): Use it.
7992         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
7993         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
7994         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7995         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
7996         reference types.
7997         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
7998         reference types.
7999         (ves_icall_Type_get_IsGenericInstance): Likewise.
8000         (ves_icall_Type_get_IsGenericType): Likewise.
8001
8002 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
8003
8004         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
8005         class if possible.
8006
8007         * mempool.h (mono_mempool_get_allocated): New helper function.
8008
8009         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
8010         change.
8011
8012         * mempool.c: Fix warnings and the calculation of stats.
8013
8014         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
8015
8016         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
8017
8018         * loader.c (mono_get_method_from_token): Update method_count stat.
8019
8020         * class-internals.h (MonoStats): Add some stats.
8021
8022 2006-08-31 Robert Jordan  <robertj@gmx.net>
8023
8024         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
8025         with managed variants.
8026         All code is contributed under the MIT/X11 license.
8027         
8028 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
8031         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
8032
8033         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
8034
8035         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
8036         with cycles in classes.
8037
8038         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
8039
8040         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
8041         missing a [MarshalAs] directive. Fixes #79203.
8042
8043         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
8044         klass->marshal_info. Fixes #79217.
8045
8046 2006-08-30  Martin Baulig  <martin@ximian.com>
8047
8048         Committing a patch from Joachim Ante <joe@otee.dk>:
8049         Add support for binary data symbol stores.
8050
8051         * debug-mono-symfile.c
8052         (mono_debug_open_mono_symbol_file): Renamed into
8053         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
8054         arguments.
8055
8056         * mono-debug.c
8057         (mono_debug_open_image): Added `raw_contents' and `size' args.
8058         (mono_debug_init_2_memory): New public function.
8059
8060 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
8061
8062         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
8063
8064 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8065
8066         * appdomain.c: implement support for ShadowCopyFiles.
8067
8068 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
8069
8070         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
8071         when value is NULL (and should remove CID #51).
8072
8073 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8074
8075         * image.c: moved 2 functions to ../utils.
8076
8077 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
8078
8079         * gc.c: cope with the target object of a GC handle being NULL
8080         (bug #78877).
8081
8082 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
8083
8084         * class.c: recursively check parent's explicit implementations
8085         of interface methods (fixes bug #79125).
8086
8087 2006-08-19  Miguel de Icaza  <miguel@novell.com>
8088
8089         * filewatcher.c: Avoid warnings when building, do not redefine
8090         constants that are defined.
8091
8092         Remove warnings.
8093
8094 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8095
8096         * image.c: don't fail when the link points to an absolute path.
8097
8098 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
8099
8100         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
8101         Fix CID #3.
8102
8103 2006-08-17  Miguel de Icaza  <miguel@novell.com>
8104
8105         * image.c (full_path): A new method used to obtain the actual path
8106         of an assembly even in the presence of symbolic links.  
8107
8108         This is necessary for the case where we are running a binary that
8109         has been GACed, but we are using the "published" path name
8110         ($prefix/mono/1.0/blah.exe) which happens to point to the real
8111         file in the GAC.
8112
8113         This was the source of the failure for the `xsp' command with the
8114         recent AppDomain changes, as far as the runtime was concerned,
8115         there were two different assemblies: $prefix/mono/1.0/blah.exe and
8116         $prefix/mono/gac/blah/version/blah.exe.
8117
8118         (do_mono_image_open): use full path
8119
8120 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
8123
8124 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
8125
8126         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
8127         domain_id is supplied. Fix CID #241 and corlib's unit tests.
8128
8129 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
8132         small structures. Fixes #78990.
8133
8134 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8135
8136         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
8137
8138         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
8139
8140 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8141
8142         * appdomain.c:
8143         * marshal.c: don't load all the assemblies from a domain into newly
8144         created ones. The new domains might have different rules and load
8145         assemblies from different locations. Fixes bug #76757.
8146
8147         Patch by Lluis. Conflicts resolved by Brian Crowell.
8148
8149 2006-08-16  Alp Toker  <alp@atoker.com>
8150
8151         * socket-io.c: First half of the fix for #79084.
8152         Set sa_size to the length of the content, not that of the struct.
8153         Don't add NULL suffix to the content, this should be done in
8154         managed code if needed.
8155
8156 2006-08-14  Raja R Harinath  <rharinath@novell.com>
8157
8158         Fix part of #79012
8159         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
8160         mono_metadata_parse_type returns NULL.
8161
8162 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
8163
8164         * normalization-tables.h : new file for string normalization data.
8165         * locales.c, locales.h, icall.c :
8166           added load_normalization_resource() for string normalization,
8167           and icall as well.
8168         * Makefile.am : added normalization-tables.h to the sources.
8169
8170 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * marshal.c: Add more helper functions to reduce code duplication and use them
8173         everywhere.
8174
8175 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
8176
8177         * marshal.c: Fix non-x86 stdcall warnings.
8178         
8179         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
8180         them everywhere.
8181
8182 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
8183
8184         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
8185         type check on multi-dimensional arrays. Fixes #79000.
8186
8187 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
8188
8189         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
8190         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
8191         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
8192         * class-internals.h: add is_com_object to class structure.
8193         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
8194         null checks to COM object marshalling. Fix .ctor call on RCW.
8195         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
8196         
8197         All code is contributed under the MIT/X11 license.
8198
8199 2006-08-09  Dick Porter  <dick@ximian.com>
8200
8201         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
8202         racing mono_monitor_allocator_lock() somewhere, so don't delete
8203         the critical section for now.  Found by running and exiting
8204         monodevelop.
8205
8206 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
8207
8208         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
8209         (ves_icall_System_ComObject_FindInterface): Ditto.
8210         (ves_icall_System_ComObject_CacheInterface): Ditto.
8211
8212         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
8213         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
8214
8215 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8216
8217         * threadpool.c: treat pipes from process asynchronous reads as sockets
8218         when reading from them, so we get select/poll or epoll to wait for
8219         data.
8220
8221 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
8222
8223         * loader.c: Fix a typo (CID #233) in the null check.
8224
8225 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
8226
8227         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
8228         Hopefully fixes #78949.
8229         
8230         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
8231         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
8232         bytes. Fixes #78972.
8233
8234 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8235
8236         * filewatcher.c: we need to set errno here.
8237
8238 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8239
8240         * filewatcher.c: let Win32Exception get the error value.
8241
8242 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8243
8244         * filewatcher.c: translate errno into win32 errors for Win32Exception
8245         to know what happened.
8246
8247 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * threadpool.c: Fix more warnings.
8250
8251         * assembly.c (search_loaded): Fix warnings.
8252
8253         * threadpool.c (mono_thread_pool_finish): Fix warnings.
8254         (mono_async_invoke): Ditto.
8255
8256 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
8257
8258         * object.c (mono_remote_class_vtable): Need to create proxy vtable
8259         entries for __ComObject type in addition to ComImport types.
8260         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
8261         about hash table.
8262         
8263         All code is contributed under the MIT/X11 license.
8264
8265 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
8266
8267         * image.c: avoid tentative loading of modulerefs that contain
8268         no metadata (P/Invoke library names).
8269
8270 2006-07-28  Dick Porter  <dick@ximian.com>
8271
8272         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
8273         mono_loader_lock() somewhere, so don't delete the critical section
8274         for now.  Found by running and exiting monodevelop.
8275
8276 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8277
8278         * filewatcher.c: define the inotify syscalls when we're building on
8279         linux and have sys/syscall.h. The build system might not have support
8280         for inotify but the target system might have it.
8281
8282 2006-07-26  Miguel de Icaza  <miguel@novell.com>
8283
8284         * domain.c: Documentation updates.
8285
8286         * loader.c (mono_free_method): Do not release the method
8287         information if we are being profiled, as profilers will use this
8288         information at shut down to present some data to the user.
8289
8290         This is needed so that the profiler does not crash, as the
8291         profiler tends to keep MonoMethods around, and they might become
8292         invalid if we free these.
8293
8294         (mono_get_method_constrained): Return the original CIL stream
8295         method as well, so verification can be performed against it.
8296
8297 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8298
8299         * filewatcher.[ch]: support for inotify file system watcher.
8300         * icall.c: add new internal calls for the inotify file system watcher.
8301
8302 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8303
8304         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
8305         #78888.
8306
8307 2006-07-20  Dick Porter  <dick@ximian.com>
8308
8309         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
8310         warning.
8311
8312 2006-07-20  Dick Porter  <dick@ximian.com>
8313
8314         * threads.c (start_wrapper): Do the thread cleanup while we still
8315         hold a reference to its object.  Fixes bug 78123.
8316
8317 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
8318
8319         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
8320         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
8321           "managed-to-managed".
8322         * icall.c: Redirect string constructors that take sbyte* to
8323           ves_icall_System_String_ctor_RedirectToCreateString.
8324         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
8325           to CreateString () methods with matching signature.
8326         * reflection.c: Use original security informations for
8327           MONO_WRAPPER_MANAGED_TO_MANAGED.
8328         * security-manager.c: Use original security informations for
8329           MONO_WRAPPER_MANAGED_TO_MANAGED.
8330         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
8331           that is a placeholder and only its address should be used.
8332         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
8333           that is a placeholder and only its address should be used.
8334
8335 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
8336
8337         Begin implementing COM Interop.
8338         * appdomain.c: Increment corlib version.
8339         * class.c: Set ComImport classes' parent to __ComObject.
8340         * loader.c: Mark cominterop methods as such.
8341         * domain.c: Add __ComObject class to MonoDefaults structure.
8342         * image.c: Add 2 hashtables to the image for COM Interop related methods
8343         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
8344         using the mempool allocator
8345         
8346         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
8347         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
8348         declaration for mono_metadata_type_dup_mp.
8349         
8350         * debug-helpers.c: Added strings for two additional wrapper types
8351         * object.c: Create proxy objects for ComImport classes
8352         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
8353         and added __ComObject class to MonoDefaults structure.
8354         
8355         * object-internals.h: Finish MonoRealProxy definition, and add definition of
8356         MonoComInteropProxy and MonoComObject.
8357         
8358         * marshal.c: Added support for COM Interop
8359         (signature_cominterop): Converts managed signature to corresponding
8360         unmanaged COM signature.
8361         (cominterop_get_function_pointer): gets unmanaged function pointer via
8362         COM object vtable
8363         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
8364         (cominterop_get_method_interface): returns interface type that method is defined on
8365         (mono_mb_emit_cominterop_call): emits native call to function pointer
8366         gotten from vtable
8367         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
8368         that matches signature of unmanaged function.
8369         (cominterop_get_native_wrapper): wrapper around adjusted method call.
8370         (cominterop_get_invoke): forwards call from proxy to __ComObject
8371         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
8372         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
8373         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
8374         
8375         * marshal.h: Added Marshal icall declarations.
8376         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
8377         so we can access them in finalizer
8378         
8379 2006-07-14  Dick Porter  <dick@ximian.com>
8380
8381         * object.c (mono_type_initialization_cleanup): Fix a race
8382         condition by temporarily commenting out the critical section
8383         deletion.
8384
8385 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
8386
8387         * reflection.c (create_custom_attr): Fix some warnings.
8388         (create_custom_attr_data): Ditto.
8389         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
8390         types. Fixes #78855.
8391
8392 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
8395
8396         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
8397
8398 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * reflection.c (resolve_object): Add support for DynamicMethod.
8401
8402         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
8403         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
8404
8405 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
8406
8407         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
8408         don't leak GPtrArray's pdata has we have no use (nor free) for it.
8409
8410 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
8411
8412         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
8413         Fixes #77888.
8414
8415 2006-06-30  Raja R Harinath  <rharinath@novell.com>
8416
8417         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
8418         slightly: remove a shadow local variable.
8419
8420 2006-06-29  Raja R Harinath  <rharinath@novell.com>
8421
8422         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
8423         definition that introduces the virtual function slot.
8424         Also fix Coverity #105.
8425
8426 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
8427
8428         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
8429         for dynamic assemblies. Fixes #78724.
8430
8431 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
8434         Fixes #78722.
8435
8436 2006-06-21  Martin Baulig  <martin@ximian.com>
8437
8438         * reflection.c
8439         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
8440         fixes #76484.
8441
8442 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
8443
8444         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
8445
8446 2006-06-20  Raja R Harinath  <rharinath@novell.com>
8447
8448         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
8449         nor TYPEREFs.
8450         * class.c (mono_class_create_from_typespec): Add 'context' argument.
8451         Inflate result if necessary.
8452         (mono_class_get_full): Remove old version.  Rename from
8453         'mono_class_get' and add 'context' argument.  Pass it to
8454         ..._create_from_typespec.
8455         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
8456         (mono_ldtoken): Revert change below.
8457
8458 2006-06-20  Martin Baulig  <martin@ximian.com>
8459
8460         * class.c (mono_ldtoken): Don't pass the generic context to
8461         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
8462
8463 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
8466         and later freeing it. Fixes #78638.
8467
8468 2006-06-15  Miguel de Icaza  <miguel@novell.com>
8469
8470         * icall.c (mono_class_get_throw): Revert over-zealous error
8471         throwing, the caller for mono_class_get_throw will cope with
8472         errors when classes are not properly initialized already.
8473
8474         The code still copes with loader exceptions though.
8475
8476         Fixes the regression in reftype1 and reftype3 from the CAS tests.
8477         
8478 2006-06-14  Miguel de Icaza  <miguel@novell.com>
8479
8480         Fixes the `make run1' version of RuntimeAbort (to be commited,
8481         source is in Bugzilla).
8482         
8483         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
8484         FALSE on class loading failure instead of returning true.
8485
8486         * class.c (mono_class_create_from_typedef): It is possible for
8487         mono_metadata_interfaces_from_typedef_full to fail if a class is
8488         not found, cope with this.
8489         
8490
8491 2006-06-14  Dick Porter  <dick@ximian.com>
8492
8493         * socket-io.c: 
8494         * process.c: Fix a bunch of signed/unsigned warnings from gcc
8495         4.1.1
8496
8497 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
8498
8499         * culture-info-table.h : oops, forgot to make it nsync with r61548.
8500
8501 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8502
8503         * icall.c: Another fix for building mono in Visual Studio.
8504
8505 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8506
8507         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
8508         
8509 2006-06-09  Martin Baulig  <martin@ximian.com>
8510
8511         * debug-mono-symfile.c: Put this back and really fix it this
8512         time. Sorry for all the trouble.
8513
8514 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
8515
8516         * icall.c (mono_class_get_throw): Fix a warning.
8517         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
8518         ReflectionTypeLoadException if needed. Fixes #78606.
8519
8520         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
8521         (mono_class_init): Ditto.
8522
8523         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
8524         ref_only exceptions.
8525         (mono_loader_clear_error): Make this work even if there is no error.
8526
8527 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
8528
8529         * object-internals.h marshal.c marshal.h icall.c: Implement method 
8530         Marshal.GetComSlotForMethodInfo using internal call.
8531
8532 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
8533
8534         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
8535         a function for signalling it.
8536
8537         * class.c (mono_class_from_typeref): Use the new kind of loader error when
8538         a referenced assembly is not found.
8539
8540         * loader.c (mono_loader_error_prepare_exception): Add support for 
8541         LOADER_ERROR_ASSEMBLY. Fix formatting.
8542
8543 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
8544
8545         * domain.c appdomain.c class-internals.h marshal.c: Add support 
8546         for VARIANT marshalling on windows and increment corlib version
8547         since Variant struct was added.
8548
8549 2006-06-03  Miguel de Icaza  <miguel@novell.com>
8550
8551         * debug-mono-symfile.c: Revert Martin's previous patch which broke
8552         stack trace line information:
8553
8554         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
8555         (Martin) when looking up B which is between A and C, return A not C.
8556
8557         Bug is #78573.
8558
8559         Thanks to Alexander Olk for tracking this down.
8560
8561 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
8562
8563         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
8564         
8565         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
8566         avoid clobbering its value.
8567         (mono_string_to_lpstr): Fix a warning on windows.
8568
8569 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
8572
8573         * reflection.c loader.c: Removed references to 'dummy' flag.
8574
8575         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
8576
8577         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
8578         it gets GC tracking.
8579
8580         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
8581         GC tracking.
8582         
8583         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
8584
8585         * marshal.c threadpool.c: Update callers of mono_async_result_new.
8586
8587         * appdomain.c: Bump corlib version.
8588
8589 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8590
8591         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8592         CEE_STIND_REF when working with object references.
8593
8594 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8595
8596         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
8597         Fixes #78539.
8598
8599 2006-05-30  Miguel de Icaza  <miguel@novell.com>
8600
8601         * loader.c (method_from_memberref): Fix argument value for
8602         mono_loader_set_error_method_load (I was passing the MonoClass
8603         instead of the class name char *).
8604
8605 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8608         CEE_STIND_REF when working with object references.
8609
8610 2006-05-30  Martin Baulig  <martin@ximian.com>
8611
8612         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
8613         mono_method_full_name() change and replace the ':' with a '.'
8614         here.
8615
8616 2006-05-30  Martin Baulig  <martin@ximian.com>
8617
8618         * debug-mono-symfile.c
8619         (mono_debug_symfile_lookup_location): Fix the algorithm:
8620         when looking up B which is between A and C, return A not C.
8621
8622 2006-05-29  Martin Baulig  <martin@ximian.com>
8623
8624         * mono-debug.h
8625         (MonoDebugMethodInfo): Make the typedef public.
8626         (MonoDebugSourceLocation): New public struct.
8627
8628         * mono-debug.c
8629         (mono_debug_source_location_from_address): Removed.
8630         (mono_debug_source_location_from_il_offset): Removed.
8631         (mono_debug_il_offset_from_address): Removed.
8632         (mono_debug_address_from_il_offset): Removed.
8633         (mono_debug_lookup_method): New public function.
8634         (mono_debug_lookup_source_location): New public function; replaces
8635         the old mono_debug_source_location_from_*() functions; see the
8636         inline documentation.
8637         (mono_debug_free_source_location): New public function.
8638         (mono_debug_print_stack_frame): New public function; see the
8639         inline documentation.
8640
8641         * debug-mono-symfile.c
8642         (mono_debug_find_source_location): Renamed into
8643         mono_debug_symfile_lookup_location(); only take a
8644         `MonoDebugMethodInfo *' and an `offset' argument; added inline
8645         documentation.
8646         (mono_debug_find_method): Renamed into
8647         mono_debug_symfile_lookup_method().
8648
8649 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * assembly.c (mono_assembly_open_full): Dont overwrite the status
8652         returned by mono_image_open_full ().
8653
8654         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
8655         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
8656         #78517.
8657
8658         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
8659         #78518.
8660
8661 2006-05-27  Miguel de Icaza  <miguel@novell.com>
8662
8663         * class.c (mono_class_from_typeref): handle missing images
8664         earlier, deals with bug #78418.   Refactor code; 
8665
8666         Fix a warning introduced in my previous commit (some stale code
8667         from before I revisited my patch).
8668
8669         * class.c (mono_class_create_from_typedef): On failure, remove the
8670         class from the MonoImage->class_cache as the class is not
8671         initialized;   Fixes the leak pointed out by Paolo.
8672
8673 2006-05-25  Dick Porter  <dick@ximian.com>
8674
8675         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
8676         DeleteCriticalSections until I figure out which one may still be
8677         sometimes locked when mono_thread_cleanup is called.
8678
8679 2006-05-24  Dick Porter  <dick@ximian.com>
8680
8681         * threads.c (mono_thread_cleanup): Move the threading cleanup out
8682         of mono_thread_manage and back into its own function, so it can be
8683         called after the finalizer thread has finished.
8684
8685         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
8686
8687 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
8688
8689         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
8690         Fixes #78495.
8691
8692         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
8693         with non-blittable elements.
8694         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
8695
8696 2006-05-24  Martin Baulig  <martin@ximian.com>
8697
8698         * mono-debug-debugger.h (MonoDebuggerEvent): Added
8699         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
8700
8701         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
8702         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
8703         `mono_debugger_event_handler' to NULL.
8704
8705 2006-05-24  Martin Baulig  <martin@ximian.com>
8706
8707         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
8708
8709 2006-05-24  Martin Baulig  <martin@ximian.com>
8710
8711         * mono-debug-debugger.h
8712         (mono_debugger_create_notification_function): Added
8713         `MonoCodeManager *' argument.
8714
8715 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
8716
8717         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
8718
8719 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
8720
8721         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
8722         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
8723         implementation.
8724
8725 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
8726
8727         * icall.c: precise GC support: objects can't be stored in unmanaged
8728         memory anymore, even if they are kept alive by other references: since
8729         they can move the GC needs to be able to always find them.
8730
8731 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8732
8733         * object.c: precise GC support for static fields. Support
8734         for moving GCs: write barriers and pinned allocation for interned
8735         strings.
8736
8737 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8738
8739         * domain.c, domain-internals.h: precise GC support for the MonoDomain
8740         structure.
8741
8742 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8743
8744         * class.c, gc.c: sgen and precise GC updates.
8745
8746 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8747
8748         * marshal.h, marshal.c: added write barrier wrapper and precise type
8749         fixes.
8750
8751 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
8752
8753         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
8754         support.
8755
8756 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
8757
8758         * reflection.c: precise and sgen GC updates.
8759
8760 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8761
8762         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
8763
8764 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
8765
8766         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
8767
8768 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
8769
8770         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
8771         MONO_TYPE_OBJECT. Fixes #78462.
8772
8773 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8774
8775         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
8776         and blittable types.
8777
8778 2006-05-17  Miguel de Icaza  <miguel@novell.com>
8779
8780         * class.c (mono_class_get_exception_for_failure): Implement parts
8781         of a TODO: if the loader error is set (instead of the class
8782         error), we return a Loader exception that can be properly thrown
8783         elsewhere.
8784
8785         This was exposed by some Winforms 2.0 code that I tried to run
8786         (Atsushi pointed me to it).
8787
8788 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
8791         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
8792         
8793         * marshal.c (emit_marshal_vtype): Add limited support for 
8794         UnmanagedType.LPStruct. Fixes #78427.
8795
8796         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
8797         Applied a patch from kangaroo to fix #77523.
8798
8799 2006-05-17  Martin Baulig  <martin@ximian.com>
8800
8801         * threads.c
8802         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
8803         (debugger_thread_created): Removed.
8804         (debugger_thread_exited): Removed.
8805
8806 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
8807
8808         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8809
8810         * object-internals.h (MonoReflectionResource): Sync with managed version.
8811
8812 2006-05-12  Wade Berrier <wberrier@novell.com>
8813
8814         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
8815
8816 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
8817
8818         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
8819         functions try to allocate from the image mempool.
8820
8821 2006-05-12  Dick Porter  <dick@ximian.com>
8822
8823         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
8824
8825 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
8826
8827         * object.c: The FieldGetter and FieldSetter methods require the full
8828         name of the class, not only the name. Fixes bug #78277.
8829
8830 2006-05-11  Miguel de Icaza  <miguel@novell.com>
8831
8832         * loader.c (method_from_memberref): Do not pass the NULL klass to
8833         mono_loader_set_error_() methods.  Pass the non-NULL value
8834         (class). 
8835
8836 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8837
8838         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
8839         (mono_assembly_close): Null out assembly->image->references after freeing it.
8840
8841         * image.c (mono_image_close): Free image->references.
8842         
8843         * reflection.c (mono_image_basic_init): Fix a small memory leak.
8844
8845 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8846
8847         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
8848         before checking if it's NULL (g_assert).
8849
8850 2006-05-10  Martin Baulig  <martin@ximian.com>
8851
8852         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
8853         I thought I already killed that two months ago, but now it somehow reappeared.
8854
8855 2006-05-10  Martin Baulig  <martin@ximian.com>
8856
8857         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
8858
8859 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * reflection.c: Allocate memory for dynamically created methods in the image
8862         mempools.
8863
8864 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8865
8866         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
8867         don't use the ad pointer before checking if it's NULL (g_assert).
8868
8869 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
8872         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
8873
8874         * marshal.c: Allocate all signatures from mempools.
8875
8876         * marshal.c: Allocate some more signatures from mempools.
8877
8878 2006-05-09  Miguel de Icaza  <miguel@novell.com>
8879
8880         * object.c (mono_load_remote_field): The code used to provide a
8881         temporary variable for returning results if the user did not
8882         provide a result pointer.  But our temporary variable was allocted
8883         on the satck.
8884
8885         Fix calling code to always pass a result area.   Coverity ID 103.
8886
8887 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
8890         value, not the old. Fixes #78312.
8891         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
8892
8893         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
8894         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
8895         per-image cache.
8896
8897         * assembly.c (mono_assembly_close): Free image->references.
8898
8899         * assembly.c (mono_assembly_names_equal): Fix a warning.
8900         (mono_assemblies_cleanup): Cleanup more global data.
8901
8902         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
8903
8904         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
8905         ptr_cache and image->modules.
8906
8907         * image.c (mono_image_init): Allocate array_cache lazily.
8908         
8909 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8910
8911         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
8912         behavior was changed recently and has bad side effects.
8913
8914 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8915
8916         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
8917         
8918         * assembly.c (mono_assembly_close): Remove a debug printf.
8919
8920         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
8921
8922         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
8923         to also allow for temporary references between mono_image_open ()/close ().
8924
8925         * domain.c (get_runtimes_from_exe): Add a FIXME.        
8926
8927 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8928
8929         * marshal.c: Fix support for dynamic methods.
8930
8931         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
8932
8933         * marshal.c (mono_marshal_cleanup): New cleanup function.
8934
8935         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
8936         image mempools.
8937
8938         * class.c (mono_class_init): Fix leaking class->nested_classes.
8939
8940         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
8941
8942         * image.c (mono_image_init): Initialize the new cashes.
8943
8944         * image.c (mono_image_close): Destroy the new cashes.
8945
8946         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
8947
8948         * mempool.c (mono_mempool_strdup): New helper function.
8949
8950         * class-internals.h: Add prototype for mono_loader_unlock ().
8951
8952         * domain.c (mono_jit_info_table_find): Fix a warning.
8953         (mono_debugger_check_runtime_version): Ditto.
8954
8955         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
8956         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
8957         functions to these modules.
8958
8959         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
8960         metadata modules.
8961         
8962         * marshal.c (mono_free_bstr): Fix a warning.
8963
8964         * assembly.c (mono_assembly_open_full): Fix another small leak.
8965
8966         * object.c: Fix some unload leaks in the remoting code.
8967
8968         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
8969         function.
8970
8971         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
8972
8973         * reflection.c: Fix some unload leaks in dynamic assemblies.
8974
8975 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
8976
8977         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
8978         * marshal.h: Add BSTR support on Win32
8979         * icall.c: Add BSTR icalls
8980         * metadata.h: Add BSTR enums
8981
8982 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8983
8984         Work to catch the crash from #76795 and turn it into an
8985         exception.   As I stubbed out pieces of the VisualBasic support,
8986         I found a number of places where the code was failing and I added
8987         checks to those places. 
8988         
8989         * metadata.c (do_mono_metadata_parse_generic_class): Make this
8990         function return a status code.  If we fail to parse the signature
8991         from mono_metadata_parse_generic_inst, return FALSE.
8992
8993         * loader.c (mono_get_method_from_token): If we fail to load the
8994         method (mono_class_get) return NULL.   
8995
8996         * (method_from_memberref): Return NULL if we are unable to parse
8997         the method signature
8998
8999         (mono_loader_error_prepare_exception): Since we now use the
9000         loader_error flag internally to stop processing, and obtaining
9001         exceptions that might be thrown will walk this code path the
9002         proper way of going from a MonoLoaderError into a
9003         MonoException was convoluted.   This new routine encapsulates the
9004         process of turning the error into an exception and *clearing* the
9005         error afterwards.
9006         
9007 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9008
9009         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
9010         with missing assemblies), and to cope with:
9011
9012                 * Missing fieldref from a non-existing assembly.
9013                 * Missing methodref from a non-existing assembly.
9014
9015         The first batch of work to address *some* of the issues from 76661.
9016         
9017         * object.c (mono_class_create_runtime_vtable): If we fail to
9018         initialize the class raise the exception here. 
9019
9020         * metadata.c (mono_class_get_overrides_full): If any methods fail
9021         to load return the failure to the caller.
9022
9023         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
9024         flagging assemblies that failed to load.   
9025
9026         Do not crash if we are unable to load the assembly.
9027
9028         (mono_assembly_close): Do nothing with REFERENCE_MISSING
9029         assemblies. 
9030
9031         * loader.c (mono_loader_set_error_type_load): Change the
9032         convention to always pass unallocated strings, so we make our own
9033         copies (I know our own code had duplicated strings before, but
9034         this keeps the normal conventions).
9035         (method_from_memberref): Call mono_loader_set_error_method_load
9036         for all possible failures of loading the class. 
9037         Remove assert, turn into a loader error.
9038
9039         (mono_loader_error_to_exception): Move this routine from mini
9040         (mini_loader_error_to_exception) there was no need to have that in
9041         mini. 
9042
9043         * class.c (mono_class_from_typeref): If we were not able to load
9044         the assembly with mono_assembly_load_reference, call the
9045         mono_loader_set_error_type_load to register the problem.
9046
9047         (mono_class_setup_fields): If we fail to load the type from
9048         mono_metadata_parse_type_full, call mono_class_set_failure and
9049         break from the loop.
9050
9051         If class->exception_type is set, we do not layout the fields as
9052         that might crash the runtime, and instead return (from breaking
9053         from the previous loop).
9054
9055         (mono_class_setup_vtable): This now returns a boolean indicating
9056         whether the table was properly setup.   The decision is driven by
9057         mono_class_get_overrides_full which might run into non-existing
9058         methods. 
9059         
9060         (mono_class_init): Returns TRUE on success or FALSE if there was a
9061         problem in loading the type (incorrect assemblies, missing
9062         assemblies, methods, etc).
9063
9064         When we call mono_class_setup_fields we also check for a potential
9065         error inside this call (either a class exception or a general
9066         loader exception).
9067
9068         (mono_class_create_from_typedef): If the parent fails to load
9069         (calling mono_class_get_full) return NULL.
9070         
9071         ** Important **
9072
9073         calls to mono_metadata_parse_type_full should be checked
9074         everywhere and set the mono_class_set_failure
9075         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
9076
9077         The current patch checks the places where my manually constructed
9078         tests show the errors are showing up, but we should do it
9079         everywhere. 
9080
9081         ** Important2 **
9082
9083         mono_class_init return values should be tested everywhere, like
9084         the previous case this is something that we should audit
9085         everywhere and not only on the cases exposed by the tests I
9086         created. 
9087
9088 2006-04-26  Miguel de Icaza  <miguel@novell.com>
9089
9090         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
9091         boolean parameter and instead pass the information on `options'
9092         parameter (FileOptions).
9093
9094         * icall.c: Register the new signature for MonoIO.Open.
9095
9096         * debug-helpers.c (dis_one): Trying to understand how coverity
9097         works.  Fix Run 5, item 78.
9098
9099 2006-04-26  Dick Porter  <dick@ximian.com>
9100
9101         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
9102         dereference.
9103
9104 2006-04-25  Martin Baulig  <martin@ximian.com>
9105
9106         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
9107
9108         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
9109         debugger_thread_created().
9110         (debugger_gc_push_all_stacks): Don't handle the main thread in any
9111         special way.
9112         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
9113         (mono_debugger_finalize_threads): New function; undo the effects
9114         of mono_debugger_init_threads().
9115         (mono_debugger_create_all_threads): Removed.
9116
9117 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * image.c (mono_image_close): Tidy up trace messages.
9120
9121         * assembly.c (mono_assembly_close): Ditto.
9122
9123         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
9124         no longer references an already freed assembly. Fixes #78168.
9125
9126 2006-04-21  Dick Porter  <dick@ximian.com>
9127
9128         * threads.c (mono_thread_detach): Fix reference counting when
9129         detaching threads.
9130
9131 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
9134         #78155.
9135
9136 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
9139         (mono_type_to_stind): Ditto.
9140
9141         * marshal.c: Use the new helper functions to simplify code.
9142
9143         * image.c (mono_image_close): Add some code for help debug assembly unloading
9144         problems.
9145
9146         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
9147         image mempool.
9148
9149         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
9150         assembly was already loaded in another appdomain. Fixes #78083.
9151
9152 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
9155         referenced assemblies.
9156         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
9157
9158         * domain.c (mono_domain_free): Add a trace message.
9159
9160         * appdomain.c (add_assemblies_to_domain): Ditto.        
9161
9162         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
9163         field.  
9164
9165 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
9168
9169 2006-04-12  Martin Baulig  <martin@ximian.com>
9170
9171         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
9172         `USE_INCLUDED_LIBGC'.   
9173
9174 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9175
9176         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
9177         the patch contains ../ and a small directory name later. Hopefully fixes
9178         #78035.
9179
9180 2006-04-10  Martin Baulig  <martin@ximian.com>
9181
9182         Clean up the debugger's thread-handling code.
9183
9184         The debugger's thread-handling code has been moved from
9185         ../mini/debug-debugger.c to threads.c.  We now iterate directly
9186         over the `threads' hash, keep track of exiting threads and also
9187         use proper locking.
9188
9189         We can now debug XSP and XSP based applications with the debugger.
9190
9191         * object-internals.h (MonoThread): Added `gpointer end_stack'.
9192
9193         * threads.h
9194         (MonoThreadCallbacks): Removed; this was only used by the debugger.
9195         (mono_install_thread_callbacks): Likewise.      
9196
9197         * threads.c (mono_thread_callbacks): Removed.
9198         (debugger_thread_created, debugger_thread_exited): New static functions.
9199         (start_wrapper): Call debugger_thread_created().
9200         (thread_cleanup): Call debugger_thread_exited().
9201         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
9202         (mono_debugger_init_threads): New public function.
9203         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
9204         iterate directly over the `threads' hash and also use proper locking.
9205
9206         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
9207
9208         * mono-debug-debugger.h
9209         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
9210
9211 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
9214         argument type=array. Fixes #78057.
9215
9216 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
9217
9218         * culture-info-table.h : regenerated. Fixed bug #69652.
9219
9220 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * loader.c metadata.c: Reapply a variant r59116.
9223         
9224         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
9225
9226         * class.c (mono_class_setup_interface_offsets): New internal function.
9227
9228         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
9229         interfaces too. Fixes #77398.
9230
9231         * reflection.c (encode_cattr_value): Add support for 
9232         parameter type=object, argument type=array.
9233         (load_cattr_value): Ditto. Fixes #77916.
9234
9235         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
9236         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
9237
9238         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
9239         a byval char array and CharSet is Ansi.
9240
9241         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
9242
9243 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * metadata.c: Add some locking comments.
9246         
9247         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
9248         mempool.
9249         (mono_metadata_free_method_signature): Don't free the signature itself.
9250
9251         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
9252
9253         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
9254         reference the same MonoImage.
9255         (mono_assembly_load_from_full): Add an assert.
9256
9257 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9258
9259         * image.c (mono_image_close): Don't put the image we are about to free into the
9260         loaded_images_guid_hash.
9261
9262         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
9263         to reduce code duplication.
9264
9265         * marshal.c: Register the native functions called by this module as icalls, to
9266         somewhat centralize the creation of MonoMethodSignature's.
9267
9268         * loader.c (mono_method_signature): Add a cache for method signatures.
9269
9270         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
9271         the parameter attributes of a method.
9272         (mono_metadata_parse_method_signature_full): Refactored the computation of
9273         parameter attributes into a separate function. Also avoid one allocation in
9274         most cases.
9275
9276         * assembly.c (mono_assembly_close): Ditto.
9277
9278         * image.c (mono_image_close): Log trace messages with INFO level.
9279
9280         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
9281
9282         * image.c reflection.c: Correct reference counting of image modules.
9283         
9284         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
9285         of this function from the image mempool.
9286         
9287         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
9288         to allow more cached types to be used.
9289
9290         * mono-debug.c (mono_debug_add_method): Appled patch from
9291         David S. Miller  <davem@sunset.davemloft.net>: Access 
9292         minfo->lexical_blocks[] entry elements using read32().
9293
9294 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9295
9296         * loader.c (mono_free_method): No longer free the method header for non-dynamic
9297         methods as it is allocated from the mempool.
9298
9299         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
9300         image mempool.
9301
9302         * metadata-internals.h: Add comments describing the reference counting scheme
9303         used for MonoImage and MonoAssembly.
9304
9305         * image.c assembly.c reflection.c: Rework reference counting of images and 
9306         assemblies so they are freed when the runtime is shut down. Free some 
9307         additional memory structures when an image is unloaded.
9308         
9309 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * class.c loader.c reflection.c: Allocate more data structures in
9312         the image mempool.
9313
9314 2006-03-31  Miguel de Icaza  <miguel@novell.com>
9315
9316         * icall.c
9317         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
9318         build on pre glib 2.4 systems.
9319
9320 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9321
9322         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
9323
9324         * icall.c: Fix some warnings.
9325
9326 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
9327
9328         * culture-info-table.h : regenerated.
9329
9330 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
9331
9332         * threads.c, object-internals.h, verify.c: changed the culture caching
9333         code to use a normal MonoArray for storage so the GC can keep track of
9334         them easily. Fixed bits of the cache logic, too and simplified the
9335         code.
9336
9337 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
9338
9339         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
9340         thread for non-Boehm GCs.
9341
9342 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
9343
9344         * domain.c, object.c, domain-internals.h: reduce the amount of memory
9345         needed to keep track of the data for static fields.
9346
9347 2006-03-29  Raja R Harinath  <rharinath@novell.com>
9348
9349         Fix #75172
9350         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
9351         for interface classes.  Use 'num_methods' instead.
9352         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
9353         before using '->vtable_size' field.
9354
9355 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9356
9357         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
9358         doesn't contain managed pointers, so use a normal hashtable.
9359
9360 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9361
9362         * reflection.c, class-internals.h, domain.c: fixed handling of types
9363         used as values for objects in custom attributes (bug #77915):
9364
9365 2006-03-24  Martin Baulig  <martin@ximian.com>
9366
9367         * class.c (mono_class_setup_fields): Added support for generic
9368         instances; fixes #77580.
9369
9370 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9371
9372         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
9373
9374 2006-03-24  Dick Porter  <dick@ximian.com>
9375
9376         * file-io.c (get_file_attributes): More stat macro breakage.
9377         Fixes bug 77759.
9378
9379 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
9380
9381         * profiler.c: added the file=filename option in the default profiler
9382         to output the profile data to filename.
9383
9384 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9385
9386         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
9387         bug #77877.
9388
9389 2006-03-22  Martin Baulig  <martin@ximian.com>
9390
9391         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
9392         allocated `MonoClassField *' in `fb->handle'.
9393
9394 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9395
9396         * class.c, image.c, metadata-internals.h: implemented new mechanism to
9397         allocate interface ID to save memory and allow better ID reuse on
9398         appdomain unload. setup_generic_vtable () removal from Martin.
9399
9400 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9401
9402         * object.h, appdomain.c, domain.c, exception.c, icall.c,
9403         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
9404         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
9405         write barriers for reference stores with managed objects accessed with
9406         C structures in the runtime and in embedding programs.
9407
9408 2006-03-20  Raja R Harinath  <rharinath@novell.com>
9409
9410         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
9411         'interface_id' and 'max_interface_id' fields of MonoClasses
9412         representing open generic types.
9413
9414 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
9415
9416         * object.h, object.c, icall.c: added functions to deal with
9417         storing valuetypes that contain references in managed objects.
9418         * reflection.c, string-icalls.c, threads.c, marshal.c: small
9419         fixes and comments around uses of mono_array_addr ().
9420
9421 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
9422
9423         * object.h, icall.c, monitor.c: object.GetHashCode ()
9424         implementation that supports the moving garbage collector.
9425
9426 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
9427
9428         * icall.c, threads-types.h, threads.c: implemented finalizer for
9429         LocalDataStoreSlot.
9430
9431 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9432
9433         * metadata.c (mono_type_size): Add a fixme.
9434         (mono_type_stack_size): Ditto.
9435
9436         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
9437         'type_forwarders' field.
9438
9439         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
9440         attribute from net 2.0.
9441
9442         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
9443         from class.c.
9444
9445         * class.c (mono_class_setup_fields): Fix a warning.
9446         
9447         * class.c (mono_class_from_name): Add support for assemblyref entries
9448         in the EXPORTEDTYPE table.
9449
9450         * reflection.c: Add support for handling type forwarders under net 2.0.
9451
9452         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
9453         
9454 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
9457         overwriting entries in ModuleBuild->types, also clean up the code
9458         a little. Fixes #77774.
9459
9460 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9461
9462         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
9463         load friend assembly info when present.
9464
9465 2006-03-14  Raja R Harinath  <rharinath@novell.com>
9466
9467         Fix crasher on gtest-158.cs.
9468         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
9469         the return value if the MonoClass we want is yet in an
9470         inconsistent state.
9471         * class.c (mono_class_create_from_typedef): Add an comment
9472         explaining an order dependency between mono_class_setup_parent and
9473         mono_class_setup_mono_type.
9474
9475 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
9476
9477         * class.c: documentation updates and events bug fix.
9478
9479 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
9480
9481         * class.c: some cleanup, locking fixes.
9482
9483 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9484
9485         * class.c: fix the generics code to setup nested
9486         type info to the instantiated type (bug #77770).
9487
9488 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9489
9490         * marshal.c: fixed a few type correctness issues.
9491
9492 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9493
9494         * loader.c: the Set/Get/Addrtess array methods should be public.
9495
9496 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9497
9498         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
9499         
9500         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
9501         info->wrapper.
9502
9503 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
9506
9507         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
9508
9509         * mempool.c (mono_mempool_alloc): Speed this up a bit.
9510         (mono_mempool_alloc0): Ditto.
9511
9512 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9513
9514         * socket-io.c:
9515         (create_object_from_sockaddr): it was allocating 4 extra bytes
9516         for the AF_UNIX data. Fixes bug #77747.
9517
9518 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
9521
9522 2006-03-09  Dick Porter  <dick@ximian.com>
9523
9524         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
9525         Fixes bug 76966 again.
9526
9527 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
9528
9529         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
9530         names from r57532
9531         * appdomain.c: Bumped corlib version to 48 (due to r57532)
9532
9533 2006-03-07  Martin Baulig  <martin@ximian.com>
9534
9535         * object.c
9536         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
9537
9538 2006-03-07  Martin Baulig  <martin@ximian.com>
9539
9540         * class.c
9541         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
9542         regression introduced in r56970; see gtest-252.cs.
9543
9544         * loader.c (mono_get_method_constrained): Correctly handle generic
9545         methods; see gtest-253.cs.
9546
9547 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
9550
9551 2006-03-04  Martin Baulig  <martin@ximian.com>
9552
9553         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
9554         compute the parent type at runtime, just like we're already doing
9555         it for interfaces.
9556
9557         * reflection.c
9558         (mono_reflection_bind_generic_parameters): Don't compute the
9559         parent type anymore.
9560
9561         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
9562
9563 2006-03-04  Martin Baulig  <martin@ximian.com>
9564
9565         * mono-debug-debugger.h
9566         (mono_debugger_create_notification_function): Allocate memory at
9567         runtime and return a pointer to it.
9568
9569 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * assembly.c: Fix windows build.
9572         
9573         * assembly.c: Fix build.
9574
9575         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
9576
9577         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
9578         
9579 2006-03-03  Dick Porter  <dick@ximian.com>
9580
9581         * process.c
9582         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9583         Check parameters before dereferencing them.  Fixes Aaron's part of
9584         bug 77393.
9585
9586 2006-03-03  Raja R Harinath  <rharinath@novell.com>
9587
9588         Fix performance regression.
9589         * loader.c (find_method_in_class): Add 'from_class' argument.
9590         Rename 'klass' argument to 'in_class'.  The signature is compared
9591         against the method in 'in_class', and the corresponding method is
9592         returned from 'from_class'.
9593         (find_method): Walk both 'in_class' and 'from_class' in parallel.
9594         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
9595         type definition and generic instantiation in parallel.
9596         (mono_get_method_constrained): Update to changes.
9597
9598 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9599
9600         * threads.c: make sure the domain is correct, too when doing
9601         mono_thread_attach ().
9602
9603 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
9606         windows. Fixes #77683.
9607
9608 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9609
9610         * object.h, *: introduced specific way to set elements of an array
9611         of references to be used as write barrier. Still need to audit the
9612         uses of mono_array_addr.
9613
9614 2006-03-01  Miguel de Icaza  <miguel@novell.com>
9615
9616         * object-internals.h: New field to cache the assmebly name, patch
9617         from Tambet Ingo (tambet@ximian.com)
9618
9619 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9620
9621         * decimal.h, class-internals.h, metadata-internals.h,
9622         file-io.h: mark a few function declarations as internal, to
9623         reduce the number of PLT entries.
9624
9625 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9626
9627         * file-io.c: fix typo in warning message.
9628
9629 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
9630
9631         * loader.c: on unix, lookup the "*A" version of a function
9632         if charset is auto as a second option before failing.
9633
9634 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9635
9636         * class.h (mono_class_inflate_generic_method): Revert to two
9637         argument version.
9638         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
9639         (mono_class_inflate_generic_method_full): Add.
9640         * class.c (mono_class_inflate_generic_method_full): Rename from
9641         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
9642         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
9643         * loader.c, reflection.c: Update to changes.
9644
9645 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9646
9647         * icall.c: const fixes and small improvements.
9648
9649 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9650
9651         * threadpool.c: for asynchronous connect(), enable the same workaround
9652         for BSD 6 as for the Mac. Fixes bug #77637.
9653
9654 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9655
9656         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
9657         formatted classes. Fixes #77524.
9658
9659 2006-02-24  Raja R Harinath  <rharinath@novell.com>
9660
9661         * class.c (inflate_generic_type): Add a couple more
9662         micro-optimizations.
9663         (inflate_generic_context): Don't use the 'gmethod' from
9664         'inflate_with'.
9665         (mono_class_inflate_generic_method): If the method has generic
9666         parameters, but the passed-in context doesn't have a 'gmethod',
9667         create one.  Use the possibly simplified generic instantiation
9668         from the declaring class instead of the one passed in.
9669
9670 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9671
9672         Make generic method signature and method header handling lazy.
9673         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
9674         (inflate_generic_header): Likewise.
9675         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
9676         parameter to avoid inflating types.
9677         (mono_get_inflated_method): Empty out.
9678         * class.h (mono_class_inflate_generic_method): Update to changes.
9679         * loader.c (mono_get_method_from_token): Don't parse signature for
9680         generic methods, nor methods of generic classes.
9681         (mono_method_signature): Rename from 'mono_method_signature'.
9682         Inflate signature on demand.
9683         (mono_method_get_header): Inflate method header on demand.
9684         * reflection.c: Update to changes.
9685
9686 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9687
9688         * metadata.c (mono_metadata_inflate_generic_inst): If the
9689         instantiation is closed, don't bother expanding it in the new
9690         context.
9691         * class.c (inflate_generic_class): If the generic instantiation
9692         doesn't change after inflation, return the argument itself.
9693         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
9694         Add bounds checks.
9695         (inflate_generic_context): If neither the generic class nor the
9696         generic method instantiations change, return the original context.
9697         * reflection.c (mono_method_get_object): Do
9698         'mono_get_inflated_method' before accessing the ->klass field.
9699         (inflate_mono_method): Don't create a MonoGenericMethod unless
9700         necessary.
9701         (inflate_method): Don't pass a constructed type as the declaring
9702         type of a methodbuilder.
9703
9704 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
9705
9706         * object.c: fix memory overwrite.
9707
9708 2006-02-22  Dick Porter  <dick@ximian.com>
9709
9710         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
9711         it doesn't work any more.
9712         (mono_threads_request_thread_dump): Fix unused variable warnings.
9713
9714 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9715
9716         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
9717         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
9718         the public header file.
9719
9720 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
9723
9724 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9725
9726         * class-internals.h, object.c: reduce the size of MonoVTable
9727         and store the interface_offsets array at negative offsets.
9728
9729 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9730
9731         * metadata.c: tweak table descriptors data structures to reduce
9732         size and runtime relocations.
9733
9734 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9735
9736         * marshal.c: fix some types and opcodes to be type-safe
9737         in marshaling wrappers.
9738
9739 2006-02-21  Ankit Jain  <jankit@novell.com>
9740
9741         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
9742
9743 2006-02-21  Raja R Harinath  <rharinath@novell.com>
9744
9745         * metadata.c (get_constraints): Relax debugging checks for monodis.
9746
9747 2006-02-21  Ankit Jain  <jankit@novell.com>
9748
9749         * metadata.c (mono_metadata_load_generic_params): Move the code
9750         checking for ambiguous generic params from here to mono/dis/get.c
9751         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
9752
9753 2006-02-21  Raja R Harinath  <harinath@gmail.com>
9754
9755         Fix assertion triggered when compiling nemerle.
9756         * class.c (mono_get_shared_generic_inst): Rename from
9757         get_shared_inst and make non-static.
9758         * loader.c (mono_get_shared_generic_method): New.  Used to create
9759         the MonoGenericContext-equivalent of a MonoGenericContainer.
9760         (mono_get_method_from_token): Initialize the 'context' field of
9761         the created MonoGenericContainer.
9762         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
9763         * metadata.c (get_constraints): Add sanity check.
9764         * class-internals.h: Add new internal methods.
9765
9766         * reflection.c (verify_safe_for_managed_space): New sanity check.
9767         Currently checks that owner-less generic parameters aren't allowed
9768         in managed space.
9769         (mono_type_get_object): Use it.
9770         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
9771         that are now in mono_type_get_object.
9772         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
9773
9774 2006-02-19  Raja R Harinath  <harinath@gmail.com>
9775
9776         * metadata.c (mono_type_create_from_typespec): Rename from
9777         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
9778         argument and caching of types in the generic container.
9779         (unwrap_arrays, find_generic_param): Remove.
9780         * metadata-internals.h: Update.
9781         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
9782
9783 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
9784
9785         * class.c (mono_class_get_exception_for_failure): Fix a warning.
9786
9787         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
9788         return values. Fixes #77581.
9789
9790         * class.c (mono_fnptr_class_get): Switch name and name_space.
9791
9792         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
9793         classes and add support for [In, Out] attributes.
9794         (mono_marshal_free_asany): Ditto. Fixes #77524.
9795
9796 2006-02-18  Raja R Harinath  <harinath@gmail.com>
9797
9798         * class.c (mono_class_from_generic_parameter): Make more robust to
9799         incomplete MonoGenericContainers from monodis.
9800
9801 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9802
9803         * class-internals.h: added some more exception types.
9804         * class.c, metadata.c: added a few checks to handle missing
9805         types.
9806
9807 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9808
9809         Use owner-less generic-params some more.
9810         * class.c (my_mono_class_from_generic_parameter): Remove.
9811         (mono_class_from_generic_parameter): Handle null image,
9812         param->name and param->owner.
9813         (mono_class_from_mono_type): Update.
9814         (mono_class_create_from_typespec): Remove 'container' parameter.
9815         If that parameter is non-null, the result is always inflated by
9816         'mono_class_get_full' anyway.
9817         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
9818         parameter.
9819         (mono_class_get_full): Update.
9820
9821         * class.c (inflate_generic_type) [GENERICINST]: If the generic
9822         instance is not open, don't bother inflating.
9823         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
9824         parse metadata for inflated classes.
9825         (_mono_class_get): Change GenericContext* parameter to
9826         GenericContainer*.
9827         (mono_class_create_from_typespec): Likewise.  Simplify, and
9828         implement trivially.  All the cases are handled in
9829         mono_class_from_mono_type.  Don't inflate returned class.
9830         (mono_class_get_full): Delegate GENERICINST optimization to
9831         inflate_generic_type.
9832         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
9833
9834 2006-02-16  Dick Porter  <dick@ximian.com>
9835
9836         * socket-io.c (create_object_from_sockaddr): Fix typo.
9837         (create_sockaddr_from_object): Check array lengths before
9838         potentially accessing items off the end.
9839         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
9840         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
9841         (ves_icall_System_Net_Sockets_Socket_Send_internal)
9842         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
9843         length checks to avoid wraparound overflows.
9844         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
9845         contents of the array of sockets
9846         (hostent_to_IPHostEntry2)
9847         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
9848         Check return value of inet_ntop ().
9849         (addrinfo_to_IPHostEntry): Fix typo
9850
9851 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9852
9853         Type metadata parsing doesn't use generic-instantiation information.
9854         * metadata.c (mono_metadata_parse_array_full): Change
9855         MonoGenericContext* parameter to MonoGenericContainer*.
9856         (mono_metadata_parse_type_full): Likewise.
9857         (mono_type_create_from_typespec_full): Likewise.
9858         (mono_metadata_parse_mh_full): Likewise.
9859         (mono_metadata_parse_generic_inst): Likewise.
9860         (do_mono_metadata_parse_generic_class): Likewise.
9861         (do_mono_metadata_parse_type): Likewise.
9862         * metadata-internals.h: Update to changes.
9863         * class.c (mono_class_find_enum_basetype): Likewise.
9864         (mono_class_setup_fields): Likewise.
9865         (mono_class_create_from_typespec): Likewise.
9866         * loader.c (method_from_methodspec): Likewise.
9867         (mono_get_method_from_token): Likewise.
9868         (mono_method_get_header): Likewise.
9869
9870 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9871
9872         * marshal.c: handle additional GENERICINST case (patch from
9873         Thong Nguyen <tum@veridicus.com>).
9874         Fix a few cases where LDIND_I/STIND_I was used for references.
9875
9876 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9877
9878         * reflection.c (mono_reflection_get_token): Remove unused variable.
9879
9880 2006-02-16  Martin Baulig  <martin@ximian.com>
9881
9882         * reflection.c (mono_reflection_get_token): Add support for fields
9883         in instantiated generic types.
9884
9885         * icall.c
9886         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
9887
9888 2006-02-15  Martin Baulig  <martin@ximian.com>
9889
9890         * icall.c
9891         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
9892         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
9893         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
9894         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
9895
9896 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9897
9898         * class.c, metadata.c, metadata.h, object.c, icall.c,
9899         marshal.c: changed mono_type_get_underlying_type () to do
9900         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
9901         Fixed handling of instantiated generic valuetypes (bug #75479).
9902
9903 2006-02-15  Raja R Harinath  <rharinath@novell.com>
9904
9905         * metadata.c (mono_metadata_decode_signed_value): Simplify.
9906         Delegate to mono_metadata_decode_value, and work on the returned value.
9907
9908         * icall.c (ves_icall_MonoType_GetGenericArguments):
9909         Add consistency check here too.
9910         
9911 2006-02-15  Ankit Jain  <jankit@novell.com>
9912
9913         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
9914         char/short etc.
9915
9916 2006-02-15  Ankit Jain  <jankit@novell.com>
9917
9918         * metadata.c (mono_metadata_decode_signed_value): New function to decode
9919         signed values, used only for representing lower bounds of arrays.
9920         (mono_metadata_parse_array_full): Use new
9921         mono_metadata_decode_signed_value to decode lower bounds.
9922
9923 2006-02-14  Martin Baulig  <martin@ximian.com>
9924
9925         * reflection.c
9926         (mono_reflection_get_token): Support "MonoGenericMethod" and
9927         "MonoGenericCMethod" and allow generic instances / methods.
9928
9929 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
9932         to obtain the terminal size using an ioctl.
9933
9934         * object.c (mono_nullable_init): Revert this as nullable reference
9935         types are not valid.
9936         (mono_nullable_box): Ditto.
9937
9938 2006-02-09  Dick Porter  <dick@ximian.com>
9939
9940         * threads.c (mono_thread_detach): Drop a reference to the thread
9941         we're detaching.
9942
9943 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * object.c (mono_nullable_init): Handle nullable reference types.
9946         (mono_nullable_box): Ditto. Fixes #77446.
9947
9948 2006-02-07  Martin Baulig  <martin@ximian.com>
9949
9950         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
9951
9952 2006-02-07  Ankit Jain  <jankit@novell.com>
9953
9954         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
9955         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
9956         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
9957         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
9958         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
9959         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
9960
9961 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * class.c (mono_class_create_generic): Set type_token as well.
9964
9965         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
9966         compatible with MS.
9967
9968 2006-02-02  Martin Baulig  <martin@ximian.com>
9969
9970         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
9971         has never been used so far.
9972
9973 2006-02-02  Martin Baulig  <martin@ximian.com>
9974
9975         * mono-debug-debugger.h: Changed comment at the top of this file;
9976         the header is not installed, but it's safe to #include it from
9977         within the JIT.
9978
9979         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
9980         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
9981
9982 2006-02-02  Martin Baulig  <martin@ximian.com>
9983
9984         * mono-debug.h
9985         (MonoSymbolTable): Removed the `metadata_info' field.
9986
9987         * mono-debug.c
9988         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
9989
9990         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9991         (mono_debugger_add_builtin_types): Removed.
9992         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
9993         (mono_debugger_create_notification_function): We now operate on a
9994         pre-allocated area; take a `gpointer' and return `void'.
9995
9996         * mono-debug-debugger.c
9997         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
9998         (mono_debugger_add_builtin_types): Removed.
9999
10000 2006-02-02  Martin Baulig  <martin@ximian.com>
10001
10002         * threads.c (mono_debugger_create_all_threads): New public method.
10003
10004 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
10005
10006         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
10007         breaks on several platforms.
10008
10009 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
10010
10011         * assembly.c: the VS.NET build doesn't supply default values for
10012         MONO_ASSEMBLIES and MONO_CFG_DIR.
10013
10014 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
10017         helper function.
10018
10019         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
10020
10021         * loader.c (method_from_memberref): Fix a warning.
10022
10023         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
10024
10025         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
10026         with explicit layout. Fixes #77433.
10027
10028 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
10031         max_interface_id is initialized before using it. Fixes #77398.
10032         (ves_icall_Type_GetInterfaces): Ditto.
10033
10034 2006-01-30  Raja R Harinath  <rharinath@novell.com>
10035
10036         * metadata.c (mono_metadata_parse_method_signature_full): Don't
10037         allocate memory for parameter attributes when parsing memberref
10038         signatures.
10039         * loader.c (mono_loader_set_error_method_load): Don't warn.
10040         (method_from_memberref): Ensure MissingMethodException gets thrown
10041         if method is not found.  Make warning more informative.
10042
10043 2006-01-29  Raja R Harinath  <harinath@gmail.com>
10044
10045         Fix #77397
10046         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
10047         return true if is byref.
10048         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
10049         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
10050         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
10051
10052 2006-01-27  Raja R Harinath  <rharinath@novell.com>
10053
10054         Fix tests/find-method.2.il
10055         * loader.c (find_method, find_method_in_class): Remove is_inflated
10056         argument.  Revert 2006-01-18 change.
10057         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
10058         is generic, search for method in its generic definition.
10059         * class.c (mono_class_setup_vtable_general): Print generic
10060         arguments of generic types in debugging printf.
10061
10062 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10063
10064         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
10065
10066         * threads.c (mono_threads_request_thread_dump): New helper function.
10067
10068 2006-01-25  Raja R Harinath  <rharinath@novell.com>
10069
10070         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
10071
10072 2006-01-25  Ankit Jain  <jankit@novell.com>
10073
10074         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
10075         move definition to ..
10076         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
10077         
10078 2006-01-25  Ankit Jain  <jankit@novell.com>
10079             Raja R Harinath  <rharinath@novell.com>
10080
10081         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
10082         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
10083         as necessary.
10084
10085 2006-01-25  Martin Baulig  <martin@ximian.com>
10086
10087         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
10088         `MonoDebuggerThread' into debug-debugger.c.
10089
10090 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10091
10092         * profiler.c: fix printing of data.
10093
10094 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
10095
10096         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
10097           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
10098
10099 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10100
10101         * object.c: fix deadlock related to string interning.
10102
10103 2006-01-23  Martin Baulig  <martin@ximian.com>
10104
10105         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
10106
10107         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
10108
10109 2006-01-23  Martin Baulig  <martin@ximian.com>
10110
10111         * mono-debug.h: Moved the prototypes of some functions which are
10112         used by the JIT here from mono-debug-debugger.h.
10113
10114 2006-01-21  Martin Baulig  <martin@ximian.com>
10115
10116         * Makefile.am: Don't install mono-debug-debugger.h.
10117
10118 2006-01-21  Martin Baulig  <martin@ximian.com>
10119
10120         * mono-debug-debugger.h: Enforce the private status of this header
10121         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
10122         Moved some stuff from mono-debugger-jit-wrapper.h here.
10123
10124 2006-01-20  Raja R Harinath  <rharinath@novell.com>
10125
10126         * class.c (mono_class_from_typeref): Add a sanity test to help
10127         catch lack of assembly load/search hooks.
10128
10129 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * marshal.c (emit_struct_conv): Relax the fields with same offset
10132         check even more. Fixes #77230.
10133
10134 2006-01-18  Martin Baulig  <martin@ximian.com>
10135
10136         * loader.c (find_method_in_class): Added `gboolean is_inflated'
10137         argument; if false, we compare the uninstantiated signatures.
10138         (method_from_memberref): Compare the uninstantiated signatures;
10139         fixes #76417.
10140
10141 2006-01-18  Robert Jordan  <robertj@gmx.net>
10142
10143         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
10144         Clear the weak link. Fixes bug #77170.
10145
10146         * gc.c (mono_gchandle_free):
10147         Reflect *-gc.c changes (tiny optimization).
10148
10149 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * metadata.c (mono_metadata_signature_dup): Applied patch from
10152         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
10153         Fixes #77288.
10154
10155 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * marshal.c (emit_struct_conv): Allow fields with the same offset when
10158         marshalling from native to managed code. Fixes #77230.
10159
10160 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10161
10162         * threadpool.c: fix problem (Mac only) when more than one asynchronous
10163         connect. Fixes bug #77020.
10164
10165 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10166
10167         * class.c: fixed id assignement for nested interfaces (bug #77275).
10168         Added also better info for --print-vtable debugging.
10169
10170 2006-01-12  Martin Baulig  <martin@ximian.com>
10171
10172         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
10173         interfaces on-the-fly; fixes #76625.
10174
10175         * class-internals.h
10176         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
10177         don't need that anymore.
10178
10179 2006-01-12  Miguel de Icaza  <miguel@novell.com>
10180
10181         * socket-io.c
10182         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
10183         To avoid initing the nested_classes when not needed I turned the
10184         PeerCredData as a toplevel internal class, as it has to be shared
10185         anyways. 
10186
10187         Fixes the CASA issue.
10188
10189 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10190
10191         * domain.c: Accessors for MonoJitInfo
10192
10193         * profiler-private.h: Add jitinfo to the end jit hook
10194
10195         * profiler.[ch]: Define new hooks, called after jitting which give
10196         the MonoJitInfo that was compiled
10197
10198 2006-01-10  Martin Baulig  <martin@ximian.com>
10199
10200         * class.c (mono_class_setup_events): Add support for generic
10201         classes; fixes #76440.
10202
10203 2006-01-06  Raja R Harinath  <rharinath@novell.com>
10204
10205         Fix #77160.
10206         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
10207         on passed-in method.
10208
10209 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10210
10211         * object.c (mono_runtime_invoke_array): Add Nullable support.
10212
10213         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
10214
10215 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
10216
10217         * file-io.c: Don't consider sockets as directory and avoid an endless
10218         loop. Fix bug #76966.
10219
10220 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10221
10222         * object.c (mono_nullable_init): New helper function.
10223         (mono_nullable_box): Ditto.
10224
10225         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
10226
10227         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
10228
10229         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
10230         
10231 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
10232
10233         * class.c (mono_class_is_assignable_from): Make T assignable to 
10234         Nullable<T>.
10235
10236 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
10237
10238         * appdomain.c: Bump corlib version to 46.
10239         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
10240         serialization purpose) and changed ves_icall_System_Reflection_
10241         Assembly_get_code_base signature to accept a boolean (to escape, or 
10242         not, the assembly code base).
10243
10244 2005-12-23  Dick Porter  <dick@ximian.com>
10245
10246         * icall.c: 
10247         * threads-types.h: 
10248         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
10249         CreateEvent icall now returns "created" boolean parameter.
10250
10251 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10252
10253         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
10254         #76967.
10255
10256         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
10257         when attr_klass is an interface. Fixes #77045.
10258
10259 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * marshal.c (emit_struct_conv): Fix previous patch.
10262         
10263         * marshal.c (emit_struct_conv): Add a check for fields with the same
10264         offset.
10265
10266 2005-12-20  Raja R Harinath  <rharinath@novell.com>
10267
10268         Fix regression in Mono.C5.
10269         * class.c (mono_class_create_generic): If 'klass' is an interface
10270         set up the interface offsets.
10271         (mono_class_is_assignable_from): Don't throw away generic arguments.
10272
10273 2005-12-19  Raja R Harinath  <rharinath@novell.com>
10274
10275         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
10276         type parameters.
10277
10278 2005-12-15  Raja R Harinath  <rharinath@novell.com>
10279
10280         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
10281         dead store.
10282         (do_mono_metadata_parse_generic_class): Don't pass the current
10283         generic context when parsing the type being instantiated: it
10284         cannot use it, anyway.
10285
10286         * loader.c (method_from_memberref): Don't inflate a signature if
10287         it doesn't contain any type parameters.
10288
10289 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10290
10291         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
10292
10293 2005-12-14  Martin Baulig  <martin@ximian.com>
10294
10295         * class.c
10296         (mono_type_get_name_recurse): Don't return null for type
10297         parameters and open generic classes.
10298         (mono_class_setup_methods): Don't exclude generic instances.
10299         (mono_get_unique_iid): Use different IDs for different
10300         instantiations of the same generic type.
10301         (mono_class_setup_vtable): Only use setup_generic_vtable() for
10302         open generic instances; create a normal vtable for closed generic
10303         instances.
10304         (mono_class_setup_vtable_general): We're now also called for
10305         closed generic instances.
10306
10307         * reflection.c
10308         (mono_reflection_bind_generic_parameters): Correctly use
10309         mono_metadata_lookup_generic_inst() everywhere.
10310
10311 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * object.c (mono_class_create_runtime_vtable): Call 
10314         mono_class_setup_vtable ().
10315
10316         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
10317         function.
10318         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
10319         #76959.
10320
10321         * loader.c (mono_loader_set_error_type_load): Print the type load
10322         warnings to the console so they are more visible to the user.
10323         (mono_loader_set_error_method_load): Ditto.
10324
10325         * reflection.c (ensure_runtime_vtable): Revert the last change as it
10326         is still broken.
10327         
10328         * reflection.c (ensure_runtime_vtable): Fix build.
10329
10330         * reflection.c (ensure_runtime_vtable): Disable an optimization which
10331         doesn't work in all cases.
10332
10333 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * object.c (mono_array_new_full): Treat a single dimensional array
10336         with 0 lower bounds as an szarray. Fixes #76973.
10337
10338         * reflection.c (custom_attr_visible): Really fix this.
10339
10340 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * reflection.c (custom_attr_visible): Allow nested public attributes
10343         as well.
10344
10345         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
10346         interface check.
10347
10348 2005-12-12  Raja R Harinath  <harinath@gmail.com>
10349
10350         * class.c (set_generic_param_owner): Delete.
10351         (mono_class_create_from_typedef): Don't set ->owner field of
10352         generic parameters to "param containers" of enclosing classes.
10353         * reflection.c (mono_reflection_initialize_generic_parameter):
10354         Likewise.
10355
10356 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * reflection.c (custom_attr_visible): Fix build.
10359
10360 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
10363         private attributes.
10364         
10365         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
10366         handling of null parameter defaults.
10367
10368 2005-12-09  Raja R Harinath  <rharinath@novell.com>
10369
10370         * class.c (mono_class_from_generic_parameter): Don't set
10371         klass->generic_container.
10372         (my_mono_class_from_generic_parameter): Likewise.
10373
10374 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10375
10376         * reflection.c (load_public_key): Fix a warning.
10377         (method_encode_code): Fix unaligned accesses.
10378
10379 2005-12-07  Martin Baulig  <martin@ximian.com>
10380
10381         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
10382
10383         * reflection.c
10384         (write_generic_param_entry): Encode our custom attrs.
10385
10386         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
10387
10388 2005-12-07  Martin Baulig  <martin@ximian.com>
10389
10390         * reflection.c (encode_new_constraint): Removed; we don't use the
10391         `NewConstraintAttribute' anymore.
10392
10393 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
10396         not fire a TypeResolve event when Assembly.GetType () is called.
10397
10398 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10399
10400         Beginning of support for nullable types in the runtime. Parts of
10401         this patch are from Martin.
10402
10403         * appdomain.c (MONO_CORLIB_VERSION): Bump
10404
10405         * domain.c (mono_init_internal): get the nullable type
10406
10407         * class.c (mono_class_is_nullable): New method
10408         (mono_class_get_nullable_param): New mehod
10409         (mono_class_create_generic): In types T? set cast_class to T
10410
10411         * class-internals.h (MonoDefaults): new nullable default class
10412         (mono_class_get_nullable_param, mono_class_get_nullable_param):
10413         new methods.
10414
10415 2005-12-05  Raja R Harinath  <rharinath@novell.com>
10416
10417         * metadata.c (select_container): New.  Refactor code to select the
10418         appropriate GenericContainer given the type of generic parameter
10419         we are looking for.
10420         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
10421         not a MonoGenericContext.  Use select_container.  Update parameters.
10422         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
10423         and MONO_TYPE_MVAR.
10424         (unwrap_arrays): Remove duplicate tests.
10425         (find_generic_param): Rename from 'has_same_context'.  Now walks a
10426         generic instantiated class to find any arguments that are generic
10427         parameters.
10428         (mono_type_create_from_typespec_full): Use find_generic_param to
10429         avoid evicting some generic instantiations from the typespec
10430         cache.
10431
10432 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
10433
10434         * reflection.c: fixed writing of doubles on ARM FPA.
10435
10436 2005-12-02  Robert Jordan  <robertj@gmx.net>
10437
10438         * icall.c: Fixed EventInfo.ReflectedType (#76829).
10439
10440 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10441
10442         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
10443         least on SUSE 10 they are not the same (on debian, they are just the
10444         same thing).
10445
10446 2005-12-01  Raja R Harinath  <rharinath@novell.com>
10447
10448         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
10449         DeclaringType for VARs and MVARs.
10450         * class.c (set_generic_param_owner): Fix initialization of owner
10451         fields.
10452
10453 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
10454
10455         * icall.c: fixed Enum.ToObject() to correctly convert the values.
10456
10457 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10458
10459         * threadpool.c: workaround for a bug that shows up on the Mac:
10460         select()+connect() on a blocking socket is not like it should
10461         be, so we proceed to connect() in that case, wasting the I/O
10462         threadpool thread until connect succeedes. Fixes bug #75436.
10463
10464 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10465
10466         * threadpool.c: fix typo when setting file descriptor states.
10467
10468 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10469
10470         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
10471         * metadata.c (mono_metadata_parse_method_signature_full): Don't
10472         create a temporary signature container.
10473         (mono_metadata_parse_generic_param): Update to changes.
10474         (mono_type_create_from_typespec_full): Update to changes.
10475         * loader.c (method_from_memberref): Don't use a
10476         MonoGenericContainer while parsing a memberref signature.
10477         (method_from_methodspec): Remove dead-store of the 'container'
10478         variable.  It's overwritten before use.
10479
10480         * metadata.c (mono_type_create_from_typespec_full): Make debugging
10481         checks tighter.
10482         (mono_metadata_parse_generic_param): Likewise.
10483         * loader.c (find_method_in_class): Does not need a
10484         MonoGenericContainer.  Use 'mono_method_signature' rather than
10485         'mono_method_signature_full'.
10486         (find_method, mono_get_method_constrained, method_from_memberref):
10487         Update to changes.
10488
10489         * metadata.c (mono_type_create_from_typespec_full): Ensure that
10490         owner-less generic-parameters are never evicted from the typespec
10491         cache.
10492
10493         * loader.c (method_from_memberref): Don't use the current context
10494         when parsing signatures.
10495         (method_from_methodspec, mono_get_method_from_token): Update to changes.
10496
10497         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
10498         side-effects in g_assert.
10499         * loader.c (mono_get_method_from_token): Resolve klass earlier so
10500         that we don't potentially lose information.
10501
10502 2005-11-26  Dick Porter  <dick@ximian.com>
10503
10504         * icall.c:
10505         * threads.c: icalls to implement basic (ie, not named)
10506         System.Threading.Semaphore.
10507
10508 2005-11-24  Dick Porter  <dick@ximian.com>
10509
10510         * process.c
10511         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
10512         Use GetProcessId() if it's available.
10513
10514 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
10517
10518 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10519             Ankit Jain  <jankit@novell.com>
10520
10521         * loader.c (mono_get_method_from_token): Initialize 'method' field
10522         of all generic parameters before parsing the signature.  Remove
10523         code that "fixed"-up MVAR references.
10524
10525 2005-11-23  Ankit Jain  <jankit@novell.com>
10526
10527         * metadata.c (mono_metadata_has_generic_params):
10528         (mono_metadata_load_generic_param_constraints):
10529         (mono_metadata_load_generic_params): Move duplicate code ...
10530         (mono_metadata_get_generic_param_row): ... here. Returns the
10531         first row-id in GenericParam table for a given owner (token).
10532         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
10533         prototype.
10534
10535 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10536             Ankit Jain  <jankit@novell.com>
10537
10538         * metadata.c (mono_metadata_class_equal): Pass signature_only when
10539         comparing VARs too.
10540         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
10541         type->data.generic_param only if the type is an MVAR.
10542         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
10543         leak owner-less VARs and MVARs into managed space.
10544
10545 2005-11-21  Martin Baulig  <martin@ximian.com>
10546
10547         * class-internals.h
10548         (MonoMethod): Moved the `generic_container' here from
10549         `MonoMethodNormal' since we now also need it for
10550         `MonoMethodPInvoke';
10551         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
10552         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
10553         an union containing both `MonoMethodNormal' and
10554         `MonoMethodPInvoke'.
10555
10556         * loader.c
10557         (mono_get_method_from_token): Allow implementing generic methods
10558         as interncalls.
10559
10560         * threads.c
10561         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
10562         icall.
10563
10564 2005-11-17  Dick Porter  <dick@ximian.com>
10565
10566         * icall.c: 
10567         * process.h: 
10568         * process.c: Split the Process Start_internal icall into
10569         ShellExecuteEx_internal and CreateProcess_internal, which are
10570         called depending on whether UseShellExecute is true.  Fixes bug
10571         76670.
10572
10573         * appdomain.c (MONO_CORLIB_VERSION): Incremented
10574
10575 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
10578         'msize' parameters, use the information in 'mspec' instead.
10579         (emit_object_to_ptr_conv): Ditto.
10580
10581         * marshal.c (emit_struct_conv): Handle explicit layout structs with
10582         fields out of order. Fixes #76733.
10583
10584 2005-11-17  Ankit Jain  <jankit@novell.com>
10585
10586         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
10587
10588 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
10589
10590         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
10591           bug #76575.
10592
10593 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
10596         for types with non-auto layout. Fixes #76717.
10597
10598 2005-11-16  Ankit Jain  <jankit@novell.com>
10599
10600         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
10601         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
10602         if generic_context is null.
10603           (mono_metadata_generic_param_equal): param->owner can be null.
10604           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
10605         null.
10606
10607 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10608
10609         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
10610         the correct value.
10611
10612 2005-11-15  Martin Baulig  <martin@ximian.com>
10613
10614         * object.c (set_value): Use mono_class_from_mono_type() instead of
10615         the hack for generic instances; fixes #76136.
10616
10617 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
10618
10619         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
10620         fields.
10621
10622         * image.c (load_metadata_ptrs): Initialize the new fields.
10623
10624         * reflection.c (create_dynamic_mono_image): Ditto.
10625
10626         * reflection.c (build_compressed_metadata): Use the new fields.
10627
10628         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
10629         icall.
10630
10631         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
10632         icall.
10633         
10634 2005-11-15  Ankit Jain  <jankit@novell.com>
10635             Raja R Harinath  <harinath@gmail.com>
10636
10637         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
10638         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
10639         new per-generic_container cache if the cached MonoType's context matches
10640         the current context.
10641           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
10642         to the expected context.
10643           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
10644
10645 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10646
10647         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
10648         we changed the signature of an icall.
10649         * icall.c: Modify to mono_double_ParseImpl return true/false 
10650         depending on the success, instead of throwing the exception. This will
10651         help us in Double.TryParse methods.
10652         
10653 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * marshal.c (emit_marshal_object): Throw an exception when
10656         marshalling 'object' instead of crashing. Fixes #76696.
10657
10658 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10659
10660         * class-internals.h: Add prototype for mono_type_get_full_name ().
10661
10662 2005-11-11  Dick Porter  <dick@ximian.com>
10663
10664         * threads.c (mono_thread_manage): Make sure the main thread has
10665         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
10666
10667 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * loader.c (mono_loader_set_error_type_load): Log a warning to the
10670         console about the missing type.
10671         (mono_loader_set_error_method_load): Ditto.
10672
10673 2005-11-09  Miguel de Icaza  <miguel@novell.com>
10674
10675         * mono-config.c (mono_get_config_dir): Set the system defaults if
10676         none is specified.
10677
10678         * assembly.c (mono_set_dirs): New API entry point to set the
10679         assembly and the config directory in one call
10680
10681 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
10682
10683         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
10684         the ftnptr was created from a delegate in a domain other than the
10685         current domain. Fixes #75377.
10686
10687         * exception.h exception.c: Add mono_get_exception_not_supported ().
10688
10689 2005-11-08  Martin Baulig  <martin@ximian.com>
10690
10691         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
10692
10693 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
10694
10695         * security-manager.h: Added definitions to deal with strongname key 
10696         pairs bigger (and smaller) than 1024 bits.
10697         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
10698         adjust wrt the public key length being used.
10699
10700 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10701
10702         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
10703           Windows build (r51396-51397).
10704
10705 2005-11-03  Martin Baulig  <martin@ximian.com>
10706
10707         * class.c (mono_class_setup_vtable_general): Also add generic
10708         methods to the vtable; fixes #76581.
10709
10710 2005-11-01  Miguel de Icaza  <miguel@novell.com>
10711
10712         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
10713         sure that we lookup GetString method from the System.Text.Encoding
10714         class, not the derived class or we get an empty method.
10715
10716         Fixed class #76612.
10717
10718 2005-10-25  Miguel de Icaza  <miguel@novell.com>
10719
10720         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
10721         if it has been previously set (embedders). 
10722
10723         Make mono_set_rootdir available also on Unix.
10724
10725 005-10-24  Robert Jordan  <robertj@gmx.net>
10726
10727         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
10728
10729 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10730
10731         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
10732         only calls which are made to native code use this flag.
10733
10734         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
10735
10736 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10737
10738         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
10739         Add support for FieldBuilders.
10740
10741 2005-10-29  Martin Baulig  <martin@ximian.com>
10742
10743         * mono-debug.c
10744         (mono_debug_using_mono_debugger): New public method; returns
10745         whether we're running inside the debugger.
10746
10747 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
10750         for Method/Constructor/FieldBuilders.
10751
10752 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10753
10754         * reflection.c (module_add_cattrs): Save custom attributes for global methods
10755         and fields as well.
10756
10757 2005-10-26  Martin Baulig  <martin@ximian.com>
10758
10759         * mono-debug-debugger.c
10760         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
10761
10762 2005-10-24  Raja R Harinath  <harinath@gmail.com>
10763
10764         * icall.c (base64_to_byte_array): Don't pass an out-of-range
10765         integer to isspace.
10766
10767 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10768
10769         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
10770         when passing valuetypes byref. Fixes #76502.
10771
10772 2005-10-19  Jackson Harper  <jackson@ximian.com>
10773
10774         * profiler.c: Don't put a . in front of types that are not in a
10775         namespace.
10776
10777 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
10780
10781 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
10782
10783         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
10784         #76436.
10785         (mono_marshal_get_ldflda_wrapper): Fix a warning.
10786
10787 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10788
10789         * assembly.c metadata-internals.h icall.c: Define an additional
10790         parameter for mono_assembly_name_parse_full, so we can avoid creating
10791         S.R.AssemblyName.Version when no version info wasn't passed.
10792         
10793 2005-10-09  Miguel de Icaza  <miguel@novell.com>
10794
10795         * class.c (mono_type_get_full_name): Reimplement method that was
10796         removed. 
10797
10798         * image.c: Some docs
10799
10800 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * profiler.c (output_newobj_profile): Fix printing of Total memory
10803         on x86.
10804
10805 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10806
10807         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
10808
10809 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
10810
10811         * threads.c: remove debug output.
10812
10813 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10814
10815         * threads.c (mono_thread_manage): Fix crashes if more than 64
10816         threads need to be aborted. Hopefully fixes #75899.
10817
10818         * assembly.c (mono_stringify_assembly_name): New helper function.
10819
10820         * class.c: Use mono_stringify_assembly_name instead of the similar
10821         static function.
10822
10823         * assembly.h assembly.c: Add support for calling a postload search 
10824         hook if an assembly cannot be loaded.
10825
10826         * appdomain.c: Register new search hooks which call the AssemblyResolve
10827         events in AppDomain. Fixes #75231
10828
10829 2005-10-07  Martin Baulig  <martin@ximian.com>
10830
10831         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
10832         methods without debug info.
10833
10834 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
10837         wrappers.
10838
10839 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10840
10841         * file-io.c: now that we return symlinks, use lstat and, when the file
10842         is a symbolic link, stat, to get the file attributes. Also avoid the
10843         conversion to/from utf16/external.
10844
10845 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
10846
10847         * class.c (mono_class_layout_fields): Compute klass->has_references
10848         correctly if an embedded valuetype is not yet initialized. Fixes
10849         #76331.
10850
10851 2005-10-04  Martin Baulig  <martin@ximian.com>
10852
10853         * metadata.c
10854         (mono_metadata_load_generic_param_constraints): New public
10855         function; splitted the constraints loading out from
10856         mono_metadata_load_generic_params().
10857
10858         * class.c (mono_class_create_from_typedef): Call
10859         mono_metadata_load_generic_param_constraints() after setting up
10860         the type and creating our parent; fixes #75329.
10861
10862 2005-10-04  Martin Baulig  <martin@ximian.com>
10863
10864         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
10865         non-dynamic parent classes.
10866
10867 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10868
10869         * file-io.c : win32 build fix (ETXTBSY seems not found).
10870
10871 2005-10-04  Martin Baulig  <martin@ximian.com>
10872
10873         * reflection.c
10874         (mono_image_get_methodspec_token): Make the cache actually work;
10875         fixes #75974.
10876
10877 2005-10-04  Martin Baulig  <martin@ximian.com>
10878
10879         * class.c (mono_class_name_from_token): Removed the unneccessary
10880         `MonoGenericContext *' argument.
10881
10882 2005-10-04  Martin Baulig  <martin@ximian.com>
10883
10884         * loader.c
10885         (method_from_methodspec): Make the caching work again; fixes the
10886         performance regression from #76262.
10887
10888 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10889
10890         * file-io.c:
10891         * file-io.h:
10892         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
10893         GetFileSystemEntries that performs the same work but without going
10894         into io-layer, locking, etc.
10895
10896 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10897
10898         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
10899         ThreadState_Stopped as well. Fixes #76047.
10900
10901 2005-09-29  Martin Baulig  <martin@ximian.com>
10902
10903         * class.c
10904         (inflate_generic_context): If the new context has a `gmethod', set
10905         its `container' that that gmethod's `container'.
10906
10907         * metadata.c
10908         (mono_metadata_parse_generic_param): Simplify things;
10909         `generic_container = generic_context->container;' is just fine.
10910
10911         * loader.c (method_from_methodspec): Code cleanups.
10912
10913 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
10914
10915         * decimal.c: fix warning (and let gcc generate correct
10916         code on ARM with optimizations).
10917
10918 2005-09-28  Martin Baulig  <martin@ximian.com>
10919
10920         * loader.c
10921         (method_from_memberref): Added `MonoGenericContext *class_context'
10922         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
10923         (method_from_methodspec): If we're a memberref, use the enclosing
10924         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
10925
10926 2005-09-28  Martin Baulig  <martin@ximian.com>
10927
10928         * object.c (mono_runtime_invoke_array): Added support for
10929         MONO_TYPE_GENERICINST; fixes #75917.
10930
10931 2005-09-27  Martin Baulig  <martin@ximian.com>
10932
10933         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
10934         `k->byval_arg.type' to determine the actual type.
10935
10936         * loader.c (method_from_methodspec): Removed some hacks.
10937
10938 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10939
10940         * class-internals.h (mono_field_is_deleted): Do the test for
10941         rtspecialname before we check the actual name of the field. This
10942         prevents us from dereferencing a pointer into the string table,
10943         saving us from accessing a few pages
10944
10945         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10946         macros. This will allow a deadlock debugger to easily be plugged
10947         in.
10948
10949 2005-09-27  Martin Baulig  <martin@ximian.com>
10950
10951         * loader.c (method_from_methodspec): Create a "signature"
10952         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
10953
10954 2005-09-27  Martin Baulig  <martin@ximian.com>
10955
10956         * class.c
10957         (inflate_generic_class): Correctly set the new context's
10958         container.
10959
10960         * loader.c
10961         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
10962         instead of a `MonoGenericContext *'.
10963         (mono_method_signature_full): Take a `MonoGenericContainer *'
10964         instead of a `MonoGenericContext *'.
10965
10966         * metadata.c
10967         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
10968         instead of a `MonoGenericContext *'.
10969         (mono_metadata_parse_method_signature_full): Likewise.
10970
10971 2005-09-26  Martin Baulig  <martin@ximian.com>
10972
10973         * class.c
10974         (mono_class_from_generic_parameter): Set `klass->generic_container'
10975         (mono_class_from_generic_parameter): Likewise.
10976         (mono_bounded_array_class_get): We inherit the generic container
10977         from the element class.
10978
10979         * loader.c
10980         (find_method, find_method_in_class): Take a `MonoGenericContext *'
10981         argument rather than computing it here.
10982         (method_from_memberref): Correctly set the generic context before
10983         parsing the signature.  Fixes #75681.
10984
10985 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10986
10987         * object.c (mono_class_has_special_static_fields): Fix warnings.
10988
10989 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10990
10991         * assembly.c: Add parse_public_key function, to
10992         par the public keys. Also added mono_assembly_name_parse_full,
10993         to define it the parsed key should be freed or not.
10994         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
10995         to parse a long format assembly name.
10996         * metadata-internals.h: Keep mono_assembly_name_parse_full as
10997         private, since calling it to preserve the key requires
10998         freeing it manually.
10999         
11000 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
11001
11002         * locales.c : removed HAVE_ICU part.
11003
11004 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11005
11006         * object.c (mono_class_create_runtime_vtable): Avoid calling 
11007         field_is_special_static if the klass has no special static fields.
11008
11009         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
11010         (MonoCachedClassInfo): Likewise.
11011
11012         * object.c (mono_class_has_special_static_fields): New helper function.
11013
11014 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * class.c (mono_class_create_from_typedef): Don't call 
11017         interfaces_from_typedef_full for enums.
11018         (mono_class_create_from_typedef): Compute the base types of enums directly
11019         without calling mono_class_setup_fields ().
11020         (mono_class_find_enum_basetype): New helper function.
11021
11022         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
11023         one place inside the string heap.
11024         
11025 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
11026
11027         * class.c: locking fixes, code cleanups, some docs added.
11028         Allocate some data structures in the image mempool.
11029
11030 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
11033         the example code.
11034         
11035 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
11036
11037         * class-internals.h, class.c, reflection.c: reduce memory taken by
11038         MonoClass.
11039
11040 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
11041
11042         * metadata.c, metadata.h, loader.h: documentation updates, code and
11043         API cleanups.
11044
11045 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11046
11047         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
11048         the example code.
11049
11050         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
11051         page faults caused by the runtime while reading metadata.
11052
11053 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11054
11055         * socket-io.c: the field names were changed 3 months ago and no one
11056         realized until bug #76077 got filed!
11057
11058 2005-09-20  Martin Baulig  <martin@ximian.com>
11059
11060         * icall.c (assembly_icalls): Removed some unused debugger icalls.
11061
11062 2005-09-20  Martin Baulig  <martin@ximian.com>
11063
11064         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
11065         write the rank into the class entry.
11066
11067 2005-09-20  Martin Baulig  <martin@ximian.com>
11068
11069         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
11070
11071 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
11072
11073         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11074
11075         * icall.c (custom_attrs_defined_internal): New icall.
11076
11077         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
11078         function.
11079         (mono_custom_attrs_construct_by_type): New helper function.
11080
11081 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
11082
11083         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
11084         terminate the resulting string. Fixes #76123.
11085
11086 2005-09-16  Martin Baulig  <martin@ximian.com>
11087
11088         * mono-debug.c
11089         (mono_debug_add_method): Ignore inflated methods for the moment.
11090
11091 2005-09-14  Martin Baulig  <martin@ximian.com>
11092
11093         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
11094
11095 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
11098         return a success/failure indication.
11099         (mono_metadata_interfaces_from_typedef_full): Ditto.
11100         (get_constraints): Ditto.
11101
11102 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11103
11104         * marshal.c (emit_marshal_array): Fix handling of null arrays.
11105         
11106         * marshal.c (emit_marshal_array): Add support for returning string
11107         arrays from delegates. Fixes #76063.
11108
11109         * marshal.c: Use the emit_ldloc/stloc macros where possible.
11110
11111 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
11114         icall.
11115
11116 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11117
11118         * reflection.c icall.c: Fix after mono_get_exception_type_load
11119         signature change.
11120
11121         * assembly.c (mono_assembly_get_assemblyref): New helper function.
11122         (mono_assembly_load_reference): Use the new helper.
11123
11124         * class-internals.h (MonoLoaderError): New structure containing 
11125         information about type loading errors.
11126
11127         * class-internals.h loader.c: Add APIs to store per-thread loader
11128         error information.
11129
11130         * loader.c class.c: Set the loader error if needed.
11131
11132         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
11133
11134 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
11135
11136         * decimal.c: fixed to handle the broken ARM fp format.
11137
11138 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
11139
11140         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
11141         broken.
11142
11143 2005-09-06  Martin Baulig  <martin@ximian.com>
11144
11145         * domain.c (supported_runtimes): Added v2.0.50727.
11146
11147 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
11148
11149         * culture-info.h: reduce the size of some structures.
11150
11151 2005-09-05  Martin Baulig  <martin@ximian.com>
11152
11153         Reflect latest API changes in the August CTP.
11154
11155         * icall.c
11156         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
11157         ("MonoType.HasGenericArguments"): Removed.
11158         ("MonoMethod.BindGenericParameters"): Renamed to
11159         "MakeGenericMethod".
11160         ("MethodBuilder.BindGenericParameters"): Renamed to
11161         "MakeGenericMethod".    
11162
11163 2005-09-05  Martin Baulig  <martin@ximian.com>
11164
11165         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
11166
11167 2005-09-05  Martin Baulig  <martin@ximian.com>
11168
11169         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11170
11171         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
11172         generic_container is non-NULL.
11173
11174 2005-09-05  Martin Baulig  <martin@ximian.com>
11175
11176         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11177
11178         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
11179
11180 2005-08-29  Michal Moskal  <malekith@nemerle.org>
11181
11182         * reflection.c (encode_locals,
11183         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
11184         for large generic types.
11185
11186 2005-09-05  Martin Baulig  <martin@ximian.com>
11187
11188         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11189
11190         * class.c (mono_dup_array_type): New public method.
11191         (mono_metadata_signature_deep_dup): New public method.
11192         (dup_type): Correctly duplicate array and function types.
11193
11194 2005-09-05  Martin Baulig  <martin@ximian.com>
11195
11196         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11197
11198         * reflection.c (get_default_param_value_blobs): Handle generic types
11199         and generic methods.
11200
11201 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
11202
11203         * class.c: Fixed error reporting (method/class were inversed) for 
11204         inheritance demands.
11205         * security-manager.c|h: Added the AppDomain when calling the managed
11206         System.Security.SecurityManager.InheritanceDemand method.
11207
11208 2005-09-01  Raja R Harinath  <rharinath@novell.com>
11209
11210         * reflection.c (encode_marshal_blob): 'marshaltype' and
11211         'marshaltyperef' are alternate sources for the custom marshaler
11212         name.
11213
11214 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
11215
11216         * class.c: fix creation of array classes with rank == 1
11217         (patch by Ankit Jain <jankit@novell.com>).
11218
11219 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
11220
11221         * object.c: fix check for creating the bound data for arrays vs
11222         szarrays.
11223
11224 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11225
11226         * object.c: configuration file name is now based on the executable name,
11227         not the image name. Fixes bug #75931.
11228
11229 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11230
11231         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
11232         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
11233
11234 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11235
11236         * rand.c: Use wincrypt.h instead of WinCrypt.h.
11237
11238 2005-08-24  Ankit Jain  <jankit@novell.com>
11239             Raja R Harinath  <rharinath@novell.com>
11240
11241         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
11242           called by it recursively.
11243           (mono_class_init): Remove special case in pending_init handling, since it's
11244           superseded by the fix to mono_class_from_typeref.
11245
11246 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11247
11248         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
11249         BROKEN_THREAD_START stuff.
11250
11251 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11252
11253         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
11254         trampoline.
11255
11256         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
11257         
11258         * object.c (mono_delegate_ctor): Replace the original function address with
11259         a delegate trampoline.
11260
11261 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
11262
11263         * icall.c: add boolean argument to base64_to_byte_array and 
11264         InternalFromBase64String to control whether a whitespace-only string
11265         is allowed (or should casue a FormatException to be thrown). We need
11266         this as the behavior has changed between MS.NET 1.x and 2.0, and we
11267         to match the MS behaviour in both profiles.
11268         * appdomain.c: Bump corlib version.
11269
11270 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11271
11272         This patch implements a big portion of publisher policy
11273         support, used to bind assembly versions and redirect
11274         one assembly from version A to version B.
11275
11276         * assembly.c:
11277         New GSList loaded_assembly_bindings, for storing the cached
11278         assembly bindings.
11279         (assembly_binding_maps_name): New static function for checking if a 
11280         assembly binding information maps an assembly name.
11281         (mono_assembly_binding_info_free): New function for freeing
11282         assembly binding information resources.
11283         (get_publisher_policy_info): New static function for retrieving 
11284         assembly binding information from a MonoImage.
11285         (compare_versions): New static function for comparing an assembly
11286         binding information data and the version of an assembly name.
11287         (check_policy_versions): New static function for checking if an
11288         assembly binding info mapping an assembly name is valid for it.
11289         (mono_assembly_load_publisher_policy): New static function for
11290         loading the 'policy.major.minor.MyAssembly' image for an assembly
11291         with an assembly name 'aname'.
11292         (mono_assembly_bind_version): New static function for updating
11293         assembly redirection.
11294         (mono_assembly_apply_binding): New static function for applying
11295         assembly binding.
11296         (search_binding_loaded): New static function for searching 
11297         loaded assembly binding infos in the cache domain.
11298         (mono_assembly_load_full): Don't apply assembly binding for
11299         reflection only assemblies.
11300
11301         * metadata-internals.h: Add MonoAssemblyBindingInfo,
11302         which contains information about assembly binding. Also
11303         declare signature for mono_config_parse_publisher_policy ()
11304         function, used to retrieve pub policy info.
11305         
11306         * mono-config.c:
11307         (publisher_policy_start): New static function used to parse publisher 
11308         policy config files.
11309         (publisher_policy_parser): New static MonoParseHandler containing 
11310         the functions used when parsing config files.
11311         (mono_config_parse_publisher_policy): New function for parsing
11312         publisher policy files.
11313         
11314 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11315
11316         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
11317
11318         * marshal.c (mono_delegate_free_ftnptr): Ditto.
11319
11320         * object.c (mono_get_addr_from_ftnptr): New helper function.
11321
11322         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
11323
11324         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11325
11326 2005-08-19  Dick Porter  <dick@ximian.com>
11327
11328         * threads.c, threads.h, appdomain.c, appdomain.h,
11329         profiler-private.h, monitor.c, object.c, object-internals.h,
11330         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
11331         store the thread ID, so it can hold a 64 bit value if needed.
11332
11333 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11334
11335         * reflection.c (mono_reflection_create_dynamic_method): Store the
11336         handle class into the method references as well so ldtoken works in
11337         dynamic methods.
11338
11339         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
11340         types.
11341
11342 2005-08-19  Ankit Jain <jankit@novell.com>
11343
11344         Fix #75847.
11345         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
11346           here rather than using the method signature of a arbitrary function
11347           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
11348           two arguments.
11349           Hack done with Harinath.
11350
11351 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11352
11353         * threadpool.c: disable printing stack traces when we get a exception
11354         in a threadpool thread. I need to do more testing to figure out which
11355         cases actually print this. Fixes bug #75828.
11356
11357 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11358
11359         * icall.c: there might be ignored whitespace after the last '='. This
11360         fixes length computation and bug #75840.
11361
11362 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
11363
11364         * assembly.c (mono_assembly_load_full): Consider .exe extension as
11365         well. Fixes #75809.
11366
11367         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
11368         #75784.
11369         
11370         * reflection.c (create_custom_attr_data): Ditto.
11371
11372 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
11373
11374         * locales.c, culture-info.h : removed RegionLCIDMap.
11375         * culture-info-tables.h : regenerated.
11376
11377 2005-08-16  Martin Baulig  <martin@ximian.com>
11378
11379         * class.c (mono_type_get_name_recurse): Small fix.
11380
11381 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
11382
11383         * locales.c : indentation fixie.
11384
11385 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
11386
11387         * object-internals.h,
11388           locales.h,
11389           locales.c,
11390           culture-info.h,
11391           icall.c : added RegionInfo table support.
11392         * culture-info-table.h : regenerated for region support.
11393
11394 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
11395
11396         * reflection.c (resolve_object): handle all kinds of MonoMethod
11397         including generic ones
11398
11399 2005-08-12  Ankit Jain <jankit@novell.com>
11400
11401         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
11402           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
11403
11404 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
11405
11406         * process.c: Don't close a thread handle when it's NULL. This is a
11407         workaround for bug #75733.
11408
11409 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11410
11411         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
11412
11413 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
11414
11415         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
11416
11417 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11418
11419         * threadpool.c: if a work item in the thread pool has a callback that
11420         catches a exception, don't propagate it after invoking the callback.
11421         Fixes bug #75336.
11422
11423 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11424
11425         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
11426
11427         * class-internals.h (MonoCachedClassInfo): Add some new fields.
11428
11429         * class.c (mono_class_init): Load field info lazily in the AOT case.    
11430
11431         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
11432
11433 2005-08-03  Ankit Jain  <jankit@novell.com>
11434
11435         Fix #75683.
11436         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
11437           PInvoke calling convention is 0.
11438
11439 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
11440
11441         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
11442         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
11443
11444 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
11445
11446         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
11447         to handle threads not started by the GC (patch by Michael Meeks
11448         <michael.meeks@novell.com>).
11449
11450 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
11451
11452         * reflection.c: Make buffer used in emitting types larger for some
11453         big generic types (patch by Michal Moskal).
11454
11455 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11456
11457         * mono-debug.c: Fix some (not all) alignment problems.
11458
11459 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11460
11461         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
11462         Invoke mono_image_load_from_data_full passing the refonly
11463         parameter.
11464
11465         * assembly.c
11466         (mono_assembly_open_from_bundle): Add the refonly argument, 
11467         in order to pass it to other methods it calls to.
11468         (do_mono_assembly_open): Add the refonly argument, in order 
11469         to pass it to other methods it calls to.
11470         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
11471         the refonly parameter to it.
11472
11473         * image.c: Add loaded_images_refonly_hash and
11474         loaded_images_refonly_guid_hash to cache the reflection
11475         only loaded images.
11476         (mono_images_init): Initialize the hash tables used for
11477         caching the reflection only images.
11478         (load_modules): Invoke mono_image_open_full passing the refonly
11479         parameter to load the modules the correct way.
11480         (build_guid_table): Add the refonly argument, to re-build the 
11481         correct hash table.
11482         (do_mono_image_open): Added the refonly argument, in order to
11483         define it for the loaded image.
11484         (mono_image_loaded_full): New function, which receives an
11485         additional parameter to look for the image in the refonly or
11486         non-refonly section.
11487         (mono_image_loaded): Updated, using mono_image_loaded_full.
11488         (mono_image_loaded_by_guid_full): The same case that happens
11489         with mono_image_loaded_full.
11490         (mono_image_loaded_by_guid): Likewise.
11491         (register_image): Use the ref_only variable inside MonoImage
11492         to decide in which hash table store the current image.
11493         (mono_image_open_from_data_full): Rename
11494         mono_image_open_from_data to mono_image_open_from_data_full,
11495         adding the refonly argument, to define the ref_only variable 
11496         inside MonoImage.
11497         (mono_image_open_from_data): Return 
11498         mono_image_open_from_data_full.
11499         (mono_image_open_full): Rename mono_image_open to
11500         mono_image_open_full, receiving the new refonly argument,
11501         to pass it to inner methods.
11502         (mono_pe_file_open): Update this function, to open
11503         a MonoImage as a non-refonly image.
11504         (mono_image_close): Use the refonly variable inside
11505         MonoImage to remove the image from the correct caches.
11506
11507         * image.h: Add the signatures of mono_image_open_full,
11508         mono_image_open_from_data_full, mono_image_loaded_full,
11509         mono_image_loaded_by_guid_full.
11510
11511         * metadata-internals.h: Add the ref_only field to 
11512         MonoImage.
11513         
11514 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11515
11516         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
11517         Fix the last behavior, which used to load the assemblies and
11518         extract MonoReflectionAssemblyName information, instead of
11519         extract it from the metadata tables. Needed for Reflection
11520         Only assemblies.
11521         
11522 2005-07-29  Martin Baulig  <martin@ximian.com>
11523
11524         * mono-debug-debugger.c
11525         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
11526         not initialized.
11527
11528         * mono-debug.c
11529         (mono_debug_address_from_il_offset): Check whether we have
11530         debugging support before attempting to take the lock.
11531         (mono_debug_source_location_from_address): Likewise.
11532         (mono_debug_source_location_from_il_offset): Likewise.
11533         (mono_debug_il_offset_from_address): Likewise.
11534         (mono_debug_address_from_il_offset): Likewise.
11535
11536 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
11537
11538         * class.c (mono_class_from_name_case): Add support for dynamic images.
11539         Fixes #75650.
11540
11541         * object.c (mono_class_compute_gc_descriptor): Add a workaround
11542         for #75479.
11543
11544 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11545         
11546         * reflection.c (mono_method_get_object): Fix warning.
11547
11548 2005-07-28  Martin Baulig  <martin@ximian.com>
11549
11550         * mono-debug.c
11551         (mono_debug_add_wrapper): Also write the wrapper type.
11552
11553 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11554
11555         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
11556         
11557         * class.c (mono_class_init): Avoid reading nested classes if the AOT
11558         data indicates the class has none.
11559
11560 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
11561
11562         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
11563         loader lock with the debugger lock. Prevents deadlocks for beagle.
11564
11565         Beagle can now run on an smp box for a weekend without any
11566         issues. Woohoo!
11567
11568 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
11569
11570         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
11571         in a module. Fixes #75629.
11572
11573 2005-07-26  Martin Baulig  <martin@ximian.com>
11574
11575         * mono-debug.c (mono_debug_add_wrapper): New static method.
11576         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
11577         interncall or a wrapper.
11578
11579         * mono-debug.h (MonoDebugWrapperData): New public typedef.
11580         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
11581         (MONO_DEBUGGER_VERSION): Bump to 51.
11582
11583         * mono-debug-debugger.c
11584         (mono_debugger_add_type): Removed this empty function.
11585         (mono_debugger_add_method): Likewise.
11586
11587 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11588
11589         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
11590         before accessing method->slot.
11591
11592 2005-07-21  Jb Evain  <jbevain@gmail.com>
11593
11594         * reflection.c (method_encode_clauses/class): Handle filters clauses.
11595         Fixes #75010.
11596
11597 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11598
11599         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
11600         #75587.
11601
11602 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11603
11604         * image.h image.c: Add mono_image_get_guid () API function.
11605
11606 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
11607
11608         There were issues when multiple threads tried to load
11609         assemblies. A deadlock was created between assemblies_mutex and
11610         mono_domain_assemblies_lock. This fixes the issue by making the
11611         assembly ref counting be lock free. See bug 75586.
11612         
11613         * image.c (mono_image_close): The add ref function here was using
11614         Interlocked operations while the unref was using a mutex and a
11615         --. I don't think this was ever a bug that would be exposed in a
11616         non-pendantic way (ie, by an embedder doing a ref on one thread
11617         and an unref on another), but for the sake of correctness, this is
11618         now Interlocked.
11619
11620         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
11621         (mono_assembly_load_reference): Call mono_assembly_addref rather
11622         than touching the refcount ourselves.
11623         (mono_assembly_close): Use InterlockedDecrement to unref the
11624         assembly. Don't acquire the lock unless it is actually needed.
11625
11626 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11627
11628         * class.c (mono_class_layout_fields): Fix calculation of has_references
11629         for generic types.
11630
11631 2005-07-12  Martin Baulig  <martin@ximian.com>
11632
11633         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11634
11635         * metadata.c
11636         (mono_type_hash): Provide better hashing for generic instances.
11637         (mono_generic_inst_hash): Improve hashing.
11638         (mono_generic_class_hash): Likewise.
11639
11640         * reflection.c (mymono_metadata_type_hash): Improve hashing for
11641         generic instances.
11642
11643 2005-07-12  Martin Baulig  <martin@ximian.com>
11644
11645         * reflection.c (mono_reflection_create_runtime_class): Remove the
11646         hack for generic type definitions and non-`Run' assemblies.
11647         (mono_reflection_bind_generic_parameters): Also use
11648         `klass->wastypebuilder' to check for TypeBuilders.
11649
11650 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11651
11652         * class.c (mono_class_layout_fields): Fix calculation of has_references
11653         for generic types.
11654
11655         * class.c (inflate_generic_class): Fix a leak.
11656         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
11657         for generic types.
11658
11659 2005-07-11  Martin Baulig  <martin@ximian.com>
11660
11661         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
11662         on error.
11663
11664 2005-07-11  Martin Baulig  <martin@ximian.com>
11665
11666         * loader.c (find_method): Also lookup in
11667         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
11668
11669 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11670
11671         * appdomain.c (mono_domain_unload): Don't free the error message
11672         before passing it to mono_get_exception_...
11673
11674         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
11675         
11676 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
11677
11678         * threads.c: try to better guess an available RT signal (bug #75387).
11679
11680 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11681
11682         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
11683         and CACHE_OBJECT.
11684
11685 2005-07-07  Martin Baulig  <martin@ximian.com>
11686
11687         * class.c (mono_type_get_name_full): Return NULL for
11688         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
11689         fixes #75408.
11690
11691 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11692
11693         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
11694         exit the appdomain as well being aborted.
11695
11696         * threadpool.c: Create all threadpool threads inside the root appdomain, and
11697         change back to the root domain after calling managed code. This enables
11698         appdomains using threadpools to be unloaded.
11699
11700 2005-07-07  Martin Baulig  <martin@ximian.com>
11701
11702         * class-internals.h
11703         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
11704         into `MonoDynamicGenericClass' since we only need it for dynamic
11705         types.
11706
11707         * reflection.c (mono_class_bind_generic_parameters): We don't need
11708         to compute the `parent' here.
11709
11710 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
11711
11712         * culture-info-table.h : regenerated.
11713
11714 2005-07-06  Martin Baulig  <martin@ximian.com>
11715
11716         * icall.c
11717         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
11718
11719         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
11720
11721 2005-07-06  Martin Baulig  <martin@ximian.com>
11722
11723         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
11724         we're doing a signature-only comparision; fixes #74945.
11725
11726 2005-07-06  Martin Baulig  <martin@ximian.com>
11727
11728         * class-internals.h (MonoGenericClass): Moved some things out into
11729         a new `MonoInflatedGenericClass' type.  
11730         (MonoInflatedGenericClass): New type; the `klass' of a
11731         `MonoGenericClass' is now computed lazyly in
11732         mono_get_inflated_generic_class().      
11733
11734         * class.c (mono_get_inflated_generic_class): New public function.
11735         (mono_class_inflate_generic_method): Removed the unused
11736         `MonoClass *' argument.
11737         (setup_generic_vtable): Don't call mono_get_inflated_method() on
11738         all the methods.
11739         (mono_class_create_generic): Make this static and merge it with
11740         mono_class_create_generic_2(); we're now called automatically from
11741         mono_get_inflated_generic_class().
11742
11743         * loader.c (mono_method_signature): Call
11744         mono_get_inflated_method() here.
11745
11746 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
11747
11748         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
11749         type of fields with RVA.
11750
11751         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
11752         for this pseudo class.
11753         (my_mono_class_from_generic_parameter): Likewise.
11754         (mono_class_init): Allow interfaces to have cctors.
11755
11756 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11757
11758         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
11759         lazily for AOT methods.
11760
11761 2005-07-05  Martin Baulig  <martin@ximian.com>
11762
11763         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
11764         returns FALSE for a successful match, not TRUE.
11765
11766 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11767
11768         * loader.c (mono_method_get_index): Optimize this a bit.
11769
11770 2005-07-04  Martin Baulig  <martin@ximian.com>
11771
11772         * class.c
11773         (class_compute_field_layout): Move the check for generic type
11774         definitions into mono_class_layout_fields().  Fixes #74684.
11775         (mono_class_from_generic_parameter): Correctly compute
11776         `klass->parent'; fixes #75457.
11777
11778         * reflection.c (register_assembly, register_module): Make sure
11779         `domain->rejobject_hash' is already created.
11780
11781 2005-07-02  Martin Baulig  <martin@ximian.com>
11782
11783         * class-internals.h
11784         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
11785         `MonoDynamicGenericClass'.      
11786
11787 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
11788
11789         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
11790         returned by a field getter is null, since null is a valid value.
11791
11792 2005-07-01  Martin Baulig  <martin@ximian.com>
11793
11794         * reflection.c (mono_reflection_generic_class_initialize): Update
11795         the `dgclass->fields [i].parent' to the correct class.
11796         (mono_image_get_fieldref_token): Use the declaring type, not the
11797         reflected type.
11798
11799 2005-07-01  Martin Baulig  <martin@ximian.com>
11800
11801         * loader.c (find_method): Also look in the interfaces; fixes #75429.
11802
11803 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
11804
11805         * threads.c (thread_cleanup): assert that thread != NULL
11806         (wait_for_tids_or_state_change): We were using the wrong variable
11807         when accessing wait->threads. `i' was always out of the bounds of
11808         the array.
11809
11810 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11811
11812         * loader.c: map user32 and kernel32 to libMonoSupportW
11813
11814 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11815
11816         * appdomain.c (unload_thread_main): Mark this as WINAPI.
11817
11818 2005-06-28  Martin Baulig  <martin@ximian.com>
11819
11820         * loader.c (method_from_methodspec): Fix #75334.
11821
11822 2005-06-28  Martin Baulig  <martin@ximian.com>
11823
11824         Fix #74953 - Arrays now implement the generic IList<T> interface
11825         on the 2.0 platform.
11826
11827         * class-internals.h (MonoDefaults): Added `generic_array_class'.
11828
11829         * reflection.c (mono_class_bind_generic_parameters): New public
11830         function; similar to mono_reflection_bind_generic_parameters(),
11831         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
11832
11833         * domain.c (mono_init_internal): Try to initialize.
11834         `mono_defaults.generic_array_class' here; this'll only succeed if
11835         we're using the 2.0 corlib.
11836
11837         * icall.c
11838         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
11839         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
11840         (mono_lookup_internal_call): Added support for nested classes.
11841
11842         * loader.c
11843         (mono_get_method_from_token): Set `result->signature->pinvoke' if
11844         we're an interncall and have generic arguments.
11845
11846         * class.c
11847         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
11848         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
11849         instance of System.Array.InternalArray<T> for arrays, so they
11850         implement the generic IList<T> interface.
11851
11852 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
11853
11854         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
11855         (chastamar@yahoo.com). Fixes #75374.    
11856
11857 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
11858
11859         * culture-info-table.h: regenerated.
11860
11861 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11862
11863         * icall.c: handle spaces correctly for base64 strings.
11864
11865 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11866
11867         * *.c: Kill some warnings.
11868
11869 2005-06-23  Duncan Mak  <duncan@novell.com>
11870
11871         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
11872         that this builds on Solaris 10 (x86).
11873
11874 2005-06-23  Martin Baulig  <martin@ximian.com>
11875
11876         * class.c
11877         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
11878         generic type definitions.
11879
11880 2005-06-23  Martin Baulig  <martin@ximian.com>
11881
11882         Fix #75331.
11883
11884         * metadata.c (mono_class_get_overrides): Renamed to
11885         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
11886         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
11887         pass it to mono_get_method_full().
11888
11889 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
11890
11891         * reflection.c (mono_reflection_create_runtime_class): take the
11892         mono_domain_lock in this method. Prevents deadlocks
11893
11894 2005-06-22  Martin Baulig  <martin@ximian.com>
11895
11896         * loader.c (method_from_methodspec): Fix #75330.
11897
11898 2005-06-22  Martin Baulig  <martin@ximian.com>
11899
11900         * reflection.c (type_get_qualified_name): Use
11901         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
11902         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
11903         argument; use it if we don't have an assembly name.
11904
11905 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
11906
11907         * object.c: In mono_message_init, set "copy out" flag for in
11908         parameters with the [Out] flag.
11909
11910 2005-06-21  Martin Baulig  <martin@ximian.com>
11911
11912         * class.c
11913         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
11914         and MONO_TYPE_PTR.
11915
11916 2005-06-21  Martin Baulig  <martin@ximian.com>
11917
11918         * class.c (mono_class_init): Don't initialize `class->fields' for
11919         generic instances since they're initialized again in
11920         compute_field_layout(). 
11921         (compute_field_layout): Set the field's `generic_info' here; fix
11922         #75320. 
11923
11924 2005-06-21  Martin Baulig  <martin@ximian.com>
11925
11926         * class-internals.h
11927         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
11928
11929         * metadata.c (mono_metadata_generic_method_equal): Also
11930         distinguish the `generic_class'; fixes #75334.
11931
11932 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11933
11934         * domain.c:
11935         * appdomain.c:
11936         * domain-internals.h:
11937         * reflection.c: 'domain_assemblies' field is now protected by its own
11938         lock. Don't call into managed code to run the AssemblyLoad event if we
11939         now there are no registered delegates for it.
11940
11941 2005-06-20  Martin Baulig  <martin@ximian.com>
11942
11943         * class.c (mono_class_is_assignable_from): Use a custom version of
11944         mono_class_has_parent() to make things work for generic instances;
11945         fix #75300.
11946
11947 2005-06-20  Martin Baulig  <martin@ximian.com>
11948
11949         * loader.c (method_from_methodspec): Apply a patch from
11950         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
11951
11952 2005-06-20  Martin Baulig  <martin@ximian.com>
11953
11954         * class.c (mono_class_init): Reverted Zoltan's last change; it
11955         breaks generics.
11956
11957 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11958
11959         * threads.c (wait_for_tids_or_state_change): Add missing locking.
11960
11961 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11962
11963         * socket-io.c: fix the index in the socket array for writable/error
11964         sockets. Fixes bug #75306.
11965
11966 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11967
11968         * class.c (mono_class_init): Allow interfaces to have static ctors.
11969
11970 2005-06-17  Martin Baulig  <martin@ximian.com>
11971
11972         * loader.c (method_from_methodspec): Use `context->container' when
11973         parsing the `gmethod->inst'.
11974
11975 2005-06-17  Martin Baulig  <martin@ximian.com>
11976
11977         * class.c (mono_type_get_name_recurse): Don't add the assembly
11978         name for type arguments.
11979
11980 2005-06-15  Martin Baulig  <martin@ximian.com>
11981
11982         * reflection.c (mono_image_get_inflated_method_token): Encode
11983         correct klass; fixes #75260.
11984
11985 2005-06-13 Michal Moskal <malekith@nemerle.org>
11986
11987         * icall.c: Make GetCorrespondingMethod/Constructor take
11988         MonoReflectionMethod method not MonoMethod. Removed
11989         MonoType.GetCorrespondingField, and make
11990         MonoGenericType.GetCorrespondingField take name not
11991         MonoClassField.
11992
11993 2005-06-13  Michal Moskal <malekith@nemerle.org>
11994
11995         * reflection.c (field_encode_signature, encode_locals):
11996          Make sizes of buffers for types larger (for big generic types).
11997          (create_generic_typespec,
11998          mono_reflection_sighelper_get_signature_local,
11999          mono_reflection_sighelper_get_signature_field):
12000          Add asserts for too small buffers.
12001
12002 2005-06-15  Martin Baulig  <martin@ximian.com>
12003
12004         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
12005         if our parent is not a dynamic type.
12006
12007 2005-06-15  Martin Baulig  <martin@ximian.com>
12008
12009         * class-internals.h (MonoTypeNameFormat): New enum.
12010
12011         * class.c
12012         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
12013         (mono_type_get_full_name): Removed.
12014         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
12015         argument instead of the boolean's.
12016
12017         * icall.c (ves_icall_System_MonoType_getFullName):
12018         Added `gboolean assembly_qualified'.    
12019
12020         * reflection.h
12021         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
12022
12023         * reflection.c (mono_reflection_parse_type): Parse the new type
12024         name format.
12025
12026 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12027
12028         * icall.c: no need to convert from utf16 to utf8 and then back again
12029         after the call to GetLogicalDrives.
12030
12031 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12032
12033         * icall.c: frombase64. Fix problems exposed by new tests.
12034
12035 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12036
12037         * icall.c: added internal calls for converting char [] and strings in
12038         base64 into byte [].
12039
12040 2005-06-10  Martin Baulig  <martin@ximian.com>
12041
12042         * class.c (mono_class_create_generic_2): Read the nested classes
12043         from the metadata rather than from `gklass->nested_classes' since
12044         `gklass' might not be initialized yet.
12045
12046 2005-06-09  Duncan Mak  <duncan@novell.com>
12047
12048         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
12049         all public headers. Fixes #74919.
12050
12051 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
12052
12053         * domain.c: The key for proxy_vtable_hash is now a pointer
12054         array. Added new GHashFunc and GCompareFunc functions for this.
12055
12056         * class.h: The list of interfaces in MonoRemoteClass is known in
12057         advance and can't grow (we create a new MonoRemoteClass if needed),
12058         so now the interface array can be allocated together with
12059         MonoRemoteClass.
12060         
12061         * object.c: Added a new method create_remote_class_key.
12062         Fixed mono_remote_class so it does not depend on
12063         mono_upgrade_remote_class.
12064         Removed extend_interface_array.
12065         Added new method clone_remote_class(), which makes a copy of a remote
12066         class and adds a new interface or class to it.
12067         mono_upgrade_remote_class() now creates a new remote class (or gets
12068         it from the cache) if an vtable upgrade is needed. In this way
12069         we make sure that other objects sharing the same remote class
12070         don't get the new vtable with unwanted interfaces.
12071         
12072         * object-internals.h:
12073         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
12074         
12075         * marshal.c: Track changes in mono_upgrade_remote_class().
12076
12077 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
12078         * icall.c: Add runtime methods for obtaining members of inflated
12079         class, which were created from supplied non-inflated members. It
12080         is used in internal Get{Method,Constructor,Field} methods in
12081         System.Type
12082
12083 2005-06-09  Martin Baulig  <martin@ximian.com>
12084
12085         * reflection.c
12086         (mono_reflection_bind_generic_method_parameters): Fix #75169.
12087
12088 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12089         * reflection.c (mono_image_basic_init): Define
12090         Version in MonoDynamicAssembly. 
12091         
12092 2005-06-08  Martin Baulig  <martin@ximian.com>
12093
12094         Fix #75136.
12095
12096         * loader.c
12097         (mono_method_signature_full): New public method; takes a
12098         `MonoGenericContext *'.
12099         (find_method): Use mono_method_signature_full() and pass the
12100         klass'es context to it.
12101
12102         * class.c (mono_class_is_inflated_method): Use
12103         mono_method_signature_full() and pass the context to it.
12104
12105 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
12106
12107         * object.c: add proper locking in mono_remote_class_vtable(),
12108         fixes possible memory corruption.
12109
12110 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
12111
12112         * marshal.c (mono_remoting_marshal_init): set
12113         initialized after initialization.
12114
12115 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
12116
12117         * locales.c : hush.
12118
12119 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
12120
12121         * object.c (extend_interface_array): fix really silly
12122         memory corrupting / comparison bug.
12123
12124 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12125
12126         * reflection.c: Functions added to support the creation
12127         of CustomAttributeData, which includes Attribute data
12128         used by ReflectionOnly methods.
12129
12130         * reflection.h:  mono_reflection_get_custom_attrs_data and
12131          mono_custom_attrs_data_construct added (functions exposed).
12132
12133          * icall.c: Added mono_reflection_get_custom_attrs_data
12134          as icall.
12135         
12136 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
12137
12138         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
12139         lupus's request.
12140
12141 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
12142
12143         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
12144
12145         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
12146         dynamic DllImportAttribute.
12147
12148         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
12149         dynamic DllImportAttribute.
12150
12151         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
12152         Fixes #75162.
12153
12154 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12155
12156         * threads.c: avoid segfault when an unstarted thread is aborted.
12157
12158 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
12159
12160         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
12161         Returns the name and version of the runtime for reporting.
12162
12163 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12164
12165         * appdomain.c: bump corlib version.
12166         * object-internals.h: new field in MonoReflectionAssembly.
12167
12168 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12169
12170         * object-internals.h: Carlos forgot to add this field.
12171
12172 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12173
12174         * icall.c: Added create_version to create instances
12175         of Version of MonoReflectionAssemblyName. This change helps
12176         the AssemblyName tests to keep running fine.
12177         
12178 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
12179   
12180         * object.c (mono_method_return_message_restore): A somehow less
12181         intrusive fix for #75138.
12182
12183 2005-06-03  Raja R Harinath  <rharinath@novell.com>
12184
12185         * object.c (mono_method_return_message_restore): Fix computation
12186         of expected number of out args.
12187
12188 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12189
12190         * reflection.c (mono_image_get_method_info): Fix the case when the
12191         charset is empty.
12192
12193 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
12194
12195         * object.c: Added missing null check in
12196           mono_method_return_message_restore.
12197
12198 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12199
12200         * reflection.c (mono_image_get_method_info): Handle the case when
12201         dllentry is empty.
12202
12203 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
12204
12205         * object.c: When creating the vtable for a proxy, take into account
12206         all inherited interfaces, not only the ones registered in
12207         iclass->interfaces. This fixs bug #74996.
12208         Also, in mono_method_return_message_restore, verify that the array
12209         of out args has the expected lengh.
12210
12211 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12212
12213         * socket-io.c: update the timeout in Poll when the call is interrupte.
12214
12215 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12216
12217         * socket-io.c: support abort/suspend in Select_internal after last
12218         change.
12219
12220 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12221
12222         * threadpool.c: remove warning.
12223
12224 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12225
12226         * icall.c:
12227         * socket-io.[ch]: Select_internal uses poll() now when available, thus
12228         removing the 1024 limit from select(). Runtime part of the fix for
12229         bug #71203.
12230
12231 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12232
12233         * socket-io.c: when resolving the addresses for the same
12234         host returned by gethostname(), get the local IPs from the interface
12235         list. Loopback addresses are discarded if the are interfaces up with
12236         non-loopback ones. Fixes bug #63265.
12237
12238 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
12239
12240         * appdomain.c, verify.c, object-internals.h, reflection.c:
12241         bumped corlib number to 36, and added new extra_flags field
12242         to ReflectionMethodBuilder and friends.  Fixes #75060.
12243
12244 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
12245
12246         * gc.c: register a new weak link only if the object is non-null
12247         (fixes bug#75047).
12248
12249 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12250
12251         * culture-info.h : short time pattern too.
12252
12253 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12254
12255         * culture-info.h : expand long time pattern string length.
12256
12257 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12258
12259         * culture-info-table.h : update (more French date format; #72788).
12260
12261 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
12262
12263         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
12264         the method is static. Fixes #75029.
12265
12266 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
12267
12268         * reflection.c: Update the table_idx field of method builders after
12269         saving the module, since it can change. This is a workaround for
12270         bug #74914. 
12271
12272 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12273
12274         * culture-info-table.h : update (additional French date format).
12275
12276 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
12277
12278         * icall.c (ves_icall_type_Equals): Revert last change.
12279         
12280         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
12281
12282         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
12283
12284 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
12285
12286         * class-internals.h: Added executioncontext_class field to 
12287         MonoDefaults structure.
12288         * domain.c: Cache System.Threading.ExecutionContext class in 
12289         mono_defaults.
12290         * object.c: Capture the ExecutionContext for asynchroneous calls in
12291          mono_async_result_new.
12292         * object-internals.h: Added execution_context and original_context 
12293         fields to MonoAsyncResult. Added execution_context to MonoThread.
12294         * security-manager.c|.h: Added mono_get_context_capture_method to 
12295         return the capture method (if required by the security manager or by
12296         the framework version used).
12297         * threadpool.c: Apply capture (if present) ExecutionContext in 
12298         mono_async_invoke and revert to original context after it completes.
12299
12300 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
12301
12302         * culture-info-table.h : updated (real hacky solution for zh-CHT).
12303
12304 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
12305
12306         * culture-info-table.h : zh-CHT related workaround.
12307
12308 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12309
12310         * marshal.c (emit_marshal_custom): Add some error checking and call the
12311         methods in the ICustomMarshaler interface. Fixes #74875.
12312         
12313         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
12314         native->managed wrappers.
12315
12316 2005-05-12  Martin Baulig  <martin@ximian.com>
12317
12318         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
12319         here and use the loader lock.
12320
12321         * mono-debug.c: Properly lock when the debugger is not attached.
12322         (mono_debug_init): Release the initial lock if we're not running
12323         in the debugger.
12324
12325 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12326
12327         * marshal.c (emit_marshal_custom): Pass through NULL values without
12328         calling the custom marshalling routines.
12329
12330         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
12331         conversion in structures. Fixes #74882.
12332
12333 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
12334
12335         * culture-info-table.h : zh-* cultures were missing.
12336
12337 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
12338
12339         * threads.c: Added a new event background_change_event which is signaled
12340         when a thread changes its background mode.
12341         Moved here several checks previously done in managed code. The checks
12342         require the thread lock, and using the thread lock in managed code
12343         can result in deadlocks.
12344         Merged Start_internal and Thread_internal into a single method. Now 
12345         Thread_internal does all work of creating and starting a thread.
12346         Added icalls for setting and getting the state of the object. Moved from
12347         managed code to avoid locking there.
12348         Added wait_for_tids_or_state_change() which is called instad of
12349         wait_for_tids when waiting for non-backround threads to end. This method
12350         will return if one of the threads ends or the background_change_event
12351         is signaled.
12352         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
12353         the background mode. This method signals the background_change_event
12354         event.
12355         * icall.c:
12356         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
12357         removed Start_internal.
12358         
12359 2005-05-11  Martin Baulig  <martin@ximian.com>
12360
12361         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
12362         to order of some fields to get proper alignment on 64-bit machines.
12363
12364 2005-05-11  Martin Baulig  <martin@ximian.com>
12365
12366         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
12367         changes as they're broken and completely fuck up the debugger.
12368
12369         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
12370
12371 2005-05-10  Martin Baulig  <martin@ximian.com>
12372
12373         * reflection.c (mono_reflection_generic_class_initialize): Don't
12374         call mono_class_setup_parent() here.
12375
12376 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12377
12378         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
12379         send/receive timeout use an integer in milliseconds. We were using a
12380         struct timeval.
12381
12382 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12383
12384         * locales.c:
12385         (internal_get_cultures): reserve the first slot of the array for the
12386         InvariantCulture, which will be filled in managed code.
12387
12388 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
12389
12390         * reflection.c (mono_image_fill_module_table): Initialize the
12391         GENERATION field as well.
12392
12393 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12394
12395         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
12396         Monitor.Enter on the object.
12397
12398 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
12399
12400         * threads.c: Enable the wait for running threads when exiting.
12401         * icall.c: Suspend all threads before exiting.
12402
12403 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
12404
12405         * assembly.c (mono_assembly_load_reference): Fix warning.
12406
12407 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12408
12409         * threadpool.c: changed the default number of threads per cpu. From now
12410         on, the default will be 20 + (5 * number of cpus) instead of 50.
12411
12412 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
12413
12414         * loader.c (mono_method_get_signature_full): Add locking here.
12415
12416 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
12417
12418         * appdomain.c: Moved methods for parsing and freeing assembly
12419         names to assembly.c.
12420         * assembly.c, domain-internals.h: Created public methods for parsing
12421         assembly names. Fixed mono_assembly_load_with_partial_name:
12422         it now finds the best match, taking into account the version,
12423         token and culture specified in the partial name. Also return
12424         the latest version if no version information is specified.
12425
12426 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
12427
12428         * threadpool.c: replace check for SocketAsyncCall class.
12429
12430 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12431
12432         * threadpool-internals.h:
12433         * Makefile.am: added threadpool-internals.h
12434
12435         * threadpool.c: call mono_unhandled_exception on exceptions not handled
12436         that happen in threadpool threads (tested on MS).
12437         (mono_thread_pool_remove_socket): new function that dispatch any pending
12438         AIO call on a socket that is closing. By now only epoll really needs it,
12439         as select/poll wake up when the socket closes.
12440
12441
12442         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
12443
12444 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
12445
12446         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
12447
12448 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
12449
12450         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
12451
12452 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
12453
12454         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
12455         has an abort request, convert it into a suspend request.
12456
12457 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
12458
12459         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
12460         warning for the usage of `UnmanagedFunctionPointerAttribute' which
12461         is not supported yet.
12462
12463 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12464
12465         * image.c: register assemblies loaded from data (bundles) in the loaded
12466         assemblies hash. Fixes bug #74772.
12467
12468 2005-04-29  Martin Baulig  <martin@ximian.com>
12469
12470         * class.c (mono_type_get_name_recurse): Update to the new naming
12471         schema from the latest .NET 2.x beta2.
12472         (mono_class_setup_vtable_general): If we're a generic instance,
12473         copy the vtable from our generic type definition and inflate all
12474         the methods in it.
12475
12476         * loader.c (find_method): Update to the new naming schema from the
12477         latest .NET 2.x beta2.
12478
12479 2005-04-29  Raja R Harinath  <harinath@gmail.com>
12480
12481         * class.c (mono_class_init): Add a mono_loader_unlock to the
12482         #74734 fix.
12483
12484 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
12485
12486         * icall.c (ves_icall_System_Environment_Exit): Remove the 
12487         suspend_all_other_threads () call for the time being, since it can hang.
12488
12489         * threads.c (mono_thread_manage): Similarly, disable the waiting for
12490         the background threads to exit, since it can also hang.
12491
12492         * class.c (mono_class_init): Applied patch from Ankit Jain 
12493         (radical@gmail.com). Avoid pending init errors when a field refers
12494         to a nested class using a typeref. Fixes #74734.
12495
12496         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
12497         this for dynamic modules.
12498
12499 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12500
12501         * threads.c: don't wait for threads that are in the process of aborting
12502         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
12503         and waiting for background threads to finish. This makes xsp and
12504         mod-mono-server exit without random length delays and/or hangs.
12505
12506 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12507
12508         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
12509
12510 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
12511
12512         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
12513         dynamic types to prevent infinite loops. Fixes #74727.
12514
12515         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
12516         ..._is_assignable_to.
12517
12518 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
12519
12520         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
12521
12522 2005-04-25  Martin Baulig  <martin@ximian.com>
12523
12524         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
12525
12526         * domain.c
12527         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
12528
12529         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
12530
12531         * reflection.c (build_compressed_metadata): Set metadata header
12532         version to 2.0.
12533
12534 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
12535
12536         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
12537         number into an integral and a decimal part. Fixes #70473.
12538
12539         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
12540
12541 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
12542
12543         * culture-info-table.h : reflected the latest locale-builder output.
12544
12545 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12546
12547         * threadpool.c: check for SuspendRequested too when deciding if
12548         mono_thread_interruption_checkpoint should be called.
12549
12550 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12551
12552         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
12553         * threads.c: remove interruption_mutex and use Interlocked instead. When
12554         suspending all the threads, wait for all the suspended events at once.
12555         If we're shutting down and get an APC that is going to be queued,
12556         call mono_thread_execute_interruption immediately, as the thread might
12557         be sleeping on a pthread condition or mutex.
12558
12559         * icall.c: call mono_runtime_set_shutting_down before suspending the
12560         threads.
12561
12562         Fixes bug #74693. And now xsp is happier when exiting.
12563
12564 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12565
12566         * loader.c (mono_stack_walk): Fix #74690.
12567
12568 2005-04-22  Martin Baulig  <martin@ximian.com>
12569
12570         * mono-debug.h (MonoDebugMethodJitInfo): Added
12571         `MonoDebugMethodJitInfo *jit'.
12572
12573         * mono-debug.c (mono_debug_read_method): Cache the
12574         MonoDebugMethodJitInfo in `address->jit'.
12575         (mono_debug_free_method_jit_info): New public method.
12576
12577 2005-04-22  Martin Baulig  <martin@ximian.com>
12578
12579         * class.c (mono_class_is_assignable_from): Disallow
12580         type parameter -> interface.
12581
12582 2005-04-21  Dick Porter  <dick@ximian.com>
12583
12584         * threads.c (mono_thread_create): Turn an assertion into an error.
12585
12586 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12587
12588         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
12589         
12590         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
12591         Fix some gcc 4.0 warnings.
12592
12593 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
12594
12595         * file-io.c: fix alt dir separator char on unix systems
12596         and cleanup (fixes bug #71214).
12597
12598 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
12599
12600         * marshal.c: Use CALLVIRT instead of CALL when dispatching
12601         a call to a remote domain, since the method may be an
12602         interface method in the client domain. This fixes bug #74192.
12603
12604 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12605
12606         * threadpool.c: recv/send are now performed before going back to managed
12607         code to save one transition.
12608
12609 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12610
12611         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
12612
12613         * metadata/threadpool.c: removed hack to workaround the bug above.
12614
12615         Fixes bug #74618.
12616
12617 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12618
12619         * reflection.c reflection.h: Fix handling of parameter defaults in
12620         dynamic methods. Also fixes handling of parameter attributes.
12621         Fixes #74609.
12622
12623         * mono-debug.c (mono_debug_close_image): Fix warning.
12624
12625 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12626
12627         * socket-io.h: replaced old unused field with new 'blocking'.
12628         * threadpool.c: restore socket blocking state on windows(tm).
12629
12630 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
12631
12632         * icall.c: don't return the codebase in the AssemblyName[] returned by
12633         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
12634         * object-internals.h: Removed FIXME (fields were presents) and fixed
12635         versioncompat declaration.
12636
12637 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12638
12639         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
12640         not closed, so don't cleanup when it happens.
12641
12642 2005-04-13  Chris Toshok  <toshok@ximian.com>
12643
12644         * mono-debug-debugger.h: change prototype for
12645         mono_debugger_lookup_type.
12646
12647         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
12648         this function, although it should probably be named
12649         mono_debugger_init_type.
12650
12651 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12652
12653         * threadpool.c: fix non-AIO case.
12654
12655 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12656
12657         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
12658         the built-in profiler to measure just JIT compilation times.
12659
12660 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12661
12662         * threadpool.c: the epollfd might be closed by another thread at
12663         any time, so ignore EBADF at treat it as a "we're closing" sign.
12664
12665 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12666
12667         * threadpool.c: release the semaphores with a count equals to the number
12668         of working threads in both IO and regular pools. Fixed typo that messed
12669         up the count of IO pool threads. Don't initialize the pipe handles if
12670         we're using epoll.
12671
12672 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12673
12674         * threadpool.c: some systems don't like a NULL when deleting the socket
12675         from epoll.
12676
12677 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12678
12679         * threadpool.c: fix semaphore allocation.
12680
12681 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12682
12683         * threadpool.c: added epoll() based implementation for asynchronous IO
12684         that is used instead of the default poll() when available.
12685         It can be disabled by setting MONO_DISABLE_AIO.
12686
12687 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12688
12689         * threadpool.c: windows needs 'closesocket' and instead of returning
12690         0 when the stream is closed while in select, it returns -1. Fixes bug
12691         #74573.
12692
12693 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
12694
12695         * class.c (class_compute_field_layout): Fix the regression caused by
12696         the previous try.
12697
12698 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12699
12700         * threadpool.c: separate pool for socket async. IO.
12701         * threadpool.h: mono_max_worker_threads is not a global any more.
12702
12703 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12704
12705         * class.c (class_compute_field_layout): Fix #74549.
12706
12707 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12708
12709         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
12710         use 2 connected sockets instead.
12711
12712 2005-04-08  Miguel de Icaza  <miguel@novell.com>
12713
12714         * mono-config.c: Add new entry point for mkbundle
12715         mono_config_parse_memory. 
12716
12717 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12718
12719         * threadpool.c: removed another unused function.
12720
12721 2005-04-08  Ankit Jain  <radical@corewars.org>
12722
12723         * reflection.c (get_default_param_value_blobs): Add 'types'
12724         parameter to get the types encoded in the constant table.
12725         (mono_param_get_objects): Use the type from the constant table,
12726         not the type of the parameter, when creating default values.
12727         Handle null default values correctly.
12728
12729 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12730
12731         * file-io.c:
12732         * file-io.h:
12733         * threadpool.c:
12734         * threadpool.h:
12735         * icall.c:
12736         * socket-io.c: removed dead code for async IO.
12737
12738 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12739
12740         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
12741
12742         * threadpool.c: intercept socket async. calls and pass them to a thread
12743         that is polling and dispatching the job items to the threadpool as
12744         socket become ready. Fixes bugs #71217, #71933.
12745
12746         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
12747         between char and short/ushort arrays.
12748
12749         * socket-io.c: remove dead code.
12750
12751 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12752
12753         * locales.c,
12754           icall.c : removed InternalToUpper_Comp() and
12755           InternalToLower_Comp().
12756
12757 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12758
12759         * char-conversions.h : The tables were incorrectly generated. Should
12760           be generated against invariant culture.
12761
12762 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12763
12764         * object.c (mono_runtime_invoke_array): Fix return value when 
12765         passing pre-created valuetype objects to ctors.
12766
12767         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
12768         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
12769         Fixes #74338.
12770
12771 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
12772
12773         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
12774         only used with --security and hides the wrong corlib version error.
12775
12776 2005-03-30  Joshua Tauberer  <tauberer@for.net>
12777
12778         * class.c: Changed mono_class_name_from_token so that types
12779         outside of a namespace don't have an initial period.  Improved
12780         the g_warning message used in _mono_class_get when loading
12781         fails.
12782         * assembly.c: In mono_assembly_load_reference, when an assembly
12783         can't be found, "No such file or directory" is misleading and
12784         unhelpful because a few paths were checked for the presence of
12785         the assembly.  When that happens (ENOENT), display a nicer
12786         message indicating the directories that were searched.  In all
12787         cases, the warning is made easier to read for non-hackers.
12788
12789 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12790
12791         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
12792         project/solution.
12793         * appdomain.h|domain.c: Removed inline from functions.
12794         * appdomain.c: Reduced warnings when compiling on windows.
12795         * icall.c: Fixed output_debug declaration to gunichar2*.
12796         * mono-config.c: Reduced warnings when compiling on windows.
12797         * rand.c: Added missing "windows.h". Added missing return value.
12798         * rawbuffer.c: Added missing winsock2.h for windows.
12799         * sysmath.h: Added mono-compiler.h header to allow/ease 
12800         compilation with non-GCC compilers.
12801         * threads.c: Fixed declarations to compile with VS.NET C compiler.
12802         Removed cast warnings.
12803
12804         Adapted from the work of J Lothian (for VC6).
12805
12806 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12807
12808         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
12809         from default_path.
12810
12811 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12812
12813         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
12814         the 2.0 profile.
12815
12816 2005-03-27  Raja R Harinath  <harinath@gmail.com>
12817
12818         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
12819         has to be in $(exec_prefix).  $(prefix) is for arch-independent
12820         stuff, and it would probably use $(prefix)/share rather than
12821         $(prefix)/lib.
12822
12823 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12824
12825         * console-io.c: added 2 includes that might be missing.
12826
12827 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12828
12829         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
12830         profile.
12831
12832         * reflection.c (create_custom_attr): Allocate the params array using
12833         alloca so it gets GC tracking.
12834
12835 2005-03-23  Chris Toshok  <toshok@ximian.com>
12836
12837         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
12838         out some spew.
12839
12840 2005-03-24  Raja R Harinath  <rharinath@novell.com>
12841
12842         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
12843         changes to pick up any changes in prefix, etc.
12844
12845 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12846
12847         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
12848         
12849         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
12850         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
12851
12852 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12853
12854         * class-internals.h object-internals.h class.c reflection.c: Extend the
12855         mono_lookup_dynamic_token () function to return the class of the
12856         token as well. 
12857
12858         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
12859         well. Fixes #73848.
12860
12861 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12862
12863         * security-manager.c: Skip inheritance checks for intra-corlib
12864         class inheritance and method overrides. This skips a lot of checks
12865         and (anyway) permissions cannot work until corlib is loaded.
12866
12867 2005-03-23  Martin Baulig  <martin@ximian.com>
12868
12869         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
12870         MONO_TYPE_GENERICINST.  
12871
12872 2005-03-23  Martin Baulig  <martin@ximian.com>
12873
12874         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
12875
12876 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12877
12878         * class.c: added locking comments to some functions.
12879         Cache the interface offsets arrays (saves about 20 KB
12880         of runtime memory in a typical app).
12881         Reduce the time overhead in mono_class_setup_supertypes ().
12882
12883 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
12884
12885         * icall.c: speedup and fix leaks in GetMethodsByName and
12886         GetPropertiesByName.
12887
12888 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12889
12890         * reflection.c: some locking fixes.
12891
12892 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12893
12894         * metadata.c: added missing break in case statement.
12895
12896 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
12897
12898         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12899         typedbyref return values. Fixes #73941.
12900
12901 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12902
12903         * security-manager.c|h: Added demandunmanaged method and 
12904         suppressunmanagedcodesecurity class to MonoSecurityManager.
12905         Renamed aptc class to allowpartiallytrustedcallers.
12906
12907 2005-03-17  Martin Baulig  <martin@ximian.com>
12908
12909         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
12910
12911 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12912
12913         * file-io.c: disabled file async. IO using aio_*. It uses the
12914         threadpool now. Workaround for bug #73718.
12915
12916 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12917
12918         * assembly.h, mono-config.c: added code to deal with bundled configs
12919         for bundled assemblies.
12920
12921 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
12922
12923         * *.c, private.h: cleanup, removing old private.h header file.
12924
12925 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12926
12927         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
12928         and throw_on_unmappable_char attributes.
12929
12930 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
12931
12932         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
12933         _ProcessName_internal.
12934
12935 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12936
12937         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
12938         #73631.
12939
12940         * icall.c threads.c threads-types.h: Remove slothash icalls as they
12941         are no longer used.
12942
12943 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12944
12945         * object.c (compute_class_bitmap): Add support for generics. Fixes
12946         #73527.
12947
12948 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12949
12950         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
12951
12952 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12953
12954         * filewatcher.c: commented out the code for windows watcher, as we don't
12955         use it (we use the managed implementation instead).
12956
12957 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12958
12959         * object-internals.h (MonoThread): Remove 'unused1' field.
12960
12961         * appdomain.c: Bump corlib version.
12962
12963         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
12964
12965         * reflection.c (mono_reflection_create_runtime_class): Remove the
12966         AssemblyBuilder.Save optimization since it causes too many problems.
12967
12968 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
12969
12970         * exception.c|h: Added mono_get_exception_reflection_type_load to
12971         create a ReflectionTypeLoadException object.
12972         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
12973         to return NULL is a InheritanceDemand fails during reflection. Updated
12974         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
12975         ReflectionTypeLoadException if an InheritanceDemand fails during 
12976         reflection. Added icall mapping for GetLinkDemandSecurity.
12977         * security-manager.c|h: Added ves_icall_System_Security_
12978         SecurityManager_GetLinkDemandSecurity internal call to return the
12979         class and methods permissions set for a LinkDemand. Removed unused
12980         fields in MonoSecurityManager.
12981
12982 2005-03-10  Martin Baulig  <martin@ximian.com>
12983
12984         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
12985         it's a generic instance.
12986
12987 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
12988
12989         * reflection.c (mono_get_object_from_blob): Applied patch from
12990         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
12991
12992         * class.c (mono_class_is_assignable_from): Another try at fixing 
12993         #73469 without breaking anything.
12994
12995 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12996
12997         * class.c: (mono_class_is_assignable_from): Revert the last changes
12998         since they don't work with generics.
12999         
13000         * class.c (mono_class_is_assignable_from): Fix build bustage.
13001
13002         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
13003         the managed IsAssignableFrom method. Fixes #73469.
13004
13005         * reflection.c (mono_reflection_call_is_assignable_from): New helper
13006         function.
13007
13008 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
13009
13010         * object.c (mono_load_remote_field_new): Fix returning uninitialized
13011         memory when the remoting callback does not sets the out arguments.
13012         Fixes #73007.
13013
13014         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
13015         by mistake.
13016
13017         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
13018
13019         * object-internals.h (MonoStackFrame): Sync with managed object layout.
13020
13021         * appdomain.c: Bump corlib version.
13022
13023 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
13024
13025         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
13026         function.
13027
13028         * threads.c (mono_thread_attach): Detect threads which are not started
13029         by the GC pthread wrappers.
13030
13031 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
13032
13033         * icall.c: Added new icall for RNG.
13034         * rand.c|h: Added new icall to open the RNG. This allows to share a 
13035         single handle on Linux to access /dev/urandom and fix #73183.
13036
13037 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
13038
13039         * object.c: setting the new vtable in a transparent proxy object must
13040         not change the GC descriptor.
13041
13042 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13043
13044         * object.c: fixed compilation without GCJ support.
13045         * reflection.c: for runtime-created types ensure klass->has_references
13046         is correct (bug #73215).
13047
13048 2005-03-02  Martin Baulig  <martin@ximian.com>
13049
13050         * class.c (mono_class_is_assignable_from): Make this work if
13051         `oklass' is a generic instance; fixes #72831.
13052
13053 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
13054
13055         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
13056         with hasthis set.
13057         
13058         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
13059
13060         * marshal.c: Reorganize native->managed marshalling code to also use
13061         the emit_marshal_... functions.
13062
13063 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
13064
13065         * object.c: typed allocs have issues with bitmap sizes > 30,
13066         so check for max_set >= 30.
13067
13068 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
13069
13070         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
13071         managed code. Fixes #73012.
13072
13073         * metadata.h (MonoMarshalSpec): Add elem_mult field.
13074
13075         * metadata.c reflection.c: Load/Emit elem_mult as well.
13076         
13077         * metadata.h (MonoMarshalSpec): Add comment.
13078
13079         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
13080
13081         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
13082         num_elem to -1 if not given.
13083
13084         * object-internals.h (MonoReflectionMarshal): Add has_size field.
13085
13086         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
13087         given values.
13088
13089 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
13090
13091         * null-gc.c (mono_gc_free_fixed): Was not compilable.
13092
13093 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
13094
13095         * reflection.c (encode_marshal_blob): Encode param_num field as well.
13096
13097         * object-internals.h (MonoReflectionMarshal): Add param_num field.
13098
13099 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
13100
13101         * object.c: generalized the reference bitmap creation
13102         and added hooks for the new GC.
13103         * class-internals.c: removed the gc_bitmap field from MonoClass.
13104
13105 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13106
13107         * domain.c: help the compiler to produce better code
13108         in mono_jit_info_table_find ().
13109
13110 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13111
13112         * object.c: make all allocations look typed.
13113
13114 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13115
13116         * socket-io.c: load Mono.Posix if it's not loaded already
13117         (fixes bug#73033).
13118
13119 2005-02-24  Martin Baulig  <martin@ximian.com>
13120
13121         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
13122         * reflection.c (dup_type): Likewise.
13123
13124 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
13125
13126         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
13127         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
13128
13129 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13130
13131         * domain.c, threads.c, object-internals.h: make the critical thread
13132         local vars use the fast access mode (even when we're compiled in
13133         a lib). Provide accessors to be used by the jit during codegen.
13134
13135 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13136
13137         * appdomain.c: Changed hook functios behavior to include
13138         support for the reflection only assemblies. Some icalls were changed
13139         to support the mentioned assemblies too. Signatures of static methods
13140         try_assembly_resolve and real_load now have an additional parameter:
13141         refonly.
13142
13143         * assembly.c: General changes to mono_assembly_ methods to support
13144         reflection only api. Functions mono_assembly_open, mono_assembly_load,
13145         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
13146         suffix, to support an additional gbool parameter to specify whether
13147         the assembli is reflection only or not. Created some new hook functions 
13148         to add support for reflection only assemblies. Signatures of static 
13149         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
13150         have now an additional parameter: refonly.
13151
13152         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
13153         indicating whether the assembly is reflection only or not.
13154
13155         * exception.c: Add mono_get_exception_invalid_operation.
13156
13157         * icall.c: Throw an InvalidOperationException when trying to invoke
13158         a property/method/event, or trying to set/get the value of a field.
13159         Also add an icall to retrieve the ref_only flag to the
13160         MonoReflectionAssembly.
13161
13162 2005-02-23  Chris Toshok  <toshok@ximian.com>
13163
13164         Part of fix for #72827.
13165         * mono-debug.c (mono_debug_add_method): add lexical block data to
13166         the info we write.  Kind of a hack at the moment - we copy the
13167         lexical block info from the MonoDebugMethodInfo to the
13168         MonoDebugMethodJitInfo here, before writing it.
13169         (mono_debug_read_method): read the lexical block info.
13170
13171         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
13172
13173         * debug-mono-symfile.h: add lexical block support.
13174
13175         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
13176         support.
13177
13178 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13179
13180         * loader.c (mono_lookup_pinvoke_call): Fix warning.
13181
13182         * object.c (mono_runtime_free_method): Call mono_free_method () and
13183         put the TODOs there.
13184
13185         * loader.c (mono_free_method): Free up most memory allocated for 
13186         dynamic methods.
13187
13188 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13189
13190         * reflection.c: properly flag a Type argument to a
13191         named custom attr value (bug #72248).
13192
13193 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13194
13195         * reflection.c: reduce code duplication in named custom
13196         attribute encoding.
13197
13198 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
13199
13200         * reflection.c: properly encode custom attrs of type object
13201         (bug #72649).
13202
13203 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13204
13205         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
13206
13207 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
13208
13209         * socket-io.c: load System.dll if it's not loaded already
13210         (bug #72850 and #70477).
13211
13212 2005-02-21  Martin Baulig  <martin@ximian.com>
13213
13214         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
13215         generic instances.
13216
13217 2005-02-21  Martin Baulig  <martin@ximian.com>
13218
13219         * reflection.c (mono_image_build_metadata): We also need to
13220         "fixup" the MethodImpl table after we computed the final method
13221         indices.  Call fixup_methodimpl() to do that.
13222         (fixup_methodimpl): New private method.
13223
13224 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13225
13226         * assembly.c: special case mscorlib.dll (bug#72536),
13227         patch from Carlos Alberto Cortez.
13228
13229 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
13230
13231         * threads-types.h threads.c: Fix build bustage.
13232
13233         * threads.c: Use a union for long<->double conversions.
13234
13235         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
13236         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
13237
13238         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
13239         containing the checkpoint call with NOT_TAKEN.
13240         
13241         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
13242         checkpoint before pushing the arguments, so they won't have to be
13243         spilled to stack.
13244
13245 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13246
13247         * domain.c, assembly.c, domain-internals.h: make some data
13248         const and relocation-free.
13249
13250 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
13251
13252         * object.c, appdomain.c, class-internals.h: introduce the
13253         MonoClassRuntimeInfo structure to hold the info needed to
13254         use a class at runtime. Made mono_class_vtable() lock-free
13255         for all the appdomains.
13256
13257 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
13258
13259         * metadata-internals.h, image.c: introduce a per-image mempool to
13260         be used for memory that has the same lifetime as the image.
13261
13262 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
13263
13264         * domain.c: In mono_init_internal(), instead of selecting the first
13265         runtime version supported by an executable, get a list of all
13266         supported versions and select the one for which an mscorlib exists
13267         (since even if the runtime supports a given version, it doesn't mean
13268         that the framework for that version is installed).
13269         Modified get_runtimes_from_exe to support this behavior.
13270         In supported_runtimes, added information about additional system
13271         assembly versions.
13272         
13273         * assembly.c: Added support for more than one system assembly version
13274         per runtime version. Updated the assembly list.
13275         In mono_assembly_remap_version, removed the initial version check,
13276         since we don't know to which version we need to compare until we
13277         get the version set on which the assembly is based.
13278         Moved the code for loading corlib into the new method
13279         mono_assembly_load_corlib(), so it can be used by the initialization
13280         code.
13281         
13282         * domain-internals.h: Updated data structures and added declaration
13283         for mono_assembly_load_corlib.
13284
13285 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13286
13287         * reflection.c (resolve_object): Fix the creation of the signature in 
13288         the SignatureHelper case.
13289
13290         * assembly.c (mono_assembly_remap_version): Fix binary search.
13291         
13292 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
13293  
13294         * class.c: Added inheritance check when a method is overloaded (from a
13295         virtual method or when implementing an interface) and when a class is
13296         inherited. Added functions to set a failure for a class and to 
13297         retreive the exception from a failure.
13298         * class-internals.h: Added fields to MonoClass to keep the exception
13299         information status for inheritance (or other exceptions) to be thrown
13300         later (i.e. not at load time).
13301         * object.c: Throw the inheritance SecurityException when a type is to 
13302         be created with either class or method inheritance violations.
13303         * reflection.c|h: Fix when getting declsec from a class. Removed 
13304         unrequired code for class. Improved sanity in parameter naming.
13305         * security-manager.c|h: Added functions to check for class and method
13306         inheritance.
13307
13308 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13309
13310         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
13311         and has_finalize in dynamic types as well.
13312
13313 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
13314
13315         * culture-info-table.h : fixed currency format for en-GB (and so on).
13316
13317 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
13318
13319         * gc.c: ensure the GC handles never have 0 as a value.
13320
13321 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13322
13323         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
13324         a pointer to a struct to unmanaged code. Fixes #72625.
13325
13326 2005-02-16  Martin Baulig  <martin@ximian.com>
13327
13328         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
13329
13330 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13331
13332         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
13333
13334 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13335
13336         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
13337
13338         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
13339         UnmanagedFunctionPointerAttribute, use it for determining calling convention
13340         etc. Fixes #71471.
13341
13342         * reflection.c (mono_custom_attrs_get_attr): New helper function.
13343
13344         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
13345
13346 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
13347
13348         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
13349         changes to make the current context a field in MonoThread.
13350
13351 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13352
13353         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
13354         the last change.
13355         
13356         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
13357         extracted from mono_marshal_get_native_wrapper.
13358
13359         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
13360         to create wrappers around native functions.
13361
13362         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
13363         delegates for arbitrary function pointers. Fixes #71472.
13364
13365 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13366
13367         * threads.c: cleaned up the code a little.
13368
13369 2005-02-15  Martin Baulig  <martin@ximian.com>
13370
13371         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
13372         the data table.
13373
13374         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
13375         allocate larger chunks if needed.
13376
13377 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13378
13379         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
13380         in by mistake.
13381
13382 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
13383
13384         * domain.c: keep the domains in an array and ensure the domain ids
13385         are kept small, so they can be used as indexes to domain-specific data
13386         with a small memory overhead.
13387
13388 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13389
13390         * icall.c: Handle byref types in Type icalls. Fixes #72544.
13391
13392 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
13393
13394         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
13395
13396 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
13397
13398         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
13399
13400         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
13401         values.
13402
13403         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
13404         
13405 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
13406
13407         * domain-internals.h: add the hashtable here.
13408
13409         * class-internals.h: Remove `info' from MonoMethod
13410
13411         * domain.c: Add a new hashtable, jit_trampoline_hash
13412
13413 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13414
13415         * object.c: don't set the value of static fields
13416         (fixes bug#72494).
13417
13418 2005-02-11  Martin Baulig  <martin@ximian.com>
13419
13420         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
13421         (mono_debug_add_method): Silently ignore the method if it's too big.
13422         (mono_debug_add_type): Likewise.
13423
13424 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
13425
13426         * threads.c, appdomain.c: remove #ifdefs from the code.
13427
13428 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
13429
13430         * metadata-internals.h: Added flags to MonoAssembly to cache the most
13431         common security informations. This allows us to stay in unmanaged code
13432         when doing LinkDemand and it's special cases (except for the first 
13433         time for initialization). The flags a very much used with --security.
13434         * reflection.c|h: Added code to get declarative security attributes 
13435         for LinkDemand and InheritanceDemand. This required to refactor the
13436         existing code for Demand.
13437         * security-manager.c|h: Added new method fields for the special cases
13438         of LinkDemand.
13439
13440 2005-02-10  Martin Baulig  <martin@ximian.com>
13441
13442         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
13443         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
13444
13445 2005-02-10  Martin Baulig  <martin@ximian.com>
13446
13447         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
13448         debugging code; this is almost a complete rewrite.
13449
13450         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
13451
13452 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13453
13454         * domain.c, object.h: expose mono_string_equal () and 
13455         mono_string_hash ().
13456         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
13457         it's implemented in managed code.
13458
13459 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13460
13461         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
13462         lo leak objects between appdomains.
13463
13464 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13465
13466         * assembly.c: old compilers compilation fix from 
13467         robertj@gmx.net (Robert Jordan).
13468
13469 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
13470
13471         * class-internals.h: Little reminder for the future.
13472
13473         * debug-helpers.c: Fix up wrapper_type_names
13474
13475 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13476
13477         * image.c, metadata-internals.h: when loading an image from a file,
13478         mmap all of it and use the same codepaths as when using a
13479         in-memory image: the code is simpler and we use less memory
13480         (both writable and readonly).
13481
13482 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13483
13484         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
13485         API to alloc runtime data structures that need to be tracked by the
13486         GC and contain pointers.
13487         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
13488         make the code more readable and eventually use a different GC.
13489
13490 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
13491
13492         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
13493         for out arguments.
13494         
13495 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
13496
13497         * object.c: In release_type_locks(), don't release the cctor lock
13498         if it has already been released. This fixes a crash in the
13499         thread5 test.
13500
13501 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13502
13503         * gc.c, marshal.c, icall.c: register a delegate for finalization
13504         only when the native function pointer has been allocated for it.
13505
13506 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13507
13508         * object.c: cleaned up some code, allocate objects that are
13509         pointer free with the atomic malloc variant. Allocate memory
13510         for static data from the mempool if it's pointer-free.
13511         Allocate the bounds array at the end of the array data, when needed.
13512         * object-internals.h, object.h: move a private function in a private
13513         header.
13514         * class.c: handle missing case in tracking references in fields.
13515
13516 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13517
13518         * class.c, class-internals.h: keep track if a type has
13519         reference fields in either the instance or static fields.
13520
13521 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
13522
13523         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
13524         and renamed to MonoRuntimeInfo. Added fields to store the expected
13525         framework assembly version. Changed mono_get_framework_version and
13526         mono_get_runtime_version for a single mono_get_runtime_info method.
13527         
13528         * assembly.c: Added method to remap system assembly versions to the
13529         current executing runtime version. Removed old mapping code.
13530         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
13531         
13532         * icall.c, reflection.c: Track api changes.
13533
13534 2005-02-06  Miguel de Icaza  <miguel@novell.com>
13535
13536         * loader.c (method_from_memberref): Improve error reporting,
13537         produce the class name instead of the typeref/typedef index. 
13538
13539 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
13540
13541         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
13542
13543 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13544
13545         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
13546         stdcall and charset name mangling.  Reorganize the code and add
13547         some tracing stuff.
13548
13549 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13550
13551         * monodiet.c: More iters!
13552
13553         * marshal.c: Iter usage.
13554
13555         * icall.c: Iter usage.
13556
13557         * object.c: Use iters.
13558
13559         * debug-helpers.c: More iters
13560
13561 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13562
13563         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
13564         under win32.
13565
13566 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13567
13568         * mono-debug-debugger.c: use iters
13569
13570         * class.c, class-internals.h: mono_class_setup_events is static
13571         now
13572
13573         * All callers: use iters
13574
13575 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13576
13577         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
13578         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
13579
13580 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13581
13582         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
13583
13584         * marshal.h: Add prototypes for ldfld/stfld_remote.
13585
13586         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
13587         this is called during startup.
13588         
13589 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
13590
13591         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
13592         MonoThreadsSync struct private in monitor.c. Changed the way
13593         MonoThreadsSync is allocated so it's faster and there is no
13594         need to keep track of it with a finalizer and it uses less memory.
13595         This also finally allows us to allocate mono objects as ptrfree when
13596         there are no reference fields.
13597
13598 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
13599
13600         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
13601         disappearing link to the GC interface and use them to simplify
13602         the gchandles code.
13603
13604 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13605
13606         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
13607         stfld_remote which call mono_load/store_field_new. This allows methods
13608         calling ldfld/stfld wrappers to be AOTed.
13609
13610         * console-io.c: Include sys/filio.h under solaris.
13611         
13612         * console-io.c: Include curses.h if needed correctly.
13613
13614 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13615         
13616         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
13617         method->klass as well.
13618
13619         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
13620
13621         * class.c (mono_class_init): Switch on lazy initialization of 
13622         methods.
13623
13624         * class.c (mono_class_get_finalizer): Handle the case when the 
13625         finalizer is inherited.
13626
13627 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13628
13629         * console-io.c: <curses.h> is needed by term.h on solaris.
13630
13631 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
13632
13633         * icall.c, class-internals.h, monodiet.c, class.c: Remove
13634         mono_class_setup_properties where possible. Remove this ftn from
13635         the header file, and make it static.
13636
13637 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13638
13639         * loader.c: Add missing setup_... call.
13640
13641         * class.c: Add missing setup_... calls.
13642
13643         * class.c (mono_class_init): Switch on lazy initialization of 
13644         the generic vtable.
13645         
13646         * class.c (mono_class_init): Fix generics broken by the recent changes.
13647
13648         * monodiet.c (handle_type): Add missing setup_... calls.
13649
13650         * class.c: Back out garbage in previous patch.
13651         
13652         * class.c: Add missing setup_... calls.
13653
13654         * class.c (mono_class_get_method_from_name_flags): Avoid calling
13655         mono_class_setup_methods () if possible.
13656
13657         * class-internals.h (MonoClass): Add 'has_cctor' flag.
13658
13659         * class-internals.h (MonoCachedClassInfo): New structure.
13660
13661         * class.c: Initialize properties and events fields of MonoClass lazily.
13662
13663         * class.c: Add infrastructure for lazily initializing the methods and
13664         vtable fields of MonoClass. Not yet used.
13665
13666         * class.c (mono_class_get_finalizer): New helper function.
13667
13668         * class.c: Add infrastructure for loading some class related data from
13669         an AOT file.
13670
13671         * object.c: Add infrastructure for initializing the vtable from data
13672         in the AOT file.
13673
13674         * gc.c (run_finalize): Use mono_class_get_finalizer ().
13675
13676         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
13677         appropriate initialization function before accessing parts of the
13678         MonoClass structure.
13679
13680         * marshal.c: Fix warnings.
13681         
13682         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
13683
13684         * mono-debug-debugger.c (get_exception_message): Use 
13685         mono_class_get_method_from_name_flags ().
13686
13687 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
13688
13689         * reflection.c, appdomain.c: Replace a few manual searches that
13690         Zoltan missed. (Paolo approved this part of my initial patch).
13691
13692 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
13693
13694         * profiler.c: disable recording statistical events at report time.
13695
13696 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13697
13698         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
13699         to byteswap arrays of enum values, too (bug #72080).
13700
13701 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13702
13703         * appdomain.c (set_domain_search_path): Allow this to be called if
13704         domain->setup is not yet set.
13705
13706         * loader.c (mono_method_get_index): New helper function.
13707
13708         * loader.c reflection.c: Use mono_method_get_index ().
13709
13710         * class.c (mono_class_get_method_from_name_flags): New helper method.
13711
13712         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
13713         this.
13714
13715         * class.c (mono_class_get_cctor): New helper method.
13716
13717         * string-icalls.c object.c class.c marshal.c reflection.c: Use
13718         mono_class_get_method () to look up methods.
13719
13720 2005-02-01  Miguel de Icaza  <miguel@novell.com>
13721
13722         * console-io.c: Fix the build, this should work on Windows.
13723
13724 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
13725
13726         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
13727         be set to null to keep things valid
13728
13729 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13730
13731         * icall.c: added Console 2.0 icalls.
13732         * Makefile.am: added console-io.[ch]
13733         * console-io.[ch]: internal calls for Console 2.0 API.
13734
13735 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13736
13737         * class.c: make sure we consider all the interfaces
13738         when calculating max_interface_id (bug found by
13739         Jeroen Frijters running ikvm).
13740
13741 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13742
13743         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
13744         valuetype fields to null.
13745
13746         * object.c (set_value): Ditto. Fixes #71669.    
13747
13748 2005-01-31  Martin Baulig  <martin@ximian.com>
13749
13750         * metadata.c (mono_metadata_has_generic_params): New public
13751         function; checks whether something is a generic method.
13752
13753 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13754
13755         * appdomain.c: fix infinite recursion when adding assemblies.
13756
13757 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13758
13759         * object.c: Fix small typo to return all items for Environment.
13760         GetCommandLineArgs.
13761
13762 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13763
13764         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
13765         reflection.c: more domain and assembly-unload related fixes
13766         and memory leaks plugs.
13767
13768 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13769
13770         * 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.
13771
13772 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13773
13774         * loader.c (mono_method_signature): Make this method lazy
13775         (mono_get_method_from_token): Don't computate the signature here.
13776
13777         Doing this saves quite a bit of memory. I got 90 kb on starting up
13778         monodoc. It should also save some disk reads on startup.
13779
13780         * *: MonoMethod->signature might be NULL now. You *MUST* use
13781         mono_method_signature.
13782
13783 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
13784
13785         * object.c (mono_runtime_get_main_args): Return an array from the
13786         current domain here. Fixes #71938.
13787
13788 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13789
13790         * monitor.c: formatting changes to comply with the
13791         mono coding style and remove #ifdefs from the code.
13792
13793 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13794
13795         * metadata.c, private.h: remove some unneeded data
13796         and use a more compact representation for table schemas.
13797
13798 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13799
13800         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
13801         to get a better distribution in hash tables.
13802         * *.c: use mono_aligned_addr_hash() where appropriate.
13803         * assembly.c: make var static.
13804
13805 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13806
13807         * domain-internals.h: Put MonoJitInfo on a diet.
13808
13809         * domain.c: Fix a warning.
13810
13811 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13812
13813         * gc.c: rework the gc handles code to reuse handles
13814         when freed.
13815
13816 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13817
13818         * domain.c: fixed long standing bug in mono_string_equal() which
13819         was brought to light with the ldstr changes.
13820
13821 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13822
13823         * reflection.c: Remove warning by adding missing include for marshal.h
13824
13825 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13826
13827         * domain.c, object.c: change the ldstr_table to hold
13828         MonoString* as keys: makes the runtime isinterned lookup
13829         faster and simplifies memory management.
13830
13831 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
13832  
13833         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
13834         possible to add imperative security checks before calling the icall.
13835         * reflection.c: Return security attributes on the original MonoMethod
13836         (and not the wrapped one). This fix permissions on icalls.
13837
13838 2005-01-25  Dick Porter  <dick@ximian.com>
13839
13840         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
13841         the check for mktime() support actually test the mktime() return
13842         value.  "Fixes" bug 71682, though the output is still different to
13843         MS.
13844
13845 2005-01-25  Martin Baulig  <martin@ximian.com>
13846
13847         * class.c (mono_class_is_assignable_from): Make this work for
13848         generic instances.
13849
13850 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
13851
13852         * marshal.c (mono_string_utf8_to_builder)
13853         (mono_string_builder_to_utf16): We might not have ownership of the
13854         string. In thise case, we need to create a new buffer.
13855
13856         * object-internals.h (mono_stringbuilder_capacity): sb->str might
13857         be null, in which case, use the default capacity.
13858
13859 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13860
13861         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
13862         GC events to the profiler.
13863
13864 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13865
13866         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
13867         if you don't want the GC to run.
13868
13869 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
13870
13871         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
13872         start providing a GC API and keeping different implementations in
13873         their own file.
13874         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
13875
13876 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13877
13878         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
13879         mmap rather than allocating a huge buffer.
13880         (mono_debug_close_mono_symbol_file): Free the buffer allocated
13881         above.
13882
13883 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13884
13885         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
13886         and CheckExecutionRights.
13887         * reflection.c|h: Keep the index of the declarative security to be 
13888         used, instead of the pointer, when AOT compiler is used. Also add 
13889         class initialization when requesting demands.
13890         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
13891         CheckExecutionRights. Both properties are now FALSE by default, and
13892         unmodifiable, unless the --security option is used.
13893
13894 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13895
13896         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
13897         reflection.c: properly refcount images and assemblies, many leaks fixed.
13898
13899 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13900
13901         * threadpool.c: increase the timeout for threads in the thread pool to
13902         10s.  Fixes bug #67159.
13903
13904 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
13905
13906         * class-internals.h: Sun's compiler insists on explicit
13907         signed on bit fields to handle then correctly.
13908
13909 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
13910
13911         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
13912         Make the size of the array fit only the number of invalid path
13913         chars that we have.
13914
13915         * class.c (_mono_class_get): Improve the error reporting when a
13916         class referenced is not found, to assist debugging. 
13917
13918 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
13919
13920         * threads.c: fix off-by-one error.
13921         * domain.c: free data allocated in the domain.
13922
13923 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13924
13925         * reflection.c (mono_method_body_get_object): Fill out exception info
13926         as well.
13927
13928         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
13929         structure.
13930         
13931 2005-01-19  Martin Baulig  <martin@ximian.com>
13932
13933         * loader.c (mono_get_method_constrained): Make this work again.
13934
13935 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13936
13937         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
13938         guint16 to match the managed side.
13939
13940         * reflection.c (mono_reflection_body_get_object): Fill out local
13941         variables array.
13942
13943         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
13944         as well.
13945
13946         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
13947         'local_var_sig_token'.
13948
13949 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13950
13951         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
13952         System.Drawing.
13953
13954         * reflection.c (mono_method_body_get_object): Handle abstract and
13955         runtime methods.
13956
13957 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
13958
13959         * marshal.c, loader.c, class-internals.h, reflection.c:
13960         store the emthod data for a wrapper in an array instead of a list.
13961
13962 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
13963
13964         * marshal.c: change the code to allocate memory more
13965         conservatively for method wrappers.
13966
13967 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13968
13969         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
13970         fields from MonoClass to the marshal info structure where they belong.
13971
13972 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13973
13974         * class.c, object.c, class-internals.h, marshal.c: rearrange
13975         some fields and tweak some types to lower memory usage.
13976
13977 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
13978
13979         * threads.c (signal_thread_state_change): Handle the case when the
13980         target thread is the current thread.
13981
13982         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
13983
13984         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
13985         emit_ptr_to_object_conv. 
13986
13987         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
13988         marshalling. Fixes #71352.
13989
13990 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13991
13992         * metadata.h, blob.h: move table enum to blob.h so it can be included
13993         in any header.
13994         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
13995         cut the size of MonoImage/MonoDynamicImage.
13996
13997 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
13998
13999         * profiler.c (mono_profiler_install_simple): Fix default arguments.
14000
14001 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14002
14003         * reflection.c, reflection.h, icall.c: add a function to check
14004         if an attribute type is defined for a metadata object.
14005
14006 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
14007
14008         * object-internals.h: Added some needed fields from StringBuilder class.
14009         * marshal.c: Set the maxCapacity when creating a StringBuilder.
14010
14011 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14012
14013         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
14014         threads before shutting down the runtime.
14015
14016         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
14017
14018 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14019
14020         * object-internal.h, threads.c: implement stacksize and 
14021         parameterized thread start functionality (requires
14022         matching corlib). Marked broken code for later removal.
14023
14024 2005-01-12  Martin Baulig  <martin@ximian.com>
14025
14026         * class-internals.h (MonoGenericClass): Moved the `initialized'
14027         flag to MonoDynamicGenericClass, removed `init_pending'.
14028         (MonoGenericInst): Added `is_reference' flag.
14029
14030 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
14031
14032         * reflection.c (mono_image_create_pefile): Only set the pe_offset
14033         inside the MSDOS header. Fixes #71201.
14034
14035         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
14036         gc thread.
14037         (mono_domain_finalize): Ditto.
14038
14039 2005-01-12  Martin Baulig  <martin@ximian.com>
14040
14041         * class.c (mono_get_shared_generic_class): Use the cache for
14042         non-dynamic generic classes.
14043
14044         * class-internals.h (mono_class_create_generic_2): Removed
14045         function prototype, this function is now static inside class.c.
14046
14047         * class.c (mono_class_create_generic_2): Made this static, only
14048         call it from mono_class_init() and mono_class_setup_parent().
14049         (collect_implemented_interfaces_aux): Call mono_class_init() on
14050         the interfaces we collect.
14051         (mono_class_setup_vtable): Call mono_class_init (class->parent).
14052
14053 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14054
14055         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
14056         it a real thread handle.
14057
14058         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
14059         MonoJitExceptionInfo, since each catch clause needs its own variable.
14060         
14061 2005-01-11  Dick Porter  <dick@ximian.com>
14062
14063         * image.c (mono_pe_file_open): New variant on mono_image_open()
14064         that does not set up the CLI metadata; used for FileVersionInfo so
14065         it can get the data for windows binaries too.
14066         
14067         * process.c (process_read_string_block): Don't read off the end of
14068         the StringTable block.
14069
14070         These both fix bug 70766.
14071
14072 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
14073
14074         * gc.c: set some fields to NULL at GC cleanup time.
14075         * threads.c: if we quit the main thread, call exit ().
14076
14077 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
14080
14081 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
14082
14083         * threads.h, threads.c, object.c: added accessor and settor for
14084         main_thread. Handle it specially when exiting from it: wait
14085         for other foreground threads to exit.
14086
14087 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
14088
14089         * process.c, verify.c: remove some bloat.
14090
14091 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
14092
14093         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
14094         the calling convention to cdecl under win32.
14095
14096 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
14097
14098         * object.c (mono_object_get_size): New function to get the size of
14099         an object instance.
14100
14101         * profiler.c (simple_allocation): Use above.
14102
14103 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
14104
14105         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
14106         ves_icall_System_AppDomain_getRootDomain (as it's not required to
14107         get an appdomain by it's id and we can't assume the root's id is 0).
14108         * domain-internals.h: Change the function prototype to match.
14109         * icall.c: Change the icall table for AppDomain.
14110
14111 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
14112
14113         * locales.c (string_invariant_compare_char): Only compute
14114         GUnicodeTypes in the case where we need them.  Test for ordinality
14115         first and return if so.
14116
14117         From the commit:
14118
14119                 /*
14120                  * FIXME: here we must use the information from c1type and c2type
14121                  * to find out the proper collation, even on the InvariantCulture, the
14122                  * sorting is not done by computing the unicode values, but their
14123                  * actual sort order.
14124                  */
14125
14126 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14127
14128         * loader.c: for P/Invoke methods, allow the "Internal" shared
14129         library name to refer to the calling process symbol namespace.
14130
14131 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14132
14133         * Makefile.am: Add the security manager to the build.
14134         * security-manager.c|h: New. Initialization of the security manager.
14135
14136 2005-01-07  Dick Porter  <dick@ximian.com>
14137
14138         * threads.c: 
14139         * monitor.c: Update thread state during Monitor and WaitHandle
14140         waits.  Fixes bug 71031.
14141
14142 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14143
14144         * reflection.c (property_encode_signature): Correctly handle when the
14145         property has no methods.
14146
14147 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14148
14149         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
14150         
14151         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
14152         fields from mb, not rmb. Fixes #71017.
14153
14154         * marshal.c (emit_ptr_to_str_conv): Add support for 
14155         ByValTStr -> string conversion. Fixes #71015.
14156
14157         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
14158
14159         * mempool.c (mono_mempool_contains_addr): New helper function.
14160
14161 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14162
14163         * metadata.c (mono_metadata_compute_size): Fix size calculation of
14164         HasSematics encoded fields.
14165         
14166         * metadata.c (mono_type_to_unmanaged): Improve error message for 
14167         invalid string marshalling.
14168
14169         * metadata.c: Fix warnings.
14170         
14171 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14172
14173         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
14174         profiler support.
14175
14176 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14177
14178         * domain.c object.c domain-internals.h: Revert part of r38077 since the
14179         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
14180         tests.
14181
14182 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14183
14184         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
14185         so methods containing these can be AOTed.
14186
14187 2005-01-03  Martin Baulig  <martin@ximian.com>
14188
14189         * loader.c (find_method): Removed the hack for generic instances.
14190         (method_from_memberref): If our parent is a generic instance, pass
14191         its generic type definition to find_method() and then inflate the
14192         method.
14193         (mono_get_method_constrained): Pass the generic type definition to
14194         find_method() and inflate the method later.
14195
14196         * class-internals.h (MonoStats): Added `generic_class_count'.
14197
14198         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
14199         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
14200
14201         * reflection.c (mono_custom_attrs_from_params): Don't ignore
14202         generic type definitions.
14203
14204 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14205
14206         * loader.c icall.c: Fix warnings.
14207
14208 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
14209
14210         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
14211         blittable types. Fixes #70864.
14212
14213 2004-12-29  Martin Baulig  <martin@ximian.com>
14214
14215         * icall.c
14216         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
14217
14218         * reflection.c (mono_method_get_object): Create a
14219         "System.Reflection.MonoGenericMethod" for inflated methods; don't
14220         call mono_get_inflated_method().
14221
14222         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
14223
14224 2004-12-27  Martin Baulig  <martin@ximian.com>
14225
14226         * class-internals.h (MonoMethod): Added `is_inflated' flag.
14227         (MonoMethodInflated): Added `inflated' field.
14228
14229         * class.c (mono_class_inflate_generic_method): Don't really
14230         inflate the method here; just set the `is_inflated' flag in the
14231         MonoMethod.
14232         (mono_class_get_inflated_method): Actually inflate the method here
14233         if it's not already inflated; we use the MonoMethodInflated's new
14234         `inflated' field as a cache.
14235
14236 2004-12-26  Martin Baulig  <martin@ximian.com>
14237
14238         * class.c
14239         (inflate_generic_class): Moved some code out of inflate_generic_type().
14240         (mono_class_inflate_generic_method): If we're already inflated,
14241         inflate the context and use the declaring method; ie. make sure
14242         the declaring method of an inflated method is always the generic
14243         method definition.
14244         (mono_class_create_from_typedef): Create
14245         `class->generic_container->context->gclass'.
14246
14247 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14248
14249         * metadata-internals.h, marshal.c, reflection.c: More
14250         MonoGHashTable->GHashTable.
14251
14252         * domain-internals.h, class.c: Change MonoGHashTable's into
14253         GHashTables for some cases where no gc stuff is used
14254
14255         All users: update apis
14256
14257 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
14258
14259         * metadata.c (builtin_types): Make this `const'. Makes this get
14260         put into the shareable section.
14261         (mono_metadata_init): Casts to make gcc happy.
14262
14263 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
14264
14265         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
14266
14267 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
14268
14269         * icall.c: Added an internal call to retrieve the position and length
14270         of assembly-level declarative security attributes (RequestMinimum, 
14271         RequestOptional and RequestRefuse). This is used by the Assembly class
14272         to re-create the corresponding permission sets.
14273
14274 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
14275
14276         * marshal.c: fix the stelemref wrapper to be type correct
14277         (and faster).
14278
14279 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14280
14281         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
14282         to do key & 0x7fffffff. Hashtable already does this. It just
14283         results in longer code.
14284
14285 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
14286
14287         * appdomain.c: Bump corlib version.
14288         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
14289         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
14290         * reflection.c|h: Add functions to get declarative security infos
14291         (blob position and length) for assemblies, classes and methods.
14292
14293 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
14294
14295         * reflection.c: sort the constant table (bug #70693).
14296
14297 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
14298
14299         * object-internals.h, threads.c, domain.c: add accessors for
14300         the MonoThread and MonoDomain tls keys.
14301
14302 2004-12-18  Martin Baulig  <martin@ximian.com>
14303
14304         * class.c (inflate_generic_type): If we're inflating a generic
14305         instance, set `ngclass->context->container = context->container';
14306         ie. the container we inflated into.
14307
14308         * metadata.c (mono_metadata_parse_generic_param): Reflect above
14309         inflate_generic_type() changes.
14310
14311 2004-12-17  Martin Baulig  <martin@ximian.com>
14312
14313         * class-internals.h
14314         (MonoGenericClass): Replaced `MonoType *generic_type' with
14315         `MonoClass *generic_class'.  Removed `dynamic_info'; if
14316         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
14317         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
14318
14319 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
14320
14321         * exception.c (mono_exception_from_token): New helper function.
14322
14323 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
14324
14325         * assembly.c (mono_assembly_load_with_partial_name): Call 
14326         mono_assembly_loaded before invoking the preload hooks. Fixes
14327         #70564.
14328
14329         * object-internals.h (MonoThread): Change culture_info and 
14330         ui_culture_info into an array.
14331
14332         * threads.c: Cache culture info objects from more than one appdomain.
14333
14334         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
14335         current UI culture.
14336
14337 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
14338
14339         * threads.h threads.c appdomain.c: Clear the culture_info field of
14340         all threads during unloading if they point to an object in the dying
14341         appdomain.
14342
14343 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
14344
14345         * culture-info.h (TextInfoEntry): New struct
14346         * object-internals.h: sync with managed
14347         * locales.c: fill the `text_info_data' field
14348         * culture-info-tables.h: update
14349
14350 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
14351
14352         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
14353         collector.
14354
14355 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
14356
14357         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
14358         (ves_icall_ModuleBuilder_getMethodToken): Ditto
14359
14360 2004-12-12  Martin Baulig  <martin@ximian.com>
14361
14362         * mono-debug-debugger.c (write_type): If we're an enum and the
14363         builtin types have already been initialized, call mono_class_init().
14364
14365 2004-12-11  Martin Baulig  <martin@ximian.com>
14366
14367         * metadata.c (mono_metadata_load_generic_params): Added
14368         `MonoGenericContainer *parent_container' argument; automatically
14369         compute `container->is_method'; pass the correct owner to
14370         get_constraints().      
14371
14372         * reflection.c (compare_genericparam): Sort the GenericParam table
14373         according to increasing owners. 
14374
14375 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
14376
14377         * profiler.c: allow disabling the default profiler.
14378
14379 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
14380
14381         * decimal.c, icall.c: allow disabling System.Decimal support.
14382
14383 2004-12-09  Marek Safar <marek.safar@seznam.cz>
14384
14385         * reflection.c: Add support for null attribute arguments.
14386
14387 2004-12-09  Martin Baulig  <martin@ximian.com>
14388
14389         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
14390         names to get rid of compiler warnings.
14391
14392 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14393
14394         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
14395         mono_marshal_load_type_info (). Fixes #69625.
14396         (mono_marshal_get_ptr_to_struct): Likewise.
14397
14398 2004-12-08  Martin Baulig  <martin@ximian.com>
14399
14400         * mono-debug.h: Bumped version number to 47.
14401
14402         * mono-debug-debugger.c
14403         (mono_debugger_event_handler, mono_debugger_event): Take two
14404         guint64 arguments insteed of a gpointer and a guint32.  
14405
14406 2004-12-08  Martin Baulig  <martin@ximian.com>
14407
14408         * debug-mono-symfile.h
14409         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
14410         `address' to `native_offset'.
14411
14412 2004-12-08  Martin Baulig  <martin@ximian.com>
14413
14414         * class.c (mono_class_create_from_typespec): Only inflate if we
14415         either have `context->gclass' or `context->gmethod'.
14416
14417 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14418
14419         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
14420
14421         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
14422
14423         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
14424
14425         * reflection.c (mono_assembly_get_object): Remove the workaround put
14426         in for the release.
14427         
14428         * appdomain.c: Use the corlib_internal field from MonoAssembly.
14429
14430         * appdomain.c: Bump corlib version.
14431
14432         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
14433         be visible in other appdomains.
14434
14435 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
14436
14437         * threads.c: Interlocked inc and dec for longs were messed up,
14438         use a KISS based impl for this. Fixes 70234
14439
14440 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
14441
14442         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
14443
14444 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
14445
14446         * icall.c: fix to follow policy not to allow struct
14447         arguments in icalls.
14448
14449 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14450
14451         * process.c: make the patch that handles spaces in file paths work
14452         on mono/windows too.
14453
14454 2004-12-06  Martin Baulig  <martin@ximian.com>
14455
14456         * class.c (mono_class_create_generic): Call
14457         mono_class_setup_supertypes() if we're dynamic.
14458         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
14459
14460 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * object-internals.h: Add new fields to MonoThread.
14463
14464         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14465
14466         * icall.c threads-types.h threads.c: Add new icalls.
14467
14468         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
14469
14470         * object-internals.h (MonoReflectionAssembly): Sync object layout with
14471         managed side.
14472
14473         * appdomain.c: Bump corlib version.
14474
14475         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
14476         internal assemblies. Fixes #69181.
14477
14478 2004-12-05  Martin Baulig  <martin@ximian.com>
14479
14480         * class.c (mono_class_inflate_generic_signature): Make this a
14481         no-op if `context' is NULL or we don't have any type parameters;
14482         also copy `sentinelpos'.        
14483
14484 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
14485
14486         * image.c: Add unbox_wrapper_cache.
14487
14488         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
14489
14490         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
14491         function generator.
14492         
14493         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
14494         Fixes #70173.
14495
14496         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
14497         
14498 2004-12-04  Martin Baulig  <martin@ximian.com>
14499
14500         * loader.c (mono_method_get_signature_full): New public function;
14501         like mono_method_get_signature(), but with an additional
14502         `MonoGenericContext *' argument.
14503
14504         * class.c (mono_class_inflate_generic_signature): Formerly known
14505         as inflate_generic_signature(); make this public.
14506
14507 2004-12-04  Martin Baulig  <martin@ximian.com>
14508
14509         * metadata.c
14510         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
14511         instead of a `MonoGenericContainer *'.  
14512         (mono_metadata_parse_array_full): Likewise.
14513         (mono_metadata_parse_signature_full): Likewise.
14514         (mono_metadata_parse_method_signature_full): Likewise.
14515         (mono_metadata_parse_generic_inst): Likewise.
14516         (mono_metadata_parse_generic_param): Likewise.
14517         (mono_metadata_parse_mh_full): Likewise.
14518         (mono_type_create_from_typespec_full): Likewise.
14519
14520 2004-12-03  Martin Baulig  <martin@ximian.com>
14521
14522         * class-internals.h (MonoGenericContainer): Replaced the
14523         `MonoGenericContext * pointer with a `MonoGenericContext'
14524         structure and made it the first element.
14525
14526 2004-12-03  Martin Baulig  <martin@ximian.com>
14527
14528         * class.c
14529         (inflate_generic_type): Set the `context->container' when creating
14530         a new MonoGenericContext.
14531         (mono_class_inflate_generic_method): Likewise.
14532         (mono_class_create_from_typespec): Just use `context->container'
14533         to get the container.
14534
14535         * loader.c (method_from_methodspec): Set `context->parent' from
14536         `context->container' - and if that's a method container, use its
14537         parent.  Also set the `context->container' when creating a new
14538         MonoGenericContext.
14539         (mono_get_method_from_token): Use just `context->container' to get
14540         the container.
14541
14542         * metadata.c (do_mono_metadata_parse_generic_class): Also set
14543         `gclass->context->container'.
14544
14545         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
14546         the `context->container' when creating a new MonoGenericContext.
14547
14548 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
14549
14550         * reflection.c (compare_genericparam): Sort params with identical
14551         owner by their number. Fixes gen-111 on sparc.
14552
14553 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14554
14555         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
14556         around the domain changes.
14557
14558         * appdomain.c (mono_domain_unload): Handle the case when the thread
14559         calling Unload is itself being aborted during unloading. Fixes #70022.
14560
14561         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
14562
14563         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
14564         checkpoint_func as an icall so it gets a wrapper.
14565         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
14566         in the cross-appdomain wrappers too.
14567
14568         * threads.c (mono_thread_has_appdomain_ref): Make this public.
14569
14570         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
14571
14572         * reflection.c: Fix some memory leaks.
14573         
14574 2004-12-02  Martin Baulig  <martin@ximian.com>
14575
14576         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
14577
14578         * metadata.c (generic_class_cache): New static hashtable.
14579         (mono_metadata_lookup_generic_class): New public method.
14580
14581 2004-12-02  Martin Baulig  <martin@ximian.com>
14582
14583         * class.c (mono_class_create_from_typedef): Call
14584         mono_class_setup_parent() and mono_class_create_mono_type() before
14585         parsing the interfaces.
14586
14587 2004-12-02  Martin Baulig  <martin@ximian.com>
14588
14589         * metadata.c (generic_inst_cache): New static hashtable.
14590         (mono_metadata_lookup_generic_inst): New public function.
14591         (mono_metadata_inflate_generic_inst): New public function.
14592         (mono_metadata_parse_generic_inst): New public function.
14593         (do_mono_metadata_parse_generic_class): Use the new
14594         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
14595         since this'll also use the cache.
14596
14597         * reflection.c (mono_reflection_bind_generic_method_parameters):
14598         Use mono_metadata_lookup_generic_inst() to use the new cache.
14599
14600         * class.c (inflate_mono_type): Use
14601         mono_metadata_inflate_generic_inst() to inflate a generic
14602         instance; this'll also use the new cache.
14603
14604         * loader.c (method_from_methodspec): Use
14605         mono_metadata_parse_generic_inst() and
14606         mono_metadata_inflate_generic_inst() rather than parsing it
14607         manually, so we can use the new cache.
14608
14609 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14610
14611         * threads.c (wait_for_tids): Do not incorrectly free threads when 
14612         the wait times out.
14613
14614 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14615
14616         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
14617         iter->args based on whether parameters are passed in registers (i.e.
14618         MONO_ARCH_REGPARMS is defined)
14619
14620 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
14621
14622         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
14623         the exception message. Fixes #70070.
14624         (method_from_methodspec): Fix warnings.
14625
14626 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14627
14628         * process.c: (complete_path) return the path quoted
14629
14630 2004-12-01  Martin Baulig  <martin@ximian.com>
14631
14632         * class-internals.h (MonoGenericInst): New structure.
14633         (MonoGenericClass): Replaced `type_argc', `type_argv' and
14634         `is_open' with `MonoGenericInst *inst'.
14635         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
14636         `is_open' with `MonoGenericInst *inst'.
14637
14638 2004-11-30  Martin Baulig  <martin@ximian.com>
14639
14640         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
14641
14642         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
14643         to `generic_class_cache'.
14644
14645         * metadata.c
14646         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
14647         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
14648         (mono_generic_inst_is_valuetype): Renamed to
14649         mono_generic_class_is_valuetype().
14650
14651         * class-internals.h
14652         (MonoGenericInst): Renamed to MonoGenericClass.
14653         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
14654         (MonoClass): Renamed `generic_inst' to `generic_class'.
14655         (MonoGenericContext): Renamed `ginst' to `gclass'.
14656
14657         * object-internals.h
14658         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
14659
14660         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
14661         mono_reflection_generic_class_initialize().
14662
14663         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
14664         now known as "System.Reflection.MonoGenericClass".
14665         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
14666
14667 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
14668
14669         * class-internals.h: Added a flag field to MonoClass to cache the
14670         declarative security attributes actions associated with the class.
14671         * domain-internals.h: Added booleans to MonoJitInfo to cache the
14672         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
14673         applicable to the JITted method.
14674         * reflection.c|h: Added functions to extract (as flags) which security
14675         actions are available (declaratively) for a method, class or assembly.
14676         * metadata.c|h: Added functions to search the declarative security
14677         table in the metadata.
14678         
14679 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
14680
14681         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
14682         EXPORTEDTYPES are already in the class name cache, so there is no
14683         need to add extra code here to look at them. Just removes a bit of
14684         cruft.
14685
14686         (ves_icall_System_Environment_get_TickCount): No need for #if
14687         WINDOWS. We already have the code in io-layer.
14688
14689 2004-11-28  Martin Baulig  <martin@ximian.com>
14690
14691         * loader.c
14692         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
14693         Fixes gen-112.cs.
14694
14695 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
14696
14697         * assembly.c (do_mono_assembly_open): Instead of having a
14698         conditional WITH_BUNDLE, incorporate support for bundles here, by
14699         having a global `bundles' variable holding a pointer to the actual
14700         bundles. 
14701
14702         (mono_register_bundled_assemblies): New API call used by the
14703         bundle code. 
14704
14705         See mkbundle.1 for details.
14706         
14707 2004-11-27  Martin Baulig  <martin@ximian.com>
14708
14709         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
14710         the vtable for generic methods.
14711
14712 2004-11-26  Martin Baulig  <martin@ximian.com>
14713
14714         * metadata.c
14715         (mono_metadata_generic_method_hash): New public function.
14716         (mono_metadata_generic_method_equal): Likewise.
14717
14718         * class-internals.h
14719         (MonoGenericContainer): Added `GHashTable *method_hash'.
14720
14721         * reflection.c (ReflectionMethodBuilder): Added
14722         `MonoGenericContainer *generic_container'.
14723         (reflection_methodbuilder_to_mono_method): Don't create a new
14724         MonoGenericContainer each time we're called.
14725         (mono_reflection_bind_generic_method_parameters): Use
14726         `container->method_hash' to cache the results so we don't create a
14727         different method if we're called several times with the same
14728         arguments.
14729
14730         * loader.c (method_from_methodspec): Use the new
14731         `container->method_hash' here, too.
14732
14733 2004-11-26  Martin Baulig  <martin@ximian.com>
14734
14735         * class.c (inflate_generic_signature): Correctly compute
14736         `res->has_type_parameters'.
14737         (mono_class_vtable): Use the `has_type_parameters' flag to
14738         determine whether we're a generic method.
14739
14740         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
14741
14742 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14743
14744         * object.c (mono_runtime_run_main): Fix a small memory leak.
14745
14746 2004-11-25  Martin Baulig  <martin@ximian.com>
14747
14748         * class.c (set_generic_param_owner): Fixed the loop.
14749
14750 2004-11-25  Martin Baulig  <martin@ximian.com>
14751
14752         * object.c (mono_class_vtable): Don't create any JIT wrappers for
14753         generic methods.
14754
14755 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14756
14757         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
14758         names. Fixes #69787.
14759
14760 2004-11-24  Martin Baulig  <martin@ximian.com>
14761
14762         * class.c (mono_class_create_generic_2): If we don't have a
14763         `ginst->parent', inflate `gklass->parent' to get our parent.
14764
14765 2004-11-24  Martin Baulig  <martin@ximian.com>
14766
14767         * reflection.c (compare_genericparam): Correctly sort the
14768         GenericParam table; fixes #69779.
14769
14770 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
14771
14772         * reflection.c: When writing a PE file, don't create a huge
14773         buffer in memory. Just write the arrays we have to the file.
14774         This reduces memory usage.
14775
14776         * metadata-internals.h: MonoDynamicStream pefile is no longer used
14777         globally.
14778
14779 2004-11-17  Martin Baulig  <martin@ximian.com>
14780
14781         * class.c (mono_class_init): Don't setup `class->parent' for
14782         dynamic instances; moved this to mono_class_generic_2().
14783         (mono_class_create_generic): Also set `klass->inited' for dynamic
14784         generic instances.
14785         (mono_class_create_generic_2): Don't do anything for dynamic
14786         generic instances.  Set `klass->parent' here and also call
14787         mono_class_setup_parent() here. 
14788
14789         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
14790         `MonoType *parent' argument; set `ginst->parent' before calling
14791         mono_class_create_generic_2(), so we set the correct parent.
14792
14793 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
14794
14795         * reflection.c: allow getting attributes from ModuleBuilder
14796         (used by ikvm).
14797
14798 2004-11-17  Martin Baulig  <martin@ximian.com>
14799
14800         * class.c (mono_class_create_from_typedef): If a type parameter is
14801         inherited from an outer class, set its owner to that class.
14802
14803 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
14804
14805         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
14806           for (int*) written size. This fixes bug #69592.
14807
14808 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14809
14810         * icall.c: Added IsAuthenticodePresnet internal call.
14811         * image.c|h: New function that check a MonoImage for an Authenticode
14812         signature in the certificate PE data directory.
14813         * security.c|h: New internal call to ask the runtime if an 
14814         Authenticode signature seems referenced in the PE header.
14815
14816 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
14817
14818         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
14819
14820         * reflection.c (mono_image_create_pefile): Free the assembly streams
14821         after writing out the assembly file.
14822
14823         * object.c (mono_runtime_run_main): Fix small memory leak.
14824
14825         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
14826         property access modifiers. Fixes #69389.
14827
14828 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14829
14830         * domain.c, object.c, object-internals.h, domain-internals.h,
14831         object.h, marshal.c: keep dynamic code info per domain.
14832
14833 2004-11-15  Martin Baulig  <martin@ximian.com>
14834
14835         * class.c (mono_type_get_name_recurse): Put type arguments in
14836         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
14837         see bug #68387.
14838
14839 2004-11-15  Martin Baulig  <martin@ximian.com>
14840
14841         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
14842         (mono_class_setup_vtable): When computing `the_cname' for a
14843         generic instance, don't include the namespace since we'd otherwise
14844         add it twice.
14845
14846 2004-11-15  Martin Baulig  <martin@ximian.com>
14847
14848         * class.c (mono_class_create_generic): Changed return type to void.
14849         (mono_class_create_generic_2): New public function; setup
14850         `class->method', `class->field' and `class->interfaces' here
14851         instead of in mono_class_init().
14852
14853         * class.h (mono_class_create_generic): Moved to class-internals.h.
14854
14855 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
14856
14857         * reflection.c (mono_image_create_pefile): take a file HANDLE.
14858         rather than writing to memory, write to this file. Right now,
14859         we are just writting into a buffer, and copying that. However
14860         we can avoid the buffer later.
14861
14862         (mono_dynamic_stream_reset): new function
14863
14864         * icall.c, object-internals.h: update for the above.
14865
14866 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
14867
14868         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
14869         have been using gc'd memory. First it is slower, unlikely
14870         the comment in the source code said, secondly, it increases
14871         our footprint to do it in the gc.
14872
14873         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
14874         the method so that it does not have to copy to managed code.
14875
14876 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14877
14878         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
14879
14880 2004-11-12  Martin Baulig  <martin@localhost>
14881
14882         * reflection.c (mono_image_create_token): Allow generic method
14883         definitions here, since they may appear in an `.override'; see
14884         gen-98/gen-99 for an example.
14885
14886 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
14887
14888         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
14889         #69365.
14890
14891         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
14892         descriptive.
14893
14894 2004-11-11  Martin Baulig  <martin@ximian.com>
14895
14896         * class.c (mono_class_setup_vtable): In an explicit interface
14897         implementation, the method name now includes the arity.
14898
14899 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
14900
14901         * object.c (mono_array_full_copy): Fix warning.
14902
14903 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
14904
14905         * appdomain.c: Removed look_for_method_by_name(). Use the new method
14906         mono_class_get_method_from_name() instead.
14907         
14908         * class-internals.h: Added two new types of wrappers. 
14909         Added MonoRemotingTarget enum. Added new trampoline function type, which
14910         takes an additional MonoRemotingTarget value as parameter, so it is
14911         possible to request a trampoline for a specific target.
14912         
14913         * class.c: Added new mono_class_get_method_from_name() method.
14914         
14915         * class.h: In MonoRemoteClass, we can have now to vtables, one for
14916         general remoting sinks and one specific for cross domain calls.
14917         
14918         * debug-helpers.c: Added new wrapper names.
14919         
14920         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
14921         of a remote class.
14922         
14923         * image.c: Porperly delete value objects form the remoting invoke hashtable.
14924         
14925         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
14926         with several other methods (mono_marshal_get_xappdomain_dispatch,
14927         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
14928         and others) can generate a fast remoting wrapper for cross domain calls.
14929         More information can be found in docs/remoting.
14930         Other changes: Removed mono_find_method_by_name, and used
14931         mono_class_get_method_from_name instead.
14932         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
14933         is stored in the remoting invoke hashtable.
14934         
14935         * marshal.h: published the new method for getting the xdomain wrapper,
14936         and also added a method for getting the adequate wrapper for a given
14937         method and target.
14938         
14939         * object-internals.h, object.c: Added a couple of methods for capying and
14940         cloning arrays.
14941         Modified mono_install_remoting_trampoline, which takes the new remoting
14942         trampoline that has a remoting target as parameter.
14943         mono_class_proxy_vtable now also takes a remoting target as parameter, and
14944         will return the most suitable vtable for the target.
14945         Added mono_remote_class_vtable, which returns the vtable of a remote class
14946         (which can be the normal remoting vtable or the xdomain vtable).
14947         
14948         * threads.c: the xdomain invoke and dispatch wrappers must also be
14949         protected against interruptions.
14950
14951 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14952
14953         * icall.c: use memmove in BlockCopyInternal when the source and
14954         destination arrays are the same.
14955
14956 2004-11-09  Martin Baulig  <martin@ximian.com>
14957
14958         * class-internals.h (MonoGenericContainer): Removed `method' and
14959         `signature', replaced them with `is_method' and `is_signature'
14960         flags.  Added `context'.
14961
14962         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
14963         instead of a `MonoGenericContainer *'.
14964
14965         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
14966         for dynamic type parameters.
14967         (mono_metadata_load_generic_params): Setup `container->context'.
14968
14969         * reflection.c (mono_reflection_setup_generic_class): Setup
14970         `tb->generic_container->context'.
14971         (do_mono_reflection_bind_generic_parameters): Use
14972         mono_class_inflate_generic_type() to correctly inflate types,
14973         rather than using our own hack just for MONO_TYPE_VAR.
14974
14975 2004-11-09  Martin Baulig  <martin@ximian.com>
14976
14977         * class.c (mono_class_inflate_generic_method): Small fix; don't
14978         crash here.
14979
14980         * icall.c
14981         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
14982         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
14983         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
14984         (ves_icall_Type_BindGenericParameters): Likewise.
14985         (ves_icall_Type_get_IsGenericInstance): Likewise.
14986         (ves_icall_Type_GetGenericParameterPosition): Likewise.
14987         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
14988         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
14989         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14990
14991 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14992
14993         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
14994         assembly versions and public key tokens. Fixes #69113.
14995
14996 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
14997
14998         * metadata.c: fix bug introduced with the type cache changes
14999         on 2004-11-06.
15000
15001 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
15002
15003         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
15004         the MonoClass pointer instead of the token in exception clauses.
15005         * reflection.c: updates for the above and make the code not depend
15006         on the structure of MonoExceptionClause.
15007
15008 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15009
15010         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15011         Add support for dynamic assemblies. Fixes #69114.
15012
15013         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
15014
15015 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15016
15017         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
15018         since most only those methods use it. the code member of
15019         MonoMethodPInvoke was dead, so that can be removed too. Also,
15020         remove inline_count (again, not used), and move slot so that it
15021         can share bits with some other flags. This saves 8 bytes in the
15022         structure and gives us about 50 kb back for mcs helloworld.cs
15023
15024         * *.[ch]: Do naming changes for the above.
15025
15026         * loader.c (mono_method_get_header): Lazily init the header
15027         on first access.
15028         (mono_get_method_from_token): don't init the header here
15029         (mono_free_method): the header may never be allocated
15030
15031         Overall, this saves 150 kb of unmanaged allocations
15032         for mcs helloworld.cs. That accounts for 10% of the unmanaged
15033         memory at runtime.
15034         
15035         * loader.c, loader.h (mono_method_get_header): new accessor.
15036
15037         * *.[ch]: use the above method. Prepares us to lazily load
15038         the header.
15039
15040         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
15041         three warnings, which are actual bugs (see 69206).
15042
15043         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
15044         unused. Saves a cool 4 bytes / method.
15045
15046 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
15047
15048         * metadata.c (builtin_types): Add types for System.Object here.
15049         (mono_metadata_parse_type_full): Cache MonoType*'s that are
15050         for a class or valuetype from klass->this_arg or klass->byval_arg.
15051
15052         On mcs for a hello world, this gets us down from 21836 MonoType's
15053         to 14560.
15054
15055         (mono_metadata_free_type): Account for the above change.
15056
15057 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
15058
15059         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
15060         exception instead of asserting if name is null.
15061         (ves_icall_System_AppDomain_GetData): Ditto.
15062
15063 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15064
15065         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
15066         EnumBuilder.
15067
15068         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
15069         Return NULL when the domain does not have entry_assembly set.
15070
15071         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
15072         Add a 'resource_modules' argument.
15073         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
15074
15075         * reflection.c (mono_reflection_create_runtime_class): Move setting
15076         of wastypebuilder here, so mono_get_type_object () returns a MonoType
15077         for enums too.
15078
15079         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
15080         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
15081         Throw an ArgumentNullException if 'ptr' is null.
15082
15083         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
15084         assemblies here. Fixes #69020.
15085
15086 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15087
15088         * reflection.c (build_compressed_metadata): Fix the previous patch for
15089         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
15090         the stack.
15091
15092 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
15093
15094         * assembly.c (mono_assembly_names_equal): Allow a match if one of
15095         the cultures is false. Fixes #69090.
15096
15097         * reflection.c (build_compressed_metadata): Fix invalid memory read 
15098         detected by valgrind.
15099         
15100         * reflection.c (mono_reflection_get_type): Avoid triggering a 
15101         TypeResolve multiple times for the same type. Fixes #65577.
15102
15103 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
15104
15105         * marshal.c: Avoid using ldftn to call managed functions. It is
15106         much slower than just a call.
15107
15108         * reflection.c (mono_module_get_object): free the basename we
15109         allocate here from glib.
15110         
15111         * reflection.c (ensure_runtime_vtable): make sure to free
15112         overrides.  Also, we were allocating an array of MonoMethod not an
15113         array of MonoMethod*.
15114
15115         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
15116
15117         * image.c (mono_image_close): free image->guid here.
15118
15119 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15120
15121         * reflection.c: Fix some spec conformance issues with the PE file
15122         structures so mcs compiled apps run on the Net 2.0 beta.
15123
15124 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
15125
15126         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
15127         Implement this. Fixes #67264.
15128
15129         * debug-helpers.h debug-helpers.c marshal.c: Move 
15130         mono_find_method_by_name to debug-helpers.c.
15131
15132 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
15133
15134         * object.c (mono_release_type_locks): type_initialization_hash is
15135         a GHashTable.
15136
15137         * reflection.c object.c object-internals.h: Fix warnings.
15138
15139         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
15140         without accessors. Fixes #61561.
15141
15142         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
15143         application base from the root domain if not set. Fixes #65641.
15144         (mono_runtime_init): Fix warning.
15145
15146 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15147
15148         * appdomain.c: call mono_thread_pool_init.
15149         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
15150         of worker threads based on the number of CPUs and the environment
15151         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
15152         for non-windows (windows) systems.
15153
15154 2004-10-27  Chris Toshok  <toshok@ximian.com>
15155
15156         * mono-debug-debugger.c (write_class): don't call mono_class_init
15157         here, as even with the check for (!klass->init_pending), we get
15158         into a situation where we're hitting cycles in class
15159         initialization.  Fixes #68816.
15160
15161 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15162
15163         * image.c: Avoid overwriting values in the loaded_images_hash when an
15164         assembly is loaded multiple times. Fixes #61152.
15165
15166         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
15167         so multiple satellite assemblies for the same name can be loaded.
15168         Fixes #68259.
15169
15170         * mono_domain_assembly_preload: Actually return the loaded assembly, 
15171         not NULL.
15172
15173         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
15174         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
15175
15176         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
15177         pending finalizers are not invoked after the appdomain has been 
15178         unloaded. Fixes #67862.
15179
15180 2004-10-22  Martin Baulig  <martin@ximian.com>
15181
15182         * mono-debug-debugger.c
15183         (mono_debugger_runtime_invoke): Don't box valuetypes.
15184
15185 2004-10-22  Chris Toshok  <toshok@ximian.com>
15186
15187         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
15188         don't hide private methods.
15189
15190 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
15191
15192         * icall.c: Allows the runtime to "share" (when known) the public key
15193         token of an assembly. This avoid the need to recalculate the token 
15194         (from the public key) in managed code.
15195
15196 2004-10-21  Chris Toshok  <toshok@ximian.com>
15197
15198         * debug-helpers.c (append_class_name): argh, revert last patch.
15199         
15200 2004-10-21  Chris Toshok  <toshok@ximian.com>
15201
15202         * debug-helpers.c (append_class_name): use '+' as the delimiter,
15203         not '/', so that it matches what the debugger uses to look up
15204         methods.
15205
15206 2004-10-21  Martin Baulig  <martin@ximian.com>
15207
15208         * mono-debug-debugger.c (mono_debugger_throw_exception): New
15209         public method; this is called each time an exception is thrown and
15210         allows the debugger to use exception catch points.
15211
15212 2004-10-21  Martin Baulig  <martin@ximian.com>
15213
15214         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
15215         the stack pointer and the exception object in some struct and pass
15216         that to the debugger.
15217
15218 2004-10-21  Chris Toshok  <toshok@ximian.com>
15219
15220         * mono-debug-debugger.c (do_write_class): add instance/static
15221         event support.  We don't expose "raise" or "other" yet.
15222         (event_is_static): new method.
15223
15224 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
15225
15226         * mono-debug-debugger.c
15227         (mono_debugger_handle_exception): Remove
15228         bogus return value for fussy compilers.
15229
15230 2004-10-20  Martin Baulig  <martin@ximian.com>
15231
15232         * mono-debug-debugger.c
15233         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
15234         (mono_debugger_handled_exception): Likewise.
15235
15236 2004-10-20  Martin Baulig  <martin@ximian.com>
15237
15238         * mono-debug-debugger.h (MonoDebuggerEvent): Added
15239         MONO_DEBUGGER_EVENT_EXCEPTION.
15240
15241         * mono-debug-debugger.c (mono_debugger_handle_exception): New
15242         public function to send the debugger a notification for an
15243         exception and inform it about a catch/finally clause.
15244
15245 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
15246
15247         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
15248         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
15249         fix 2.95 build. 
15250
15251         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
15252
15253 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15254
15255         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
15256         marshalled as [In,Out]. Fixes #58325.
15257
15258 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
15259
15260         * reflection.c (mono_method_body_get_object): Implement some fields.
15261
15262 2004-10-12  Martin Baulig  <martin@ximian.com>
15263
15264         * reflection.c (mono_reflection_bind_generic_parameters): Small
15265         fix, correctly retrieve our parent from a generic instance.
15266
15267 2004-10-12  Martin Baulig  <martin@ximian.com>
15268
15269         * metadata.c (mono_metadata_generic_param_equal): We always have
15270         an owner.
15271
15272         * class.c
15273         (mono_class_from_generic_parameter): We need to have an owner.
15274         (my_mono_class_from_generic_parameter): Likewise.
15275
15276         * reflection.c (mono_reflection_setup_generic_class): Renamed to
15277         mono_reflection_create_generic_class() and added a new
15278         mono_reflection_setup_generic_class().  
15279         (mono_reflection_initialize_generic_param): If we're a nested
15280         generic type and inherited from the containing class, set our
15281         owner to the outer class.
15282
15283 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
15284
15285         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
15286
15287         * reflection.c (mono_method_body_get_object): New function to create
15288         a MethodBody object.
15289
15290         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
15291
15292 2004-10-11  Martin Baulig  <martin@ximian.com>
15293
15294         * metadata.c (_mono_metadata_type_equal): Renamed to
15295         do_mono_metadata_type_equal() and made static.
15296
15297 2004-10-11  Martin Baulig  <martin@ximian.com>
15298
15299         * appdomain.c: Bump corlib version number to 28.
15300
15301 2004-10-10  Martin Baulig  <martin@ximian.com>
15302
15303         * class-internals.h
15304         (MonoGenericInst): Added `MonoGenericContainer *container'.
15305         (MonoGenericMethod): Likewise.
15306         (MonoGenericContext): Likewise.
15307         (MonoGenericParam): Added `MonoGenericContainer *owner'.
15308
15309         * metadata.c
15310         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
15311         (do_mono_metadata_parse_generic_inst): Likewise.
15312         (mono_metadata_parse_type_full): New public method.  This is the actual
15313         mono_metadata_parse_type() implementation - with an additional
15314         `MonoGenericContainer *' argument.
15315         (mono_metadata_parse_array_full): Likewise.
15316         (mono_metadata_parse_signature_full): Likewise.
15317         (mono_metadata_parse_method_signature_full): Likewise.
15318         (mono_metadata_parse_mh_full): Likewise.
15319         (mono_type_create_from_typespec): Likewise.
15320         (mono_metadata_interfaces_from_typedef_full): New public method;
15321         this is similar to the other _full() methods, but we take a
15322         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
15323         (mono_metadata_parse_generic_param): Take an additional
15324         `MonoGenericContainer *' argument and lookup the MonoGenericParam
15325         from that container.
15326         (mono_metadata_generic_param_equal): New static method to compare
15327         two type parameters.
15328         (_mono_metadata_type_equal): New static method; takes an
15329         additional `gboolean signature_only' argument - if true, we don't
15330         compare the owners of generic parameters.
15331         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
15332         with a TRUE argument - do a signature-only comparision.
15333
15334         * loader.c: Use the new _full() methods and pass the
15335         MonoGenericContainer to them.
15336
15337         * object-internals.h (MonoReflectionTypeBuilder): Added
15338         `MonoGenericContainer *generic_container' field.
15339         (MonoReflectionMethodBuilder): Likewise.
15340
15341 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15342
15343         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
15344         case initial images of dynamic assemblies.
15345
15346         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
15347
15348         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
15349
15350         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
15351         length of event->other array.
15352         (typebuilder_setup_events): Ditto.
15353
15354         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
15355         'assembly_by_name' and add an 'assemblies' list.
15356
15357         * assembly.h assembly.c: Add a new search hook for determining whenever
15358         an assembly is already loaded. Use this instead of searching in the
15359         loaded_assemblies list.
15360
15361         * domain.c appdomain.c: Implement the new search hook so loaded 
15362         assemblies are now scoped by appdomain. Fixes #67727.
15363
15364 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
15365
15366         * threads.c (mono_thread_attach): Initialize synch_lock field so
15367         mono_thread_detach works again.
15368
15369         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
15370         'lib' too. Fixes #63130.
15371
15372 2004-10-06  Jackson Harper  <jackson@ximian.com>
15373
15374         * culture-info-tables.h: regenerated.
15375
15376 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
15377
15378         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
15379         implemented by other interfaces in the result. Fixes #65764.
15380         
15381         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15382         Handle unloadable modules without crashing.
15383
15384         * image.c (load_modules): Revert the previous patch since modules must
15385         have a fixed index inside the array.
15386         
15387         * image.c (load_modules): Don't include native modules in the modules
15388         array.
15389
15390 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15391
15392         * reflection.h: Add param_defaults field.
15393
15394         * reflection.c: Add support for parameter defaults in dynamic methods.
15395         Fixes #64595.
15396
15397         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
15398         an empty string when a type has no namespace. Fixes #64230.
15399
15400 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
15401
15402         * tabledefs.h: Added "internal" security actions to support non-CAS
15403         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
15404         Note: they do not seems to be used anymore in 2.0 (new metadata format)
15405
15406 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
15407
15408         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
15409         constructor of abstract class. Fixes #61689.
15410
15411 2004-10-04  Martin Baulig  <martin@ximian.com>
15412
15413         * class-internals.h (MonoGenericContainer): New type.
15414         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
15415         `MonoGenericContainer *generic_container'.
15416         (MonoClass): Replaced `gen_params' and `num_gen_params' with
15417         `MonoGenericContainer *generic_container'.
15418
15419         * metadata.c (mono_metadata_load_generic_params): Return a
15420         `MonoGenericContainer *' instead of a `MonoGenericParam *';
15421         removed the `num' argument.
15422
15423 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
15426         for dynamic images.
15427
15428         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
15429         machine fields.
15430
15431         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
15432
15433         * reflection.c: Save pe_kind and machine values into the generated
15434         image file.
15435
15436         * appdomain.c: Bump corlib version number.
15437
15438         * object-internals.h: Reorganize layout of LocalBuilder.
15439
15440         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
15441         New helper function.
15442
15443         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
15444         created MonoType for dynamic types. Fixes #66180.
15445
15446 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
15447
15448         * threadpool.c: the ares hashtable needs a critical section around it.
15449         this prevents some nasty segfaults
15450
15451 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15452
15453         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
15454         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
15455         bug 67324).
15456         
15457 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
15460         
15461 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15462
15463         * image.c: Always canonicalize image file names, to avoid loading
15464         the same assembly twice when referenced using a relative path.
15465
15466 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15467
15468         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
15469
15470         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
15471
15472         * marshal.c: Fix warnings.
15473
15474 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
15475
15476         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
15477         attempting to marshal the delegate_trampoline as the method_addr.
15478         This patch has a static hashtable of marshalled delegates so that 
15479         we can map delegate_trampoline addresses back to delegates.  This
15480         allows a delegate passed to managed code to be passed back into native
15481         code.  Fixes #67039
15482
15483 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
15486
15487         * reflection.c (method_encode_code): Align method headers properly.
15488         Fixes #66025.
15489
15490 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15491
15492         * marshal.c: In the runtime invoke wrapper, reset the abort
15493         exception if it is cached. This avoids the automatic rethrowal of 
15494         the exception after the catch of the wrapper. Also check for pending
15495         interruptions before calling the managed method. This is done using
15496         the new method emit_thread_force_interrupt_checkpoint, since the
15497         normal checkpoint method is ignored when running the invoke wrapper.
15498         * object.c: If the abort exception is rethrown, set the abort_exc
15499         field of the thread, so it will be rethrown aftere every catch.
15500         * threadpool.c: Only run an interruption checkpoint if what has been
15501         requested is a stop of the thread (aborts will be ignored).
15502         * threads.c: By default, a thread will now never be interrumped while
15503         running the runtime invoke wrapper (this ensures that runtime_invoke
15504         will always return to the caller if an exception pointer is provided).
15505         There is a new special method mono_thread_force_interruption_checkpoint()
15506         to force an interruption checkpoint even if running a protected
15507         wrapper, which is used by the same runtime invoke wrapper to do a check
15508         at a safe point.
15509
15510 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15511
15512         * object.c, object-internals.h: Implemented mono_release_type_locks,
15513         which releases the cctor locks held by a thread.
15514         * threads.c, threads.h: In thread_cleanup, release cctor locks held
15515         by a thread. Added mono_thread_exit() method to be used to safely stop
15516         a thread.
15517
15518 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15519
15520         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15521         Move null check before dereference.  Avoid indexing beyond the end
15522         of the 'modules' array.
15523
15524 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15525
15526         * metadata-internals.h (MonoImage): Add module_count field.
15527         * image.c (load_modules): Set image->module_count.
15528         (mono_image_load_file_for_image): Use image->module_count.
15529         * reflection.c (mono_image_load_module): Append to image->modules array 
15530         of dynamic assembly.
15531         (mono_module_get_object): Fix loop to actually increment index.
15532         Use image->module_count.
15533         * assembly.c (mono_assembly_load_references): Use image->module_count.
15534         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
15535         Likewise.
15536
15537 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15538
15539         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
15540         Avoid assert on generic types.
15541
15542 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
15543
15544         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
15545
15546         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
15547
15548         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
15549         function to convert a MarshalSpec structure to its managed counterpart.
15550
15551         * reflection.c: Fix warnings.
15552         
15553         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
15554         field.
15555
15556         * icall.c (mono_create_icall_signature): Fix build.
15557
15558 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15559
15560         * icall.c: Add MakePointType icall.
15561
15562         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
15563         warnings.
15564
15565 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15566
15567         * threadpool.c: reuse allocated slots in the queue.
15568
15569 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15570
15571         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
15572
15573         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
15574
15575         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
15576         previous change.
15577
15578         * tabledefs.h: Add constants for pinvoke attributes BestFit and
15579         ThrowOnUnmappableChar.
15580
15581         * icall.c (ves_icall_Type_GetPacking): New icall.
15582
15583 2004-09-24  Martin Baulig  <martin@ximian.com>
15584
15585         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
15586
15587 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15588
15589         * appdomain.c:
15590         (mono_domain_set): allow setting a domain that is being unloaded.
15591         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
15592         being unloaded.
15593
15594 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
15597         the GetCustomAttributes icall.
15598
15599 2004-09-23  Martin Baulig  <martin@ximian.com>
15600
15601         * object-internals.h (MonoReflectionGenericParam): Replaced
15602         'has_ctor_constraint', `has_reference_type' and `has_value_type'
15603         with `guint32 attrs'.
15604
15605 2004-09-23  Martin Baulig  <martin@ximian.com>
15606
15607         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
15608
15609 2004-09-23  Martin Baulig  <martin@ximian.com>
15610
15611         * object-internals.h (GenericParameterAttributes): New enum.
15612
15613 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15614
15615         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
15616         
15617         * class.c (init_events): Fill out event->other field.
15618
15619         * class.c: Fix warnings.
15620
15621         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
15622
15623 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15624
15625         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
15626         walk which doesn't supply the IL offset.
15627
15628 2004-09-22  Martin Baulig  <martin@ximian.com>
15629
15630         * reflection.c (mono_reflection_setup_internal_class): If we're
15631         System.ValueType, System.Object or System.Enum, set
15632         `klass->instance_size' and create the vtable.
15633         (mono_reflection_create_internal_class): If we're an enum type,
15634         get the base class from our current corlib.
15635
15636 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
15637
15638         * reflection.h (MonoResolveTokenError): New type.
15639
15640         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
15641         icall.
15642
15643         * icall.c: Add an 'error' argument to the ResolveToken icalls.
15644
15645 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
15646
15647         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
15648         Support also calling constructors, but only for already allocated objects.
15649
15650 2004-09-17  Geoff Norton <gnorton@customerdna.com>
15651
15652         * reflection.c (type_get_qualified_name): If the klass is null
15653         return the typename to avoid a NullRefEx.
15654         (encode_cattr_value): Get the qualified name of the boxed type,
15655         not the underlying enumtype.  Fixes #62984.
15656
15657 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
15658
15659         * marshal.c: Fix problems with previous checkin.
15660
15661 2004-09-21    <vargaz@freemail.hu>
15662
15663         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
15664         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
15665
15666         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
15667
15668 2004-09-21  Geoff Norton <gnorton@customerdna.com>
15669
15670         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
15671         should only return a type for pointers, arrays, and passbyref types.
15672         Fixes bug #63841.
15673
15674 2004-09-21  Martin Baulig  <martin@ximian.com>
15675
15676         * domain.c (mono_debugger_check_runtime_version): New public
15677         function.
15678
15679         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
15680
15681 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
15682
15683         * reflection.c: Added missing sort to the declarative security 
15684         attributes table. MS implementation stops seeing the attributes if the
15685         token number regress in the table (as shown by ildasm and permview).
15686
15687 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
15688
15689         * object-internals.h (MonoReflectionModule): Add 'token' field.
15690         
15691         * reflection.c (mono_reflection_get_token): Add support for Module
15692         and Assembly.
15693         (mono_module_get_object): Set 'token' field.
15694         (mono_module_file_get_object): Set 'token' field.
15695
15696         * icall.c: Add new Assembly and Module icalls.
15697
15698         * appdomain.c: Bump corlib version.
15699
15700 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
15701
15702         * loader.h loader.c class.h class.c: Add helper functions for obtaining
15703         tokens of metadata objects.
15704
15705         * reflection.h reflection.c (mono_reflection_get_token): New function
15706         to obtain the token of a metadata object.
15707
15708         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
15709
15710 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15711
15712         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
15713         
15714         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
15715
15716 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
15717
15718         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
15719         * object-internals.h: Added 3 MonoArray* members to MonoReflection
15720         AssemblyBuilder to access the permissions set in the class lib.
15721         * reflection.c: Added security attributes encoding step in 
15722         mono_image_build_metadata.
15723         * tabledefs.h: Added new security actions defined in 2.0:
15724         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
15725
15726 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15727
15728         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
15729         macro parameter.
15730
15731 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15732  
15733         * locales.c: nullify the ICU_collator member of CompareInfo when it is
15734           finalized. There where random SIGSEVs at program termination, when
15735           an object being finalized was trying to do a string comparison and
15736           the current culture was already finalized.
15737  
15738 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15739
15740         * threads.c: call thread_cleanup before finishing the thread if we get
15741         there.
15742
15743 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
15744
15745         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
15746         assemblies from the parent. Fixes #65665.
15747
15748 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
15749
15750         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
15751         modifiers.
15752
15753 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
15754
15755         * reflection.h: add prototype for mono_get_dbnull_object
15756         * reflection.c: add prototypes for get_default_param_value_blobs 
15757         and mono_get_object_from_blob for fussier compilers
15758
15759 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
15760  
15761         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
15762         false deadlock checks in class initialization.
15763  
15764 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * image.c (mono_image_addref): Fix comment.
15767
15768         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
15769         possible.
15770
15771 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
15772
15773         * reflection.c (mono_param_get_objects): Modified to return
15774         ParameterInfo.DefaultValue object.
15775
15776         (get_default_param_value_blobs):
15777         (mono_get_object_from_blob):
15778         (mono_get_dbnull_object): New helper routines. 
15779
15780         * object.c (mono_get_constant_value_from_blob): New helper routine
15781         carved out from get_default_field_value ()
15782
15783         * object-internals.h (mono_get_constant_value_from_blob): Added
15784         function declaration.
15785
15786 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15787
15788         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
15789         referenced assemblies. Fixes #62135.
15790
15791         * exception.h exception.c (mono_get_exception_file_not_found2): New
15792         helper function.
15793
15794 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15795
15796         * class.h class.c: Add mono_type_get_underlying_type ().
15797
15798 2004-09-09  Geoff Norton <gnorton@customerndna.com>
15799
15800         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
15801         Fix GetTypes() to support dynamically created assemblies.
15802
15803 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
15804
15805         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
15806         
15807         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
15808         previous patch.
15809
15810         * reflection.h reflection.c loader.c: Allow dynamic construction of
15811         pinvoke methods. Fixes #65571.
15812         
15813         * reflection.c (mono_reflection_get_type): Revert previous change since
15814         it causes regressions.
15815
15816 2004-09-08  Martin Baulig  <martin@ximian.com>
15817
15818         * class.c (class_compute_field_layout): Don't call
15819         mono_class_layout_fields() for open generic instances.
15820
15821 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
15822         * threads.c appdomain.c: fix typo in GC macro
15823
15824 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15825
15826         * threads.c: don't call mono_thread_detach() in start_wrapper(),
15827         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
15828
15829 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * image.c (mono_image_close): Applied patch from 
15832         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
15833         assembly is loaded multiple times from data.
15834         
15835         * image.c (mono_image_open): Fix warning.
15836
15837 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15838
15839         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
15840         once. Fixes #58334.
15841         
15842         * reflection.c (mono_reflection_create_runtime_class): Initialize
15843         klass->nested_classes. Fixes #61224.
15844
15845 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15846
15847         * threads.c: sched_yield() on exit, to allow threads to quit.
15848
15849 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15850
15851         * object.c (mono_unhandled_exception): Remove leftover debug code.
15852
15853 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
15854
15855         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
15856
15857 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15858
15859         * marshal.c (emit_marshal_array): Really null terminate string arrays.
15860         
15861         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
15862
15863 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15864
15865         * marshal.c (emit_marshal_array): Null terminate string arrays.
15866         
15867         * marshal.c (raise_auto_layout_exception): Fix warning.
15868
15869         * reflection.c (mono_param_get_objects): Initialize the default value
15870         with DBNull.Value, not null. Fixes #62123.
15871
15872 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
15873
15874         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
15875         throw an exception with a cute explanation.
15876
15877 2004-09-06  Dick Porter  <dick@ximian.com>
15878
15879         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
15880         Close the new process's thread handle, as we don't use it.  The
15881         handle stays around forever otherwise.
15882
15883 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15884
15885         * object.c (arith_overflow): Fix warning.
15886
15887         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
15888         calling conventions in method refs. Fixes #65352.
15889
15890         * reflection.c: Fix warnings.
15891
15892 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15893
15894         * icall.c: Add a new icall for Array.Clear
15895
15896 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15897
15898         * object.c: When allocating an array, we have to throw
15899         an overflow exception if any of the lengths are < 0.
15900
15901 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15902
15903         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
15904         properly. Also move implementation of string array marshalling to 
15905         managed code. Fixes #42316.
15906
15907 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15908
15909         * assembly.c: provide more information when loading an assembly fails.
15910
15911 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15912
15913         * filewatcher.c: don't expect the development fam package to be
15914         installed.
15915
15916 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
15917
15918         * marshal.c: Make a copy of the signature cookie since it will be
15919         freed by the caller.
15920         
15921         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
15922
15923         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
15924
15925         * metadata.c (mono_metadata_free_marshal_spec): New function to free
15926         marshal specs.
15927
15928         * marshal.c: More refactoring.
15929         
15930         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
15931         smaller functions.
15932
15933 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
15934
15935         * object.c: In mono_message_invoke, fill the output parameter array after
15936           calling the managed method (it was done before the call). This fixes
15937           bug #59299.
15938
15939 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
15942         as well.
15943
15944 2004-09-02  Martin Baulig  <martin@ximian.com>
15945
15946         * class.c (mono_class_instance_size): Don't allow generic type
15947         definitions or open generic instances.
15948         (mono_class_array_element_size): If we're a value type, call
15949         mono_class_instance_size() on the original class.
15950
15951         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
15952         handle generic instances.
15953
15954         * mono-debug-debugger.c (write_type): Handle generic instances
15955         like classes.
15956
15957 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
15960         the allocation request fails. Fixes #65089.
15961
15962         * object.c (mono_runtime_free_method): Do not call mono_free_method.
15963         
15964         * object.c (mono_runtime_free_method): New function to free a dynamic
15965         method.
15966
15967         * marshal.c (mono_delegate_free_ftnptr): New function to free the
15968         delegate trampoline.
15969
15970         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
15971         with hasthis as dynamic,
15972
15973         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
15974
15975         * domain.c (mono_jit_info_table_remove): New function to remove an
15976         entry from the jit info table.
15977
15978         * class-internals.h (MonoMethod): Add 'dynamic' field.
15979
15980         * loader.c: Fix warnings.
15981
15982 2004-09-01  Martin Baulig  <martin@ximian.com>
15983
15984         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
15985         instead of mono_debugger_lock() because the latter one is a no-op
15986         unless running in the debugger.
15987
15988 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * class.c (class_compute_field_layout): Classes with auto-layout or
15991         reference fields are not blittable.
15992         
15993 2004-09-01  Dick Porter  <dick@ximian.com>
15994
15995         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
15996         mono_image_get_filename() to get the assembly location.
15997
15998         * icall.c:
15999         * metadata.h: Fix compile warnings
16000
16001 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
16002
16003         * class.c (class_compute_field_layout): System.Object is blittable.
16004
16005         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
16006         as in/out. Fixes #59909.
16007
16008 2004-09-01  Martin Baulig  <martin@ximian.com>
16009
16010         * metadata.h (MONO_TYPE_ISREFERENCE): Call
16011         mono_metadata_generic_inst_is_valuetype() if we're a generic
16012         instance to check whether our underlying type is a reference type.
16013
16014 2004-09-01  Martin Baulig  <martin@ximian.com>
16015
16016         * metadata.c (mono_type_size): If we're a generic instance, call
16017         mono_class_value_size() for value types.
16018
16019 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
16020
16021         * marshal.c: Implement more custom marshalling functionality. Fixes
16022         #64915.
16023
16024 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16025
16026         * mono-debug.c, debug-mono-symfile.c: add some locking love.
16027
16028 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16029
16030         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
16031
16032         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
16033
16034         * icall.c: Fix some warnings.
16035
16036         * threads.c (abort_appdomain_thread): Fix unref errors.
16037         (mono_thread_current): Fix THREAD_DEBUG define.
16038
16039 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16040
16041         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
16042
16043         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
16044
16045 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
16046
16047         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
16048         string arrays.
16049
16050 2004-08-28  Martin Baulig  <martin@ximian.com>
16051
16052         * metadata.c
16053         (mono_metadata_generic_inst_is_valuetype): New public function.
16054
16055         * metadata.h (MONO_TYPE_ISSTRUCT): Call
16056         mono_metadata_generic_inst_is_valuetype() if we're a generic
16057         instance to check whether our underlying type is a valuetype.
16058
16059 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16060
16061         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
16062         #63768.
16063
16064 2004-08-25  Martin Baulig  <martin@ximian.com>
16065
16066         * loader.c (mono_get_method_from_token): Abstract methods can also
16067         be generic and thus have type parameters.
16068
16069         * metadata-internals.h
16070         (MonoDynamicImage): Added `GPtrArray *gen_params'.
16071
16072         * reflection.c (mono_image_get_generic_param_info): Don't create a
16073         metadata row, just add an entry to the `gen_params' array.
16074         (build_compressed_metadata): Sort the `gen_params' array and then
16075         actually create the metadata.
16076
16077 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16078
16079         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
16080
16081 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16082
16083         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
16084
16085 2004-08-24  Martin Baulig  <martin@ximian.com>
16086
16087         * class.cs (mono_class_is_subclass_of): Like an interface, a
16088         generic instance also derives from System.Object.
16089
16090 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16091
16092         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
16093         custom modifiers to be in any order. Fixes #61990.
16094
16095 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16096
16097         * object.c: Register mono_object_new_fast icall.
16098         
16099         * object.c (mono_class_get_allocation_ftn): Return to calling
16100         mono_object_new_fast, since it seems faster to compute the object 
16101         size in unmanaged code than passing it as a parameter.
16102
16103         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
16104
16105         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
16106         this function with Boehm as the oom handler, so we don't have to check
16107         the result of GC_malloc.
16108
16109         * object.c: Remove checks for oom.
16110
16111         * object.h object.c (mono_class_get_allocation_ftn): New function to
16112         return the icall which can be used to allocate an instance of a given
16113         class. 
16114
16115         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
16116
16117         * class-internals.h: Add 'enabled' field.
16118
16119 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
16122
16123 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
16124         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
16125         value 0x0010.
16126
16127 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16128
16129         * appdomain.c: use the Tls function for appdomain too,
16130         at Zoltan's request. Actually return in mono_context_get
16131
16132         * appdomain.c, profiler.c, threads.c: use __thread
16133
16134 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * appdomain.c threads.c: Call GC_CreateThread on windows.
16137
16138         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
16139         multiple libraries since this don't work on windows.
16140
16141 2004-08-18  Martin Baulig  <martin@ximian.com>
16142
16143         * class-internals.h
16144         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
16145         MonoMethodHeader.
16146
16147         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
16148         MonoMethodNormal since we also need it for abstract and interface
16149         methods.
16150
16151         * reflection.c
16152         (build_compressed_metadata): Sort the GenericParam table.
16153         (mono_image_create_token): Added `gboolean create_methodspec'
16154         argument; this is false when generating a MethodImpl token.
16155         (reflection_methodbuilder_to_mono_method): Abstract and interface
16156         methods may also have generic parameters.
16157
16158 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16159
16160         * appdomain.c: thread local alloc
16161
16162 2004-08-17  Martin Baulig  <martin@ximian.com>
16163
16164         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
16165
16166         * icall.c
16167         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
16168         argument.
16169
16170         * class.c (mono_type_get_full_name): New public function.
16171         (mono_type_get_name): Don't include the type arguments.
16172
16173 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16174
16175         * Makefile.am: Build static versions of libmetadata and libmonoruntime
16176         for inclusion into the mono executable.
16177
16178 2004-08-16  Martin Baulig  <martin@ximian.com>
16179
16180         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
16181         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
16182
16183 2004-08-14  Martin Baulig  <martin@ximian.com>
16184
16185         * class.c (dup_type): Also copy the `byref' field.
16186
16187 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * reflection.c (create_dynamic_mono_image): Revert the last change 
16190         since it breaks bootstrap.
16191
16192 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16193
16194         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
16195
16196         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
16197         not free them with g_free.
16198
16199 2004-08-11  Martin Baulig  <martin@ximian.com>
16200
16201         * reflection.c (mono_reflection_setup_internal_class): Also call
16202         mono_class_setup_mono_type() if we already have a `tb->type.type'.
16203
16204 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
16205
16206         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
16207         called during default (first) AppDomain creation. Keep track of
16208         Evidence when loading assemblies.
16209
16210 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16211
16212         * opcodes.c, opcodes.h: reduce runtime relocations.
16213
16214 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16215
16216         * culture-info.h, locales.c: fixes and chages to sue the new
16217         optimized format of the locale data.
16218         * culture-info-tables.h: regenerated.
16219
16220 2004-08-06  Geoff Norton <gnorton@customerdna.com>
16221         
16222         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
16223
16224 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
16225
16226         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
16227         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
16228         * domain-internals.h: icall declaration.
16229         * icall.c: icall registration.
16230         * object-internals.h: New fields in MonoAssembly for CAS.
16231
16232 2004-08-05  Duncan Mak  <duncan@ximian.com>
16233
16234         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16235         CEE_LDELEM_ANY.
16236
16237 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16238
16239         * reflection.c: fix to deal with object[] arrays in custom ctors
16240         (bug #62550).
16241
16242 2004-08-05  Martin Baulig  <martin@ximian.com>
16243
16244         * class.c (mono_class_array_element_size): Added support for
16245         generic instances and correctly handle "recursive" types.
16246
16247 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16248
16249         * assembly.c: Fix warnings.
16250
16251 2004-08-04  Martin Baulig  <martin@ximian.com>
16252
16253         * class.c
16254         (mono_type_get_name_recurse): Added `gboolean include_arity'
16255         argument specifying whether or not we should include the generic
16256         arity in the type name.
16257         (_mono_type_get_name): New static function.
16258         (mono_class_setup_vtable): If we're a generic instance, don't
16259         include the generic arity in the names of explicit method
16260         implementations.        
16261
16262 2004-08-03  Martin Baulig  <martin@ximian.com>
16263
16264         * class.c (mono_type_get_name_recurse): Enclose the generic type
16265         arguments in `<', '>'.
16266
16267 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16268
16269         * gc.c: make GC warning messages use the trace API, they are just
16270         noise to most of the users.
16271
16272 2004-08-03  Martin Baulig  <martin@ximian.com>
16273
16274         * debug-mono-symfile.c (read_string): Correctly read the string.
16275
16276 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16277
16278         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
16279         
16280         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
16281         icalls.
16282         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
16283
16284 2004-07-30  Martin Baulig  <martin@ximian.com>
16285
16286         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
16287         Reflect latest symbol writer changes.   
16288
16289 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16290
16291         * object.c: always create an object if null is passed
16292         to Invoke() where a valuetype is expected.
16293
16294 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16295
16296         * marshal.c (mono_marshal_init): make managed
16297         signatures match native ones better for 64bits.
16298
16299 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16300
16301         * appdomain.c: hack to build correctly the private bin path on windows.
16302         Fixes bug #61991.
16303
16304 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16305
16306         * assembly.c: Load mscorlib from the correct framework directory
16307           (mono/<version>/mscorlib.dll).
16308         * appdomain.h: Added prototypes for new functions.
16309         * internals.h: Added some prototypes.
16310         * domain.c: When initializing the runtime, get from the executable and
16311           the configuration files the runtime version that the app supports.
16312           Added support methods for reading app.exe.config. Added list of versions
16313           supported by the JIT. Added two new methods: mono_init_from_assembly,
16314           which initializes the runtime and determines the required version from
16315           the provided exe file, and mono_init_version, which initializes
16316           the runtime using the provided version.
16317         * icall.c: Get machine.config from version-specific directory.
16318         * reflection.c: When generating an image, embed the version number
16319           of the current runtime.
16320
16321 2004-07-28  Dick Porter  <dick@ximian.com>
16322
16323         * socket-io.c
16324         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
16325         returned sockaddr size before creating the remote address object.
16326         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
16327         61608.
16328
16329 2004-07-28  Dick Porter  <dick@ximian.com>
16330
16331         * locales.c (string_invariant_compare_char): Fix invariant char
16332         compares between upper and lower cases.  Fixes bug 61458.
16333
16334 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
16335         
16336         * marshal.c: actually cache stelem.ref wrappers.
16337         
16338 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16339
16340         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
16341         sections and remove the mono_cli_rva_map () function.
16342
16343 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16344
16345         * debug-mono-symfile.c: fix one more endianess issue, from a patch
16346         by Geoff Norton (<gnorton@customerdna.com>).
16347
16348 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16349
16350         * class.c: fix class loads for pointer types (typeof(int) !=
16351         typeof(int*)).
16352
16353 2004-07-27  Martin Baulig  <martin@ximian.com>
16354
16355         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
16356         reading the debugging information from an external ".mdb" file.
16357
16358 2004-07-24  Martin Baulig  <martin@ximian.com>
16359
16360         * reflection.c (mono_image_get_type_info): Only write a class
16361         layout entry if we actually have a size or a packing size.
16362
16363 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16364
16365         * reflection.c (type_get_fully_qualified_name): 
16366         insert cast to get type checking of ?: with non-gcc compilers
16367
16368 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16369
16370         * rand.c: use g_getenv for both lookups of
16371         MONO_EGD_SOCKET
16372
16373 2004-07-17  Martin Baulig  <martin@ximian.com>
16374
16375         * reflection.c (mono_reflection_bind_generic_method_parameters):
16376         Set `gmethod->reflection_info'.
16377
16378 2004-07-17  Martin Baulig  <martin@ximian.com>
16379
16380         * class.c (mono_class_create_from_typedef): Insert the newly
16381         created class into the hash table before computing the interfaces
16382         since we could be called recursively.
16383
16384 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16385
16386         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
16387         function to implement stelem.ref in managed code
16388         * class-internals.h, debug-helpers.c: a new wrapper type
16389         for the above.
16390
16391 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16392
16393         * gc.c: allow GC handles to work even when no GC is compiled in.
16394         Fix part of bug #61134 (GetAddrOfPinnedObject).
16395
16396 2004-07-13  Peter Williams  <peter@newton.cx>
16397  
16398         * process.c (complete_path): Make sure we don't attempt to execute
16399         directories.
16400  
16401 2004-07-12  Geoff Norton <gnorton@customerdna.com>
16402
16403         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
16404           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
16405           and will add/subtract the hour if needed
16406
16407 2004-07-12  Martin Baulig  <martin@ximian.com>
16408
16409         * reflection.c (mono_field_get_object): If we have
16410         `field->generic_info', take the attributes from
16411         `field->generic_info->generic_type'.    
16412
16413 2004-07-12  Martin Baulig  <martin@ximian.com>
16414
16415         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
16416         This function must be called before initializing the runtime.
16417         (mono_debug_init_1): New function; call this after initializing
16418         the runtime, but before loading the assembly.  It tells the
16419         debugger to load corlib and the builtin types.
16420
16421         * mono-debug-debugger.c: Did some larger changes in the debugging
16422         code; support recursive class declarations, make sure we actually
16423         add all classes.
16424
16425 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16426
16427         * debug-helpers.c: undo my previous patch and fixed the real issue in
16428         ../mini/exceptions-x86.c
16429
16430 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16431
16432         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
16433         when no HOME env. variable was set and a NullRef was thrown in a .cctor
16434         called from other .cctors.
16435
16436 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
16437
16438         * loader.c: Removed the mono_loader_wine_init hack now that we are
16439         doing a managed version of Windows.Forms.
16440
16441 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16442
16443         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
16444         threadpool.c, threads.c: remove static data from rootset.
16445
16446 2004-07-09  Dick Porter  <dick@ximian.com>
16447
16448         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
16449         Don't do any more processing if the matched length was 0.  It was
16450         increasing the size of the string before.  Fixes bug 61167.
16451
16452 2004-07-09  Dick Porter  <dick@ximian.com>
16453
16454         * socket-io.h:
16455         * socket-io.c
16456         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
16457         Add support for SO_PEERCRED if its available.
16458
16459 2004-07-09  Peter Bartok <pbartok@novell.com>
16460         * loader.c: winelib.exe.so error message is now only displayed if
16461         MONO_DEBUG is set. To help us avoid questions when people are trying
16462         out the new Managed.Windows.Forms.
16463
16464 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16465
16466         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
16467         for isinst and castclass wrappers.
16468
16469         * class-internals.h icall.c: Move registration and lookup of JIT icalls
16470         to libmetadata from the JIT, so they could be used by the marshalling
16471         code and the interpreter.
16472
16473         * marshal.c: Register marshalling related JIT icalls here instead of
16474         in mini.c. Use CEE_MONO_ICALL instead of the family of 
16475         CEE_MONO_PROC<x> opcodes to call marshalling functions.
16476
16477         * metadata.h: Remove unneeded marshalling conversions.
16478
16479         * opcodes.c: Update for new opcodes.
16480         
16481 2004-07-08  Martin Baulig  <martin@ximian.com>
16482
16483         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
16484         (mono_debug_get_domain_data): Make this function static.
16485
16486 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16487
16488         * gc.c, object.h: add nice GC handle API for embedders.
16489
16490 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16491
16492         * reflection.c: more changes for the new api
16493
16494         * object.c: When we reflect on a field w/ a constant value, it
16495         will not have a memory location, so we must access metadata. Also,
16496         allow easier reading of strings so that we can read them from
16497         the constant data.
16498
16499         * class.c (mono_class_layout_fields): no need for literal fields here.
16500
16501         * class-internals.h: api changes for const fields
16502
16503         * icall.c (ves_icall_get_enum_info): use new apis for const fields
16504
16505 2004-07-06  Martin Baulig  <martin@ximian.com>
16506
16507         * mono-debug.h: Increment version number to 44.
16508
16509         * mono-debug.c (mono_debug_add_wrapper): The second argument is
16510         now a gpointer, rewrote this whole method.
16511
16512         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
16513         function.  Add information about the wrapper in a new "misc table".
16514
16515         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
16516         for the new misc table.
16517
16518 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * metadata-internals.h image.c: Add a cache for helper signatures.
16521
16522         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
16523
16524 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16525
16526         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
16527         delegates from a delegate. Fixes #61033.
16528         
16529         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
16530         marshalling of stringbuilder arrays. Fixes #59900.
16531
16532 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16533
16534         * icall.c: Add EnumBuilder:setup_enum_type icall.
16535
16536 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16537
16538         * icall.c: Added a new icall for the property version of
16539         OffsetOfStringData.
16540
16541 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
16544         it has a constant size across platforms.
16545
16546         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
16547         stack trace.
16548
16549 2004-06-29  Martin Baulig  <martin@ximian.com>
16550
16551         * mono-debug.c (mono_debug_add_method): Protect the whole function
16552         in mono_debugger_lock(), not just parts of it.
16553
16554 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16555
16556         * reflection.c: make sure padding bytes in heaps are zeroed.
16557
16558 2004-06-24  David Waite  <mass@akuma.org>
16559
16560         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
16561         image.c, loader.c, locales.c, marshal.c, metadata.c,
16562         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
16563         string-icalls.c, threads.c: change to C90-style comments from C99 /
16564         C++ -style
16565
16566 2004-06-24  Dick Porter  <dick@ximian.com>
16567
16568         * threads.c
16569         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
16570         return createdNew.  Fixes bug 60412.
16571
16572         * threads-types.h: 
16573         * icall.c: Add createdNew parameter to CreateMutex icall
16574
16575 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16576
16577         * reflection.c, object-internals.h: save default value in params.
16578
16579 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16580
16581         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
16582         no need to build a new path combining that with the application base.
16583         Fixes bug #60442.
16584
16585 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16586
16587         * reflection.c: fixed minor standard compliance issues.
16588
16589 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16590
16591         * reflection.c: fixed issue with encoding some custom attributes
16592         (arrays in properties and fields, bug #60411).
16593
16594 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16595
16596         * reflection.c: fix start address when copying the public key token.
16597
16598 2004-06-23  Martin Baulig  <martin@ximian.com>
16599
16600         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
16601         the `exc' object in a static object to put it into the GC's root set.
16602
16603 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
16604
16605         * reflection.c: make mono_reflection_setup_internal_class ()
16606         callable a second time to setup a new parent class.
16607
16608 2004-06-23  Dick Porter  <dick@ximian.com>
16609
16610         * threads.c: Check for WAIT_IO_COMPLETION return values.
16611
16612 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
16613
16614         * appdomain.c: Removed the g_free on the public key token. Now copy 
16615         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
16616         * assembly.c: Added public key token string value when loading 
16617         assemblies. Fix bug #60439.
16618         * icall.c: Added missing informations (like public key) in 
16619         GetReferencedAssemblies. Fix #60519.
16620         * image.h: Changed definition for public key token from const char*
16621         public_tok_value to guchar public_key_token [17];
16622         * reflection.c: Updated for changes to public key token.
16623
16624 2004-06-22  Lluis Sanchez Gual
16625
16626         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
16627         for the field in base classes.
16628
16629 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16630
16631         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
16632         mark headers as not supported, they are installed only for use by the
16633         debugger.
16634
16635 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
16636
16637         * *.c, *.h: avoid namespace pollution in public headers.
16638
16639 2004-06-21  Martin Baulig  <martin@ximian.com>
16640
16641         * exception.c (mono_get_exception_security): It's in
16642         "System.Security", not in "System".
16643
16644         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
16645         the exception classes.
16646
16647 2004-06-21  Martin Baulig  <martin@ximian.com>
16648
16649         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
16650         Protect the exception object from being finalized.
16651
16652 2004-06-21  Martin Baulig  <martin@ximian.com>
16653
16654         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
16655         public function.
16656
16657 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
16658
16659         * reflection.c: Load the assembly in mono_reflection_type_from_name,
16660         if it was not loaded before. Fix parts of #60439.
16661
16662 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
16663
16664         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
16665         code that was broken since Ben's change: wrappers are now
16666         dependent on the method signature only again.
16667
16668 2004-06-21  Martin Baulig  <martin@ximian.com>
16669
16670         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
16671         added interface support.
16672
16673 2004-06-21  Martin Baulig  <martin@ximian.com>
16674
16675         * class.c (mono_vtable_get_static_field_data): New public method.
16676
16677 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
16678
16679         * filewatcher.c : Windows build fix to be compliant with API changes.
16680
16681 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16682
16683         * class.h, class.c: more accessors.
16684         * metadata.h, metadata.c: prepare for hiding MonoType and
16685         MonoMethodSignature: people should use the accessors from now on
16686         outside of the tree.
16687
16688 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16689
16690         * *.c, *.h: more API cleanups.
16691
16692 2004-06-18  Jackson Harper  <jackson@ximian.com>
16693
16694         * assembly.c: Trace loading assemblies.
16695         * loader.c: Trace loading native libraries.
16696         * mono-config.c: Trace loading config files.
16697         
16698 2004-06-18  Dick Porter  <dick@ximian.com>
16699
16700         * locales.c: Tell ICU the lengths of strings, it can cope with
16701         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
16702
16703 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16704
16705         * image.c: swapped name/filename;
16706
16707 2004-06-18  Martin Baulig  <martin@ximian.com>
16708
16709         * mono-debug-debugger.c (write_class): Write the parent class at
16710         the end of the header.
16711
16712 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16713
16714         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
16715
16716 2004-06-17  Raja R Harinath  <rharinath@novell.com>
16717
16718         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
16719         (bundle_obj): New conditional define.
16720         (BUILT_SOURCES): Remove.
16721         ($(bundle_srcs)): Make parallel-make safe.
16722         (libmonoruntime_la_LIBADD): Make unconditional.
16723         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
16724         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
16725
16726 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
16727
16728         * culture-info-tables.h: It was inconsistent with the latest
16729           supp info files.
16730
16731 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
16732
16733         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
16734         be loaded.
16735
16736         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
16737         with gcc 2.95.
16738
16739 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16740
16741         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
16742         cleaned up public header threads.h.
16743
16744 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16745
16746         * Makefile.am, *.c, *.h: more API cleanups.
16747
16748 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16749
16750         * Makefile.am: removed monosn from compilation.
16751         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
16752         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
16753         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
16754         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
16755         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
16756         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
16757
16758 2004-06-15  Jackson Harper  <jackson@ximian.com>
16759
16760         * assembly.c: Make locales lower case when searching the GAC for
16761         assemblies. gacutil will always make locales lowercase when
16762         installing so this effectively makes them case insensitive.
16763         
16764 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
16765
16766         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
16767         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
16768           parameter which allows to choose whether the wait can be interrupted or 
16769           not. Also added the method mono_monitor_enter(), which locks the monitor
16770           using an infinite wait and without allowing interruption.
16771           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
16772           interrupted.
16773         * object.h: Added new fields in MonoThread. suspend_event holds the event
16774           used to susped/resume the thread. synch_lock is the lock object to use for
16775           modifying the thread state.
16776         * threads.c: Use the new synch_lock object for locking, instead of "this",
16777           which can generate deadlocks.
16778           Moved thread state change in Thread.Sleep and Thread.Join from managed
16779           to unmanaged code. This avoids a deadlock when the thread was suspended
16780           just after acquiring the thread lock.
16781           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
16782           Implemented Thread.Suspend using an event instead of ThreadSuspend,
16783           which is not fully implemented in the io-layer.
16784         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
16785
16786 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
16787
16788         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
16789         threads-types.h: more API cleanups.
16790
16791 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16792
16793         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
16794         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
16795         threadpool.c, threads.c: first pass at the exported API cleanup.
16796
16797 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16798
16799         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
16800
16801 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16802
16803         * icall.c: added internalGetHome.
16804
16805 2004-06-14  Dick Porter  <dick@ximian.com>
16806
16807         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
16808         possible to return successfully when '.' or '..' were the only
16809         entries in a directory, but were skipped.  The MonoIOStat was not
16810         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
16811         Fixes bug 59574.
16812
16813 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16814
16815         * reflection.c: make binaries run on .Net 1.1 by default.
16816
16817 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16818
16819         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
16820
16821 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
16822
16823         * marshal.c: keep track of struct size with explicit layout
16824         (bug #59979).
16825
16826 2004-06-12  Martin Baulig  <martin@ximian.com>
16827
16828         * mono-debug-debugger.c: Comment out a debugging g_message().
16829
16830 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16831
16832         * reflection.c, reflection.h: do not free custom attrs that are cached.
16833         * icall.c: use braces to make code clearer.
16834
16835 2004-06-11  Martin Baulig  <martin@ximian.com>
16836
16837         * class.h (MonoInflatedField): New type.
16838         (MonoClassField): Replaced `MonoType *generic_type' with
16839         `MonoInflatedField *generic_info'.
16840
16841         * icall.c
16842         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
16843
16844 2004-06-11  Martin Baulig  <martin@ximian.com>
16845
16846         * reflection.c (mono_image_create_method_token): Correctly encode
16847         varargs methods.
16848
16849 2004-06-11  Martin Baulig  <martin@ximian.com>
16850
16851         * metadata.c (mono_metadata_parse_method_signature): When parsing
16852         a MethodDef which has VarArgs, also set sentinelpos if we don't
16853         have any parameters.
16854
16855 2004-06-11  Martin Baulig  <martin@ximian.com>
16856
16857         * verify.c (mono_method_verify): In CEE_CALL, use
16858         mono_method_get_signature() to get the method's signature, unless
16859         we're a PInvoke method.
16860
16861 2004-06-10  Jackson Harper  <jackson@ximian.com>
16862
16863         * assembly.c: Use <path>/lib/mono/gac for the extra paths
16864         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
16865         logical name as the supplied path is just a prefix to the gac not
16866         the direct path to it.
16867         
16868 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
16869
16870         * reflection.c: make the token for a created method match
16871         the token of the MethodBuilder it was created from
16872         (IKVM requires this behaviour now).
16873
16874 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
16875
16876         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
16877         reflection.c, socket-io.c: leak fixes.
16878
16879 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16880
16881         * icall.c: handle sentinel pos in vararg methods in position different
16882         from 0.
16883
16884 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16885
16886         * culture-info-tables.h: freshly generated.
16887
16888 2004-06-09  Martin Baulig  <martin@ximian.com>
16889
16890         * loader.c (mono_get_method_constrained): Call `mono_class_init
16891         (constrained_class)'.   
16892
16893 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
16894
16895         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
16896         any methods. Fixes #59629.
16897
16898 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16899
16900         * culture-info-tables.h: reflecting locale-builder updates.
16901
16902 2004-06-08  Dick Porter  <dick@ximian.com>
16903
16904         * object.h:
16905         * locales.c: Fixed compile warnings, including a real bug in
16906         CompareInfo_internal_compare.
16907         
16908 2004-06-08  Dick Porter  <dick@ximian.com>
16909
16910         * locales.c
16911         (ves_icall_System_Globalization_CompareInfo_internal_index):
16912         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16913         Double-check the resuls of usearches, because ICU currently
16914         ignores most of the collator settings here.  Fixes bug 59720.
16915         
16916 2004-06-08  Dick Porter  <dick@ximian.com>
16917
16918         * locales.c
16919         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16920         Fix memory leak and segfault-causing typo.  No idea how this one
16921         lasted so long without being noticed.
16922
16923 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
16924
16925         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
16926         any methods. Fixes #59629.
16927
16928 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16929
16930         * assembly.c:
16931         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
16932         own the critical section before). Removed dead code (that's done
16933         in the preload hook).
16934
16935         (mono_assembly_load_with_partial_name): call the preload hook.
16936
16937 2004-06-08  Martin Baulig  <martin@ximian.com>
16938
16939         * metadata.c (mono_metadata_signature_alloc): Default
16940         `sentinelpos' to -1.
16941
16942         * reflection.c (mono_image_get_array_token): Likewise.
16943
16944 2004-06-08  Martin Baulig  <martin@ximian.com>
16945
16946         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
16947
16948         * metadata.c (mono_metadata_parse_method_signature): When parsing
16949         a MethodDef which has VarArgs, set sentinelpos.
16950
16951         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
16952         `gint16' since we're using -1 for non-varargs methods.
16953
16954         * reflection.c
16955         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
16956         (method_encode_signature): Added varargs support.
16957         (method_builder_encode_signature): Likewise.
16958         (mono_image_get_varargs_method_token): New static method.
16959         (mono_image_create_method_token): New public method; this is
16960         called via an icall instead of mono_image_create_token() when
16961         calling a varargs method.       
16962
16963 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
16964
16965         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
16966
16967 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16968
16969         * culture-info-tables.h : Reflecting the latest locale-builder that
16970           fixed empty array representation ({} to {0}).
16971
16972 2004-06-07  Jackson Harper  <jackson@ximian.com>
16973
16974         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
16975         looking up extra gac paths. This allows MONO_GAC_PATH to act
16976         exactly like a prefix.
16977         
16978 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16979
16980         * reflection.c (mono_reflection_type_from_name): Make a copy of the
16981         type name before modifying it. Fixes #59405.
16982
16983 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16984
16985         * culture-info.h: added fields for "all datetime patterns".
16986         * locales.c: (  ves_icall_System_Globalization_CultureInfo
16987           _construct_datetime_format ()): fill xxx_patterns fields.
16988         * object.h: added fields for "all datetime patterns" to
16989           MonoDateTimeFormatInfo.
16990         * culture-info-tables.h: reflecting locale-builder updates.
16991
16992 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16993
16994         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
16995         the event has no add and remove methods. Fixes #59629.
16996
16997 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
16998
16999         * object.c: Fixed possible integer overflow when allocating large
17000         strings.
17001
17002 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
17003
17004         * culture-info-tables.h: reflecting locale-builder updates.
17005
17006 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
17007
17008         * culture-info-tables.h: reflecting locale-builder updates.
17009
17010 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
17011
17012         * culture-info-tables.h: reflecting locale-builder updates.
17013
17014 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
17015
17016         * threads.c: Made Thread.Sleep abortable.
17017
17018 2004-06-02  Martin Baulig  <martin@ximian.com>
17019
17020         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
17021
17022         * debug-mono-symfile.h: Bumped symbol file version number to 37.
17023
17024 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
17025
17026         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
17027
17028 2004-05-30  Jackson Harper  <jackson@ximian.com>
17029
17030         * reflection.c: Do not hardcode assembly versions or public key
17031         tokens anymore. All of this except the corlib section was dead
17032         code anyways.
17033         
17034 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17035
17036         * object.c (mono_runtime_invoke_array): Automatically create boxed
17037         objects for byref valuetypes if needed. Fixes #59300.
17038         
17039         * object.c (mono_method_return_message_restore): Handle 
17040         MONO_TYPE_OBJECT as well.
17041
17042 2004-05-28  Jackson Harper  <jackson@ximian.com>
17043
17044         * reflection.c: The modified type encoding was causing build
17045         problems. Reverted for now.
17046         
17047 2004-05-28  Jackson Harper  <jackson@ximian.com>
17048
17049         * reflection.c/h: Take an assembly ref so that we dont create
17050         fully qualified names when encoding types in the same assembly as
17051         the custom attribute being emitted.
17052         * appdomain.c: Increment version number.
17053         
17054 2004-05-26  Duncan Mak  <duncan@ximian.com>
17055
17056         * icall.c
17057         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
17058         Set the full version number (major, minor, build, revision).
17059
17060 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
17061
17062         * marshal.c (emit_struct_conv): increment src/dst after blit
17063         (mono_marshal_get_managed_wrapper,
17064         mono_marshal_get_native_wrapper): make sure we have marshalling
17065         info before marshalling params (info computation affects
17066         blittable)
17067
17068         * class.c (class_compute_field_layout): correctly deal with
17069         blittable
17070         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
17071         value types (as per what windows dows by default)
17072         (mono_class_setup_mono_type): System.ValueType is blittable
17073         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
17074         blittable
17075
17076         * marshal.c (mono_marshal_load_type_info): flag types  as
17077         non-blittable if the native layout doesn't match the managed
17078         layout
17079
17080 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17081
17082         * appdomain.c: don't add stuff in the private search path that is
17083         above the application base. If application base is not set, there's
17084         no private search path.
17085
17086 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17087
17088         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
17089         byref struct arguments in native->managed marshalling.
17090
17091 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
17092
17093         * marshal.c (mono_marshal_get_runtime_invoke): correctly
17094         cache methods using signature (special case for methods
17095         that are value type or string class)
17096         
17097         * image.c (mono_image_close): clean up allocated GSList's
17098         in runtime_invoke_cache.
17099
17100 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17101
17102         * mono-config.c: set the correct path for mono_cfg_dir on windows when
17103         there's no MONO_CFG_DIR environment variable defined.
17104
17105 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17106
17107         * threads.c: windows version must be >= 0x0500 to include OpenThread.
17108
17109 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
17110
17111         * threadpool.c: Really wait for 500ms after the async call, even if the wait
17112           is interrumped.
17113         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
17114           before waiting for it, and call CloseHandle after the wait to unref it.
17115           This will make sure that handles are not disposed too early.
17116
17117 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17118
17119         * appdomain.c:
17120         * appdomain.h:
17121         * icall.c: removed
17122         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
17123         needed now.
17124
17125         * object.c: se the application_base only for the domain that runs
17126         Main. Fixes bug #59216,
17127
17128 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17129
17130         * appdomain.c:
17131         * object.c: only the domain in which Main is run have
17132         SetupInformation.ConfigurationFile set, so moved a few lines from
17133         appdomain.c to object.c.
17134
17135 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17136
17137         * appdomain.c: we tried to load [name].(dll|exe), but according
17138         to bug #57710, we must also try [culture]/[name].(dll|exe) and
17139         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
17140         There's a test case attached to bug #58922.
17141
17142 2004-05-27  Dick Porter  <dick@ximian.com>
17143
17144         * icall.c:
17145         * file-io.c: Implemented icalls for locking and unlocking regions
17146         in a file.
17147         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
17148         FALSE on error (fixes both compiler warning and real bug.)
17149
17150 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
17151
17152         * culture-info-tables.h: reflecting locale-builder updates.
17153
17154           (Added missing ChangeLog entry for 05/26)
17155
17156 2004-05-27  Jackson Harper  <jackson@ximian.com>
17157
17158         * locales.c: Fix some cut and paste errors.
17159         
17160 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17161
17162         * mono-config.c: set the correct path for config. directory on windows.
17163
17164 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17165
17166         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
17167           on win32.
17168
17169 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
17172         from pinvoke functions.
17173         
17174         * marshal.c (mono_ftnptr_to_delegate): Implement this.
17175
17176 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17177
17178         * culture-info-tables.h: reflecting locale-builder updates.
17179
17180 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17181
17182         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
17183         #59086.
17184
17185 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
17186
17187         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
17188         * icall.c: Modified icalls for RNG.
17189         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
17190         Windows (CryptoAPI).
17191
17192 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * locales.c: Fix build.
17195
17196 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17197
17198         * culture-info-tables.h: reflecting locale-builder updates.
17199
17200 2004-05-25  Jackson Harper  <jackson@ximian.com>
17201
17202         * locales.c: When creating the current culture use the $LANGs
17203         specific culture. So DateTimeFormat and NumberFormat entries are created.
17204         
17205 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17206
17207         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
17208         a char array as parameter.
17209
17210 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
17211
17212         * image.c: In mono_image_open(), always use an absolute path name to
17213           look for already loaded images.
17214
17215 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
17216
17217         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
17218         missing in the windows build (like older cygwin include files).
17219
17220 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
17221
17222         * icall.c: Fixed check for possible integer overflow in Buffer_
17223         BlockCopy icall. Replaced comments style // by /* */.
17224
17225 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17226
17227         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
17228         
17229         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
17230         check after MONO_VTADDR. Fixes pinvoke2.exe.
17231
17232         * marshal.h marshal.c metadata.h: Add beginnings of support for
17233         ftnptr -> delegate marshalling.
17234
17235 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17236
17237         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
17238         * threads.c: Fix warnings.
17239
17240 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17241
17242         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
17243         * icall.c: Registered icalls for Suspend and Resume.
17244         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
17245           Thread.Abort.
17246         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
17247         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
17248         * process.c: Use WaitForSingleObjectEx.
17249         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
17250           checkpoints.
17251         * threads.c, threads.h: Make use of new Ex wait methods. Improved
17252           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
17253           for Suspend and Resume. Added new mono_thread_stop, used for stoping
17254           background threads. Added basic support for Abort in Windows.
17255           Start new threads using a managed delegate invoke wrapper. This wrapper
17256           has an interruption checkpoint that is needed since an interruption
17257           can be requested before the thread leaves the unmanaged code that starts 
17258           the thread.
17259         * marshal.c: Added interruption checkpoint after every native call, and
17260           also before managed calls for wrappers called from unmanaged code to
17261           go into managed code.
17262         * object.h: Added new field in MonoThread to keep track of interruption
17263           requests.
17264
17265 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17266
17267         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
17268         calls.
17269
17270 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17271
17272         * appdomain.c:
17273         * assembly.c:
17274         * gc.c:
17275         * locales.c:
17276         * mono-config.c:
17277         * rand.c: getenv -> g_getenv (windows!)
17278
17279         * process.c: complete_path is also used on non-windows platforms.
17280
17281 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17282
17283         * icall.c: new signature for Process_Start.
17284
17285         * process.[ch]: new signature for Process_Start. If we're on windows
17286         and UseShellExecute is false, we have to search for the program by
17287         ourselves if we don't get a full path.
17288
17289 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17290
17291         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
17292         marshalling and call CleanUpNativeData if needed. Fixes #58646.
17293
17294 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17295
17296         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
17297         Fixes bug #58373.
17298
17299 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17300
17301         * process.c: use double quotes to quote program name and arguments on
17302         windows. Fixes bug #58575.
17303
17304 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17305
17306         * file-io.c: don't return "." and ".." when using windows Find*File.
17307
17308 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
17309
17310         * marshal.c: Don't pass wrappers to message init because method 
17311         addressed used to lookup metadata. part of remoting[2|3] fix.
17312
17313 2004-05-15  Jackson Harper  <jackson@ximian.com>
17314
17315         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
17316         path is essentially the same as MONO_PATH except that it points to
17317         GACs instead of lib directories.
17318         * loader.h: The user gac is gone so we dont need function to
17319         enable/disable it.
17320         * mono-config.c: user gac option is now gone.
17321         
17322 2004-05-15  Jackson Harper  <jackson@ximian.com>
17323
17324         * culture-info.h: Make defines more consistent, add calendar data
17325         to the culture info table.
17326         * culture-info-tables.h: Add basic calendar data. Basically
17327         everyone gets default gregorian until all the data is
17328         updated.
17329         * locales.c: Use the new consistent defines. Set calendar data for
17330         culture info objects.
17331         * object.h: add a field for calendar data to CultureInfo
17332         
17333 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17334
17335         * image.c: image->runtime_invoke_cache is keyed on signatures now.
17336         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
17337         a signature.
17338         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
17339         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
17340         an extra param that is the pointer of the method to invoke. The IL for
17341         the invoke method is no longer specific to the method, but to the
17342         signature of the method. Thus, we can share the same code for multiple
17343         methods. This reduces the number of methods that have to be compiled.
17344
17345 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17346
17347         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
17348
17349         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17350
17351         * icall.c: Optimize Buffer.BlockCopy.
17352
17353 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17354
17355         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
17356         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
17357         quote). Changed them to "MMMM yyyy".
17358
17359 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
17360
17361         * rand.c
17362         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
17363
17364 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
17365
17366         * reflection.h: Updated after changes to managed structures.
17367
17368         * appdomain.c: Bump corlib version.
17369
17370 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17371
17372         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
17373         windows.
17374
17375 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17376
17377         * Makefile.am: link to ../os/libmonoos.la on windows.
17378
17379         * assembly.c:
17380                 -If MONO_DEBUG, warn about non-existing directories in
17381                 MONO_PATH.
17382                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
17383                 compile time variable.
17384                 -Removed init_default_path and call mono_set_rootdir from
17385                 libmonoos.a instead (windows only).
17386
17387         * assembly.h: declare mono_assembly_getrootdir().
17388
17389         * domain.c:
17390         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
17391
17392         * loader.c: s/getenv/g_getenv/
17393
17394 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
17397
17398         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
17399
17400         * metadata.h: Add new marshalling conversions.
17401
17402         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
17403         function.
17404
17405         * reflection.c (mono_reflection_get_type): Lookup the type in all
17406         modules of a multi-module assembly. Fixes #58291.
17407
17408 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17409
17410         * threads.c: Before aborting a background, set the StopRequested
17411         state.  This avoids throwing the Abort exception.
17412         In mono_thread_manage, don't continue with the shutdown until all
17413         aborted threads have actually stopped.
17414
17415 2004-05-10  Jackson Harper  <jackson@ximian.com>
17416
17417         * locales.c: Remove the modifier from culture names.
17418         
17419 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17420
17421         * Makefile.am: monosn is not installed any more. It has been deprecated
17422         in favor of sn.
17423
17424 2004-05-07  Jackson Harper  <jackson@ximian.com>
17425
17426         * locales.c
17427         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
17428         Fix array construction, add bailout if the length is 0.
17429
17430 2004-05-07  Dick Porter  <dick@ximian.com>
17431
17432         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
17433         machine doesn't have a DNS entry.  Patch by Urs Muff
17434         (umuff@quark.com), fixes bug 57928.
17435
17436 2004-05-06  Jackson Harper  <jackson@ximian.com>
17437
17438         * reflection.c: Handle null PublicTokens properly. alloc mem for
17439         assembly names culture so we dont crash when freeing it.
17440         
17441 2004-05-06  Jackson Harper  <jackson@ximian.com>
17442
17443         * assembly.c: Check the usergac when loading with partial names.
17444         
17445 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17446
17447         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
17448         does nothing for now (not required for Linux/Windows) but the class
17449         library can call it (and a newer or modified runtime could need it).
17450         * icall.c: Registred icall.
17451
17452 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17453
17454         * loader.c: prints a message on module loading error we set MONO_DEBUG
17455         environment variable.
17456
17457 2004-05-05  Jackson Harper  <jackson@ximian.com>
17458
17459         * appdomain.c: Handle PublicKeyToken=null properly.
17460         
17461 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17462
17463         * environment.c|h: Added icall ves_icall_System_Environment_
17464         GetOSVersionString to get the current OS version as a string.
17465         * icall.c: Registred icall.
17466
17467 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
17468
17469         * object.c: in mono_object_get_virtual_method(), take into account that
17470         non-virtual methods don't have a slot in the vtable. Check needed when
17471         the object is a proxy.
17472
17473 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17474
17475         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
17476         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
17477
17478         * object.c (mono_class_compute_gc_descriptor): Fix warning.
17479
17480         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
17481         passed when a valuetype is expected.
17482
17483         * object.c (mono_unhandled_exception): Only set the exit code if the
17484         exception happens in the main thread. Fixes thread5.exe.
17485
17486         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
17487         invalid names. Fixes #58047.
17488
17489 2004-05-03  Jackson Harper  <jackson@ximian.com>
17490
17491         * assembly.c: This line was committed accidently and is unneeded.
17492         
17493 2004-05-03  Jackson Harper  <jackson@ximian.com>
17494
17495         * icall.c: Add new icall for Assembly::LoadWithPartialName
17496         * assembly.c/.h: new function that probes the GAC to load partial
17497         assembly names by Paolo Molaro.
17498         
17499 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17500
17501         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
17502         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
17503         (type_get_fully_qualified_name): Added PublicKeyToken when building a
17504         full type name.
17505
17506 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17507
17508         * appdomain.c: fixed check for 'neutral' culture and removed warning.
17509         * reflection.c: fix bug when parsing a full type name and Version is not
17510         the last thing in the string.
17511
17512 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
17513
17514         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
17515         crashes when it is freed.
17516
17517 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17518
17519         * assembly.c: print the compat warning to stderr.
17520
17521 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
17522
17523         * assembly.c (mono_assembly_load_references): Add a compatibility
17524         hack to run old applications that might be still referencing the
17525         3300-based assemblies, only do this for System.xxx.
17526
17527 2004-05-01  Jackson Harper  <jackson@ximian.com>
17528
17529         * appdomain.c: If the culture is neutral we set it to "".
17530         
17531 2004-04-29  Jackson Harper  <jackson@ximian.com>
17532
17533         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
17534
17535 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
17536  
17537         * string-icalls.c: added low overhead function for copying chars
17538         * icall.c: added needed icall for the above function
17539  
17540 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17541
17542         * icall.c: fix return value of get_global_assembly_cache.  Implemented
17543         Environment.GetLogicalDrives.
17544
17545 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
17546
17547         * rand.c: try and talk to egd or prngd
17548         for random bytes if opening devices fail.
17549
17550 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17551
17552         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
17553         alignment for the type using the native alignment of its members 
17554         instead of using klass->min_align.
17555
17556         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
17557
17558 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17559
17560         * file-io.c:
17561         * socket-io.c: added check for sys/aio.h.
17562
17563 2004-04-28  Dick Porter  <dick@ximian.com>
17564
17565         * threads.c: Don't abort a thread thats already aborting, when
17566         terminating everything.
17567
17568 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17569
17570         * icall.c: added 2 new async calls for Socket.
17571
17572         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
17573         IO on *nix systems.
17574
17575         * threadpool.c: removed unused variable.
17576
17577 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
17580
17581 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17582
17583         * locales.c: put back string_invariant_tolower () and
17584         string_invariant_toupper ().
17585
17586 2004-04-26 David Waite <mass@akuma.org>
17587
17588         * file-io.h:
17589         * socket-io.h:
17590         * threads.h:
17591         * unicode.h: remove comma from end of enumeration declarations
17592
17593 2004-04-26 David Waite <mass@akuma.org>
17594
17595         * debug-mono-symfile.h:
17596         * decimal.c:
17597         * mono_debug.h:
17598         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
17599
17600
17601 2004-04-26  Jackson Harper  <jackson@ximian.com>
17602
17603         * appdomain.c: Increment version number.
17604         
17605 2004-04-26  Jackson Harper  <jackson@ximian.com>
17606
17607         * appdomain.c: Set assembly references public token value when
17608         PublicKeyToken is specified, not the hash_value. Free public token
17609         values when free assembly name data. Previously the public key
17610         token was hex decoded, however we are using hex encoded public key
17611         tokens, so this is not neccasary.
17612         * assembly.c: Lookup assemblies in the gac if their public token
17613         value is set. Add function to allow enabling user gac
17614         lookups. Specify whether or not the assembly was loaded from the
17615         GAC. Compare full assembly names when checking the cache for
17616         assemblies (Temporarily disabled see comment in code). Remove
17617         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
17618         specifies trace-loader they get extra info to stdout on the
17619         loading of assemblies.
17620         * image.h: Add a field for an assembly references public token
17621         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
17622         whether an assembly has been loaded from the GAC.
17623         * image.c: Remove a corlib -> mscorlib name mapping.
17624         * loader.h: Add function to enable/disable the user gac.
17625         * mono-config.c: Check if the usergac is enabled in the config
17626         file.
17627         * icall.c: New icall to determine whether or not an assembly has
17628         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
17629         * tabldefs.h: Add constant for assemblyref flag that specifies a
17630         full public key is used instead of a public token.
17631         * reflection.c: Remove mscorlib -> corlib mappings. Set
17632         PublicTokenValue instead of hash value. This value is a hex
17633         string so it does not need to be expanded.
17634
17635 2004-04-26  Martin Baulig  <martin@ximian.com>
17636
17637         * mono-debug-debugger.c (mono_debugger_initialize): Set
17638         `mono_debugger_initialized' before calling mono_debug_lock().
17639
17640 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
17641
17642         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
17643           InternalToUpper/InternalToLower.
17644         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
17645           removed invariant culture shortcut.  This is now done in managed code.
17646         * locales.c: (string_invariant_toupper/tolower) removed.
17647
17648 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17649
17650         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
17651         Added Poll internal call.
17652
17653         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
17654         call for Poll. Select was too heavy for polling a single socket.
17655
17656         * threadpool.[ch]: added mono_threadpool_cleanup.
17657         * threads.c: use it. Don't use Thread_Abort on windows.
17658
17659 2004-04-23  Martin Baulig  <martin@ximian.com>
17660
17661         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
17662
17663 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
17664
17665         * icall.c: Registred new icalls for key pair protection and added an
17666         icall for Environment.GetFolderPath on Windows.
17667         * security.c|h: Added new icalls for key pair protection.
17668
17669 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17670
17671         * socket-io.c: don't display the non-supported family warning for known
17672         families. Now this is not displayed on windows when checking support
17673         for IPv4/IPv6.
17674
17675 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17676
17677         * class.c: don't display the layout warning for static fields.
17678
17679 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
17680
17681         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
17682         * locales.c, locales.h: Added new icalls for culture-specific
17683         Char.ToLower and Char.ToUpper.
17684
17685 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17686
17687         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
17688         by David Waite.
17689
17690 2004-04-20  Martin Baulig  <martin@ximian.com>
17691
17692         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
17693         of the type name before passing it to mono_reflection_type_from_name().
17694
17695 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17696
17697         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
17698         encodings here. Fixes #56965.
17699
17700 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
17701
17702         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17703         fix test on strstr result not that I can see anything that
17704         relies on the result.
17705
17706 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
17709         Fixes #57081.
17710
17711         * marshal.c (mono_marshal_get_string_encoding): New helper function.
17712
17713         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
17714         function to determine which marshalling to use for strings. Fixes
17715         #56965.
17716
17717         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
17718
17719         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
17720
17721 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
17722
17723         * icall.c: #include mono-config.h
17724
17725 2004-04-15  Jackson Harper  <jackson@ximian.com>
17726
17727         * culture-info-tables.h: Fix date formats for en-US culture.
17728         
17729 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
17730
17731         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
17732         ThreadPool.SetMinThreads.
17733         * threadpool.c: Implemented ThreadPool.GetMinThreads and
17734         ThreadPool.SetMinThreads.
17735
17736 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17737
17738         * mono-config.c: also load the .config file in the directory
17739         where the assembly was found.
17740
17741 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17742
17743         * assembly.c: load per-assembly config files.
17744         * icall.c: decrapified code to get the config dir and moved to
17745         mono-config.c.
17746         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
17747         per-assembly config files. When doing a dll map lookup give precedence
17748         to the per-assembly data.
17749
17750 2004-04-14  Martin Baulig  <martin@ximian.com>
17751
17752         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
17753         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
17754         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
17755
17756         * mono-debugger-debugger.c: While the debugger is locked, remember
17757         whether the symbol tables have changes and send one single
17758         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
17759
17760 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
17763
17764         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
17765         function.
17766
17767         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
17768         account when marshalling string arrays. Fixes #56965.
17769
17770 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
17771
17772         * icall.c: Add new icalls mapping for security.
17773         * security.c|h: Add internal calls for WindowsIdentity,
17774         WindowsImpersonationContext and WindowsPrincipal.
17775
17776 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
17777
17778         * class.c: Added comment to ensure the System.MonoDummy class
17779         is removed when no longer necessary
17780
17781 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17782
17783         * appdomain.c: Pass arguments to the bootstraping exceptions to
17784         minimize JITed methods at boot
17785
17786         * metadata.c (mono_exception_from_name_two_strings): Allow for the
17787         second string to be null.
17788
17789         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17790         Change the protocol to minimize the JIT methods at startup.  Now
17791         it Returns the internal codepage, if the value of "int_code_page"
17792         is 1 at entry, and we can not compute a suitable code page
17793         number, returns the code page as a string.
17794
17795 2004-04-13  Jackson Harper  <jackson@ximian.com>
17796
17797         * culture-info-tables.h: Fix number of decimal digits for all
17798         english locales.
17799
17800 2004-04-13  Jackson Harper  <jackson@ximian.com>
17801
17802         * icall.c: Clairfy out of sync error message. It is not always
17803         your corlib that is out of sync.
17804
17805 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
17806
17807         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
17808         properties when only the set accessor is overriden. Fixes #55874.
17809
17810 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
17811
17812         * assembly.c (mono_assembly_load_references): Make this thread safe.
17813         Fixes #56327.
17814
17815 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17816
17817         * monosn.c: Add missing initialization calls.
17818
17819 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
17820
17821         * locales.c:
17822         ves_icall_System_Globalization_CultureInfo_construct_number_format
17823         Fix g_assert so it compiles on fussier compilers re int/ptr
17824         mismatch
17825
17826 2004-04-08  Dick Porter  <dick@ximian.com>
17827
17828         * socket-io.h:
17829         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
17830         53992.  Also rearrange the code so that the internal calls return
17831         an error value and exceptions are thrown from managed code.
17832
17833         * icall.c: Add type info to the socket icalls.
17834
17835 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17836
17837         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
17838         owes me a beer.
17839
17840 2004-04-07  Martin Baulig  <martin@ximian.com>
17841
17842         * class.c (mono_class_from_generic_parameter): Don't default
17843         `klass->parent' to `mono_defaults.object_type'.
17844
17845 2004-04-07  Martin Baulig  <martin@ximian.com>
17846
17847         * reflection.c (mono_reflection_initialize_generic_parameter): Set
17848         `param->pklass->reflection_info'.       
17849
17850 2004-04-07  Jackson Harper  <jackson@ximian.com>
17851
17852         * culture-info-tables.h: Fix date separator symbol.
17853         
17854 2004-04-07  Martin Baulig  <martin@ximian.com>
17855
17856         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
17857         from System.Type to System.MonoType.
17858
17859 2004-04-07  Martin Baulig  <martin@ximian.com>
17860
17861         * reflection.h
17862         (MonoReflectionGenericParam): Added `has_reference_type' and
17863         `has_value_type' fields.
17864
17865         * reflection.c (mono_image_get_generic_param_info): Encode the
17866         correct flags if we have the `class' or `struct' constraint.
17867
17868 2004-04-07  Martin Baulig  <martin@ximian.com>
17869
17870         * reflection.h
17871         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
17872
17873 2004-04-07  Jackson Harper  <jackson@ximian.com>
17874
17875         * appdomain.c: Revert extra patches, just wanted to bump the
17876         version number.
17877         
17878 2004-04-07  Jackson Harper  <jackson@ximian.com>
17879
17880         * Makefile.am: Add culture-info private headers.
17881         * icall.c: Add new icalls for contructing locales.
17882         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
17883         * locales.h: Declare new culture info construction methods.
17884         * object.h: Add new fields used to avoid the CultureMap to
17885         MonoCultureInfo.
17886         * culture-info.h: Definition of structs used in the culture info
17887         tables.
17888         * culture-info-tables.h: Autogenerated tables that contain culture
17889         info data. This file was generated with the locale-builder tool.
17890         * appdomain.c: Incement corlib version number.
17891         
17892 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
17893
17894         * appdomain.c: (mono_runtime_init) move mono_thread_init
17895         to before mono_object_new calls so critical sections
17896         are initialized before use.
17897
17898 2004-04-07  Martin Baulig  <martin@ximian.com>
17899
17900         * icall.c
17901         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
17902         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
17903         (ves_icall_MonoGenericParam_initialize): Removed.
17904         (monogenericparam_icalls): Removed.
17905         (generictypeparambuilder_icalls): Added new table for
17906         System.Reflection.Emit.GenericTypeParameterBuilder.
17907
17908         * reflection.c
17909         (mono_reflection_define_generic_parameter): Removed.
17910         (mono_reflection_initialize_generic_parameter): This is now called
17911         from GenericTypeParameterBuilder's .ctor.
17912
17913 2004-04-06  Martin Baulig  <martin@ximian.com>
17914
17915         * class.c (mono_class_init): Don't inflate nested classes in a
17916         generic instance.
17917         (mono_type_get_name_recurse): Include the generic arguments for
17918         generic instances and generic type declarations.
17919         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
17920         (_mono_class_get_instantiation_name): Removed.
17921         (mono_class_create_generic): Always use `gklass->name' as our name.
17922
17923         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
17924
17925         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
17926         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
17927         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
17928         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
17929         closed generic methods here.
17930
17931         * reflection.c
17932         (mono_reflection_generic_inst_get_nested_types): Removed.
17933         (inflate_mono_method): Copy the generic parameters from the
17934         MonoMethodHeader into out MonoGenericMethod.
17935
17936 2004-04-06  Martin Baulig  <martin@ximian.com>
17937
17938         * row-indexes.h
17939         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
17940
17941         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
17942
17943         * reflection.c (build_compressed_metadata): If we have any entries
17944         in the GenericParam, MethodSpec or GenericParamConstraint tables,
17945         set the header version to 1.1.
17946
17947 2004-04-06  Martin Baulig  <martin@ximian.com>
17948
17949         * class.c (mono_class_init): If we're a generic instance,
17950         initialize our nested classes, too.
17951         (_mono_class_get_instantiation_name): Deal with the new `!%d'
17952         suffix. 
17953
17954 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17955
17956         * process.c: quote the argument passed to the shell on windows.
17957
17958 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * threads.c (mono_alloc_special_static_data): Allow this to be
17961         called during startup.
17962
17963 2004-04-02  Martin Baulig  <martin@ximian.com>
17964
17965         * icall.c
17966         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
17967
17968 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17969
17970         * icall.c: Fix build.
17971
17972 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
17973
17974         * Makefile.am: Added security.c|h.
17975         * icall.c: Added icall for get_UserName;
17976         * security.c: New file for security related icalls. Added function
17977         get_UserName for System.Environment (fix #56144).
17978         * security.h: New. Header file for security.c
17979
17980 2004-04-02  Dick Porter  <dick@ximian.com>
17981
17982         * icall.c: Deleted the icalls that were obsoleted some time ago
17983         by the ICU string code, and which were mixed into the icall
17984         rearranging.  Fixes bug 55969.
17985
17986         * string-icalls.h: 
17987         * string-icalls.c: Deleted the code that those icalls reference.
17988
17989 2004-04-01  Martin Baulig  <martin@ximian.com>
17990
17991         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
17992
17993         * class.c (mono_class_from_generic_parameter): Don't set 
17994         TYPE_ATTRIBUTE_INTERFACE.
17995         (my_mono_class_from_generic_parameter): Likewise.
17996
17997 2004-04-01  Martin Baulig  <martin@ximian.com>
17998
17999         * loader.c (find_method): Added an optional `MonoClass *ic'
18000         argument to search in a specific interface.
18001         (mono_get_method_constrained): New public function.
18002
18003 2004-04-01  Martin Baulig  <martin@ximian.com>
18004
18005         * reflection.c (mono_image_get_generic_field_token): Use the
18006         `handleref' cache here.
18007
18008 2004-04-01  Martin Baulig  <martin@ximian.com>
18009
18010         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
18011
18012         * reflection.c (create_generic_typespec): Use the `typespec' hash
18013         here, not the `typeref' one.    
18014
18015 2004-04-01  Martin Baulig  <martin@ximian.com>
18016
18017         * class.c (mono_class_inflate_generic_type): Moved the
18018         functionality into a new static inflate_generic_type() which
18019         returns NULL if it didn't do anything.  Only increment the
18020         `mono_stats.inflated_type_count' if we actually inflated
18021         something.
18022         (mono_class_get_full): Check the classes type to see whether we
18023         need to inflate it; also inflate MONO_TYPE_(M)VAR.
18024
18025 2004-04-01  Jackson Harper  <jackson@ximian.com>
18026
18027         * reflection.c: Set culture for assembly references.
18028         
18029 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
18030
18031         * reflection.[ch], icall.[ch], Fix support for pinning variables.
18032
18033 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18034
18035         * assembly.c:
18036         (do_mono_assembly_open): the critical section also covers
18037         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
18038
18039 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18040
18041         * threads.c:
18042         (mono_manage_threads): abort the background threads when finishing.
18043         Fixes bug #47232.
18044
18045 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18046
18047         * gc.c: only close the done_event handle if there was no timeout.
18048         C-ified comments.
18049
18050 2004-03-30  Martin Baulig  <martin@ximian.com>
18051
18052         * icall.c (icall_entries): It's called "System.Activator", not
18053         "System.Activation".    
18054
18055 2004-03-30  Martin Baulig  <martin@ximian.com>
18056
18057         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
18058         (mono_class_create_from_typespec): Likewise.
18059
18060 2004-03-30  Martin Baulig  <martin@ximian.com>
18061
18062         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
18063         `has_ctor_constraint' and `initialized'.
18064
18065 2004-03-30  Martin Baulig  <martin@ximian.com>
18066
18067         * reflection.c (encode_new_constraint): New static function to add
18068         the constructor constraint attribute to a type parameter.
18069         (encode_constraints): Call encode_new_constraint() if necessary.
18070
18071         * reflection.h
18072         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
18073
18074         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
18075         
18076 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
18077
18078         * reflection.c, icall.c: add support for pinning variables. 
18079
18080 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
18081
18082         * marshal.c (mono_marshal_get_managed_wrapper):
18083         init bool local with zero rather than null.
18084
18085 2004-03-29  Martin Baulig  <martin@ximian.com>
18086
18087         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
18088         the "official" behavior here.
18089         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
18090
18091 2004-03-29  Martin Baulig  <martin@ximian.com>
18092
18093         * icall.c: Reflect latest API changes.
18094
18095 2004-03-29  Martin Baulig  <martin@ximian.com>
18096
18097         * loader.c (mono_get_method_from_token): Also call
18098         mono_metadata_load_generic_params () for abstract and interface
18099         methods; replace the type arguments in the method signature with
18100         the ones which are loaded from the metadata.
18101
18102 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
18103
18104         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
18105         of the lock is not the current thread. MS.NET don't do it, in spite of
18106         what the documentation says. See bug #56157.
18107
18108 2004-03-28  Martin Baulig  <martin@ximian.com>
18109
18110         * class.c (mono_class_init): Don't call init_properties() and
18111         init_events() for generic instances; set `prop->parent' when
18112         inflating properties.
18113
18114         * reflection.c (mono_generic_inst_get_object): Call
18115         `mono_class_init (ginst->klass)'.
18116         (mono_type_get_object): Only create a MonoGenericInst if your
18117         generic type is a TypeBuilder.
18118         (do_mono_reflection_bind_generic_parameters): Only set
18119         `ginst->is_dynamic' if our generic type is a TypeBuilder.
18120
18121 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
18124         Fixes #56091.
18125
18126 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18127
18128         * icall.c: added Kill_internal icall.
18129         * process.[ch]: added Kill_internal icall.
18130
18131 2004-03-25  Martin Baulig  <martin@ximian.com>
18132
18133         * class.h (MonoStats): Added `generic_instance_count',
18134         `inflated_method_count', `inflated_type_count' and
18135         `generics_metadata_size'.       
18136
18137 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18138
18139         * reflection.c: no warnings now.
18140
18141 2004-03-25  Martin Baulig  <martin@ximian.com>
18142
18143         * class.c (mono_class_get_full): New public function; does a
18144         mono_class_get(), but also takes a `MonoGenericContext *'.
18145
18146         * loader.c (mono_field_from_memberref): Renamed to
18147         `field_from_memberref', made static and added `MonoGenericContext *'
18148         argument.
18149         (mono_field_from_token): Added `MonoGenericInst *' argument.
18150         (method_from_memberef): Likewise.
18151         (mono_get_method_from_token): Likewise.
18152         (mono_get_method_full): New public function; does a
18153         mono_get_method(), but also takes a `MonoGenericContext *'.
18154
18155         * verify.c (mono_method_verify): Get the method's generic context
18156         and pass it to mono_field_from_token(), mono_get_method_full() and
18157         mono_class_get_full().
18158
18159 2004-03-25  Martin Baulig  <martin@ximian.com>
18160
18161         * class.c (mono_class_inflate_generic_type): Take a
18162         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
18163         `MonoGenericMethod *'.
18164
18165 2004-03-25  Martin Baulig  <martin@ximian.com>
18166
18167         * loader.h (MonoMethodInflated): Store the MonoGenericContext
18168         instead of the MonoGenericMethod here.
18169
18170 2004-03-25  Martin Baulig  <martin@ximian.com>
18171
18172         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
18173         each time we create a new MonoGenericInst, we also create a new
18174         context which points back to us.
18175
18176         * class.c (inflate_method): Use `ginst->context' instead of
18177         creating a new context.
18178
18179         * loader.c (method_from_memberref): Use
18180         `klass->generic_inst->context' instead of creating a new context.
18181
18182 2004-03-25  Martin Baulig  <martin@ximian.com>
18183
18184         * class.h (MonoGenericContext): New struct.
18185         (MonoGenericMethod): Removed `generic_inst'.
18186
18187         * class.c (mono_class_inflate_generic_method): Take a
18188         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
18189
18190 2004-03-25  Martin Baulig  <martin@ximian.com>
18191
18192         * loader.h (MonoMethodInflated): New typedef.
18193
18194         * metadata.h (MonoMethodSignature): Removed `gen_method', make
18195         `generic_param_count' consume just 30 bits, added `is_inflated'
18196         and `has_type_parameters' flags (one bit each).
18197
18198         * class.c (mono_class_inflate_generic_method): Create a
18199         MonoMethodInflated instead of a MonoMethodNormal and set
18200         `is_inflated' in the method signature.
18201
18202         * class.h (MonoGenericMethod): Removed `generic_method'.
18203
18204 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
18205
18206         * image.c: Make sure the name of a MonoImage is always an absolute path.
18207           This fixes bug #54415.
18208
18209 2004-03-24  Martin Baulig  <martin@ximian.com>
18210
18211         * class.c (mono_class_setup_vtable): If we're a generic instance,
18212         use our generic type's vtable size.
18213
18214 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18215
18216         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
18217         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
18218         problems.
18219
18220 2004-03-23  Martin Baulig  <martin@ximian.com>
18221
18222         * class.h (MonoDynamicGenericInst): Added `int count_events' and
18223         `MonoEvent *events'.
18224
18225         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
18226         (typebuilder_icalls): Added "get_event_info"; calls
18227         mono_reflection_event_builder_get_event_info(). 
18228
18229         * reflection.c (mono_reflection_generic_inst_initialize): Added
18230         `MonoArray *events'.
18231         (mono_reflection_event_builder_get_event_info): New function.
18232
18233 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
18234
18235         * object.h: add mono_type_initialization_init
18236
18237         * object.c (mono_runtime_class_init): 
18238         implement class constructor synchronization rules
18239         to cope with threading issues.  
18240         add mono_type_initialization_init
18241
18242         * appdomain.c (mono_runtime_init): call 
18243         mono_type_initialization_init
18244
18245         * class.h: removing initializing field from MonoVTable
18246
18247 2004-03-23  Martin Baulig  <martin@ximian.com>
18248
18249         * class.c (my_mono_class_from_generic_parameter): Use
18250         `param->name' if it's not NULL. 
18251
18252 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
18253
18254         * class.c: do not insert non-virtual methods in the vtable.
18255         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
18256         that means the method is non-virtual. This never would have
18257         happened before.
18258
18259 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18260
18261         * profiler.c: Added lock for accessing coverage_hash.
18262
18263 2004-03-22  Martin Baulig  <martin@ximian.com>
18264
18265         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
18266         `method->method->signature->generic_param_count != 0' to make it
18267         work for interface methods.
18268
18269 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18270
18271         * process.c: quote the string passed to the shell using g_shell_quote.
18272
18273 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18274
18275         * threads.c:
18276         (mono_threads_manage): don't remove the finalizer thread and self
18277         from the threads hash table so that mono_thread_manage can be called
18278         more than once.
18279
18280 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18281
18282         * process.c: quote the arguments when UseShellExecute is true. Fixes
18283         bug #55790.
18284
18285 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18286
18287         * threads.c: set mono_thread_detach as a cleanup routine for every
18288         thread. This way it's always executed upon thread termination, either
18289         aborted or finished normally. No more xsp hangs!
18290
18291 2004-03-17  Martin Baulig  <martin@ximian.com>
18292
18293         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
18294         `int count_nested' and a `MonoType **nested'.
18295
18296         * reflection.c (mono_reflection_bind_generic_parameters): Moved
18297         most of the functionality into a new static
18298         do_mono_reflection_bind_generic_parameters() and don't take a
18299         `MonoType *nested_in' argument any more.  Don't compute nested
18300         types here.
18301         (mono_reflection_generic_inst_get_nested_types): New public method
18302         to get nested types.
18303
18304         * class.c (mono_class_create_generic): Set `klass->nested_in' if
18305         we're a nested class.
18306
18307         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
18308         mono_reflection_generic_inst_get_nested_types() to compute the
18309         nested types.
18310
18311 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18312
18313         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
18314         descriptive error message under windows.
18315         
18316 2004-03-17  Martin Baulig  <martin@ximian.com>
18317
18318         * class.c (dup_type): Added `const MonoType *original' argument;
18319         copy the attrs from the original type.
18320
18321 2004-03-17  Martin Baulig  <martin@ximian.com>
18322
18323         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
18324         `m->generic_inst_cache' here.
18325
18326 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * exception.h exception.c: Add stack_overflow_exception.
18329
18330 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18331
18332         * threadpool.c:
18333         (overlapped_callback): call SetEvent *after* invoking the callback.
18334         No need to call CloseHandle.
18335
18336 2004-03-16  Martin Baulig  <martin@ximian.com>
18337
18338         * reflection.c (mono_image_get_fieldref_token): Take a
18339         `MonoReflectionField *' instead of a `MonoClassField *' and a
18340         `MonoClass *'; store the `MonoReflectionField *' in the hash.
18341
18342 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18343
18344         * appdomain.c: don't add the culture to the filename we're looking for
18345         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
18346
18347 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18348
18349         * locales.c: don't ignore symbols when doing case insensitive compares.
18350         Thanks Dick! Fixes bug #54046.
18351
18352         * threads.c: surround 'threads' usage with enter/leave in
18353         mono_thread_manage.
18354
18355 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18356
18357         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
18358         implicitly marshalled as [Out]. Fixes #55450.
18359
18360         (mono_marshal_get_runtime_invoke): Zero out the result if there is
18361         an exception.
18362
18363 2004-03-16  Martin Baulig  <martin@ximian.com>
18364
18365         * class.c (mono_class_from_generic_parameter): Use the actual
18366         parameter name. 
18367
18368 2004-03-16  Martin Baulig  <martin@ximian.com>
18369
18370         * reflection.c (type_get_signature_size): New static function.
18371         Compues the size of the type in a method signature.
18372         (method_get_signature_size): New static function; calls
18373         type_get_signature_size() to compute the actual size of the
18374         method's signature.
18375         (method_encode_signature): Use method_get_signature_size() to get
18376         the signature's size rather than using `nparams * 10'.
18377
18378 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18379
18380         * file-io.h: define here WapiOverlapped on windows. I don't want the
18381         regular OVERLAPPED one.
18382
18383         * file-io.c:
18384         * threadpool.c: somehow, BindIoCompletionCallback is not found.
18385         Disabling AIO on windows.
18386
18387 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18388
18389         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
18390         bug #55385.
18391
18392 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18393
18394         * appdomain.c: upgraded corlib version.
18395
18396         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
18397         and BeginWrite. Allow opening files for asynchrnous operations.
18398
18399         * file-io.h: new struct that maps FileStreamAsyncResult.
18400         * icall.c: added new icalls.
18401         * process.[ch]: support setting child process environment variables
18402         and use the SHELL or COMSPEC when UseShellExecute is true.
18403
18404         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
18405         callback for async. IO is here and also BindHandle.
18406
18407         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
18408         from here.
18409
18410 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18411
18412         * reflection.c (create_custom_attr): Allow len == 0.
18413
18414         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
18415         computation on big-endian machines.
18416
18417 2004-03-13  Martin Baulig  <martin@ximian.com>
18418
18419         * class.h (MonoGenericInst): Added `int count_ifaces'.
18420
18421         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
18422         `ginst->count_ifaces' instead `klass->interface_count' since we
18423         may get called before the vtable is created.
18424
18425         * loader.c (mono_method_get_param_names): If we're a generic
18426         instance, return and don't initialize the class.
18427
18428         * reflection.c (mono_reflection_setup_generic_class): Don't call
18429         ensure_runtime_vtable().
18430         (mono_reflection_bind_generic_parameters): Set
18431         `ginst->count_ifaces'.
18432
18433 2004-03-11  Jackson Harper <jackson@ximian.com>
18434
18435         * icall.c:
18436         * unicode.c:
18437         * unicode.h: Remove unused System.Char icalls.
18438         
18439 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
18440
18441         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
18442         code when we P/Invoke the first library in Windows.Forms, instead
18443         of when we first open the assembly.
18444
18445         * assembly.c: Drop the lookup from here.
18446
18447 2004-03-10  Martin Baulig  <martin@ximian.com>
18448
18449         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
18450         class for properties, fields and events.  Finally fixes #54945.
18451
18452 2004-03-10  Martin Baulig  <martin@ximian.com>
18453
18454         * metadata.c (mono_metadata_class_equal): New static function;
18455         checks whether two generic instances or two generic parameters are
18456         equal.
18457         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
18458         compare classes.        
18459
18460 2004-03-10  Martin Baulig  <martin@ximian.com>
18461
18462         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
18463
18464         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
18465         argument and write it into the `reflection_info' field.
18466
18467         * icall.c
18468         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
18469         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
18470
18471 2004-03-09  Jackson Harper  <jackson@ximian.com>
18472
18473         * char-conversions.h: use 8 bits for numeric data its all we need
18474         * icall.c: numeric data is only 8 bits now.
18475
18476 2004-03-09  Martin Baulig  <martin@ximian.com>
18477
18478         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
18479
18480         * class.c (init_properties, init_events): Initialize the new
18481         `parent' field.
18482
18483         * reflection.c (typebuilder_setup_properties): Likewise.
18484         (typebuilder_setup_events): Likewise.
18485
18486         * reflection.h (MonoEventInfo): Replaced `parent with
18487         `declaring_type' and `reflected_type'.
18488
18489         * icall.c (ves_icall_get_property_info): Distinguish between
18490         declaring and reflected type.
18491         (ves_icall_get_event_info): Likewise.
18492
18493 2004-03-09  Martin Baulig  <martin@ximian.com>
18494
18495         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
18496         (ves_icall_Type_GetField): Correctly set field->klass.
18497
18498 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18499
18500         * loader.h: Fix warning.
18501
18502 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
18503
18504         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
18505         library routine if present.  Notice that it will still continue
18506         executing even if its missing, for those working on the Gtk#
18507         edition of Windows.Forms.
18508
18509         * assembly.c (do_mono_assembly_open): If loading the
18510         System.Windows.Forms call mono_loader_wini_init.
18511
18512 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18513
18514         * class.h: Added MonoRemoteClass struct.
18515         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
18516         function for MonoStrings.
18517         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
18518         Added internal call for getting the proxy type.
18519         * marshal.c: Get the type of transparent proxies from its remote_class.
18520         Added methods that generate the IL for type checks and casts:
18521         mono_marshal_get_isinst, mono_marshal_get_castclass, 
18522         mono_marshal_get_proxy_cancast.
18523         * marshal.h: Declaration of the previous new methods.
18524         * object.c: Added new moethods for creating and updating MonoRemoteClass
18525         instances: mono_remote_class, mono_upgrade_remote_class, 
18526         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
18527         * verify.c: FIx transparent_proxy_fields layout.
18528         * appdomain.c: Bump corlib version.
18529
18530 2004-03-04  Jackson Harper  <jackson@ximian.com>
18531
18532         * icall.c: Add icall to access char conversion tables.
18533         * char-conversions.h: Character conversion tables.
18534         * Makefile.am: Add char-conversions.h private header file.
18535         
18536 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
18537
18538         * appdomain.c (unload_thread_main): Increase unloading timeout to
18539         10 sec as a temporary workaround for Nant problems.
18540
18541 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
18542
18543         * gc.c: Add checks for GC_enable and GC_disable.
18544
18545         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
18546         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
18547         (bug #54988).
18548         
18549 2004-02-27  Martin Baulig  <martin@ximian.com>
18550
18551         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18552         `MonoReflectionType *' instead of a `MonoType *'.
18553
18554 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * gc.c (run_finalize): Avoid finalizing the object representing the
18557         finalizer thread.
18558         (finalizer_thread): Fix warning.
18559
18560 2004-02-25  Martin Baulig  <martin@ximian.com>
18561
18562         * class.c (_mono_class_get_instantiation_name): Added `int offset'
18563         argument for nested types.
18564         (mono_class_create_generic): Added support for nested generictypes.
18565
18566         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
18567         `GList *nested'.
18568
18569         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
18570
18571         * reflection.c (method_encode_signature): Increase the minimum
18572         value of `size' from 10 to 11.
18573         (mono_reflection_bind_generic_parameters): Take `int type_argc'
18574         and `MonoType **types' arguments instead of the `MonoArray
18575         *types'; added `MonoType *nested_in'.  Recursively instantiate
18576         nested classes. 
18577
18578 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
18581         stack_overflow_ex members which are used by exception handling.
18582
18583         * appdomain.c (mono_runtime_init): Initialize the new members.
18584
18585         * gc.c (mono_gc_enable): New helper function.
18586         * gc.c (mono_gc_disable): New helper function.
18587
18588 2004-02-23  Martin Baulig  <martin@ximian.com>
18589
18590         * icall.c: I must have been really stupid - make it actually work
18591         this time ;-)
18592
18593 2004-02-23  Martin Baulig  <martin@ximian.com>
18594
18595         * loader.c (method_from_memberref): Only inflate the method if
18596         it's in another klass.
18597
18598 2004-02-23  Martin Baulig  <martin@ximian.com>
18599
18600         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
18601         (mono_class_init): If we're a generic instance and an interface,
18602         compute `class->interface_id'; also create `class->interfaces'
18603         here and inflate them.
18604
18605         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
18606         `ginst->is_open'.
18607         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
18608
18609         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
18610
18611 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
18612
18613         * reflection.c (method_encode_code): Improved the error message
18614         generated by the exception.
18615
18616 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18617
18618         * icall.c: Martin did not do what he said in the ChangeLog for
18619         2004-02-18, but put back the changes for properties and events.
18620         Commenting those changes out again and adding comment to bug #54518.
18621         
18622         * process.c: removed warning.
18623
18624 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * marshal.c (emit_struct_conv): Print an error message instead of
18627         asserting when a type does not have the StructLayout attribute.
18628
18629 2004-02-20  Martin Baulig  <martin@ximian.com>
18630
18631         * reflection.c (mono_type_get_object): Also use the cache for
18632         generic instances.
18633         (mono_reflection_bind_generic_parameters): Always compute
18634         `ginst->ifaces'.        
18635
18636 2004-02-20  Martin Baulig  <martin@ximian.com>
18637
18638         * class.h (MonoGenericMethod): Removed `klass'.
18639
18640         * class.c (mono_class_inflate_generic_method): Added `MonoClass
18641         *klass' argument.
18642
18643 2004-02-20  Martin Baulig  <martin@ximian.com>
18644
18645         * reflection.c (method_encode_methodspec): Actually use the
18646         uninflated signature for the memberref.
18647
18648 2004-02-20  Martin Baulig  <martin@ximian.com>
18649
18650         * class.h (MonoGenericMethod): Removed `declaring'.
18651
18652         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
18653         is NULL, compute it here.
18654
18655 2004-02-20  Martin Baulig  <martin@ximian.com>
18656
18657         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
18658
18659         * metadata.c (mono_metadata_generic_inst_hash): New method.
18660         (mono_metadata_generic_inst_equal): New method.
18661
18662         * reflection.c (mono_reflection_bind_generic_parameters): Use the
18663         `klass->image->generic_inst_cache' cache to avoid creating
18664         duplicate MonoGenericInst's.
18665
18666         * class.c (mono_class_inflate_generic_type): Use the cache.
18667
18668 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18669
18670         * object.c: fixed gc descriptor calculation for embedded valuetypes.
18671
18672 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18673
18674         * icall.c: added Socket.WSAIoctl icall.
18675
18676         * socket-io.[ch]: implemented
18677         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
18678
18679 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
18680
18681         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
18682
18683 2004-02-18  Urs C Muff  <umuff@quark.com>
18684
18685         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
18686         this work on PPC and other big-endian architectures.
18687
18688         * debug-mono-symfile.h: Prepended the names of all the `guint32'
18689         fields with an underscore to make sure they're only accessed by
18690         the read32() macro.
18691
18692 2004-02-18  Martin Baulig  <martin@ximian.com>
18693
18694         * icall.c: Put the klass->refclass changes back for methods and
18695         fields, but not for properties and events.  We're currently not
18696         distinguishing between DeclaringType and ReflectedType for
18697         properties and events, that's what caused the regressions.
18698
18699 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18700
18701         * object.c:
18702         (mono_async_result_new): the handle can be NULL.
18703
18704         * threadpool.c: Use an event instead of a semaphore, don't initialize
18705         it until needed. This saves quite a few semaphores from being created
18706         when using the threadpool.
18707
18708 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
18709
18710         * object.c (mono_string_is_interned_lookup): Fix interning of long
18711         strings. Fixes #54473.
18712
18713         * domain.c (ldstr_equal): Optimize if the two strings are equal.
18714
18715         * icall.c: Revert the klass->refclass changes since they introduce
18716         regressions (bug #54518).
18717
18718 2004-02-18  Martin Baulig  <martin@ximian.com>
18719
18720         * class.c (mono_class_init): If we're a generic instance and don't
18721         come from a TypeBuilder, inflate our members here.
18722         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
18723         (mono_class_create_generic): New public method.
18724         (mono_class_initialize_generic): Removed.
18725         (get_instantiation_name): Renamed to
18726         _mono_class_get_instantiation_name() and made it public.
18727
18728 2004-02-18  Martin Baulig  <martin@ximian.com>
18729
18730         * class.c (mono_class_inflate_generic_type): Clear the new
18731         instance's `nginst->klass' when inflating a generic instance.
18732         (mono_class_is_subclass_of): Added (basic) support for generic
18733         instances.
18734
18735 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
18736
18737         * appdomain.h, domain.c: use a MonoCodeManager instead of a
18738         MonoMempool to hold compiled native code.
18739
18740 2004-02-17  Martin Baulig  <martin@ximian.com>
18741
18742         * class.h (MonoDynamicGenericInst): Added `count_properties' and
18743         `properties'.
18744
18745         * reflection.c (mono_reflection_generic_inst_initialize): Added
18746         `MonoArray *properties' argument.
18747
18748         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
18749
18750 2004-02-17  Martin Baulig  <martin@ximian.com>
18751
18752         * icall.c (ves_icall_Type_GetFields): Renamed to
18753         ves_icall_Type_GetFields_internal() and added a
18754         `MonoReflectionType *rtype' argument; pass it to
18755         mono_field_get_object() to set the field's "reflected" type.
18756         (ves_icall_Type_GetConstructors): Likewise.
18757         (ves_icall_Type_GetEvents): Likewise.
18758         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
18759         argument; pass it to mono_method_get_object() to set the method's
18760         "reflected" type.       
18761
18762 2004-02-17  Martin Baulig  <martin@ximian.com>
18763
18764         * class.h (MonoDynamicGenericInst): New type.
18765         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
18766
18767         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
18768         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
18769         (ves_icall_MonoGenericInst_GetFields): New interncall.
18770
18771         * class.c (mono_class_from_generic): Don't call
18772         mono_class_initialize_generic() if this is a dynamic instance;
18773         ie. it's being created from a TypeBuilder.
18774         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
18775         `class->byval_arg.type'.
18776
18777         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
18778         to `inflate_method' and made static.
18779         (mono_reflection_inflate_field): Removed.
18780         (mono_reflection_generic_inst_initialize): New public method.
18781
18782         * reflection.h (MonoReflectionGenericInst): Removed `methods',
18783         `ctors' and `fields'; added `initialized'.
18784
18785 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * debug-helpers.c (mono_method_full_name): Fix output for empty
18788         namespaces.
18789
18790 2004-02-12  Martin Baulig  <martin@ximian.com>
18791
18792         * class.h (MonoClassField): Added `MonoType *generic_type'.
18793
18794         * reflection.c (mono_image_get_fieldref_token): Added support for
18795         instantiated generic types.
18796         (field_encode_inflated_field): Removed.
18797         (mono_image_get_inflated_field_token): Removed.
18798         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
18799
18800         * reflection.h (MonoReflectionInflatedField): Removed.
18801
18802 2004-02-12  Martin Baulig  <martin@ximian.com>
18803
18804         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
18805         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
18806
18807         * reflection.c (mono_image_get_methodspec_token): Take a
18808         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
18809         (mono_image_create_token): Check whether we have a
18810         `method->signature->gen_method' and call
18811         mono_image_get_methodspec_token() if appropriate.
18812         (inflated_method_get_object): Removed.
18813         (mono_reflection_bind_generic_method_parameters): Return a
18814         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
18815         (mono_reflection_inflate_method_or_ctor): Likewise.
18816
18817         * reflection.h (MonoReflectionInflatedMethod): Removed.
18818
18819 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
18822         for custom valuetype marshalling.
18823
18824         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
18825
18826 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18827
18828         * icall.c: fixed WSAGetLastError_internal name.
18829
18830 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18831
18832         * threads.c (mono_thread_attach): Allow this to be called multiple
18833         times for a thread.
18834         
18835         * threads.c (build_wait_tids): Do not wait for ourselves.
18836
18837         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
18838         appdomain list is empty.
18839
18840         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
18841         memory returned by mono_string_builder_to_utf16, since it points into
18842         managed memory. Thanks to Bernie Solomon for noticing this.
18843
18844         * icall.c: Add AppDomainSetup icalls.
18845
18846         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
18847
18848         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
18849         types.
18850
18851         * reflection.c (reflection_methodbuilder_to_mono_method): Save
18852         custom attributes to the method_aux struct. Also fix array indexes etc.
18853
18854         * loader.c (mono_method_get_param_names): Make dynamic case work again.
18855         
18856 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
18857
18858         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
18859         (both static and runtime) and reduce startup time.
18860
18861 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18862
18863         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
18864         AsAny marshalling conversion instead of crashing.
18865
18866         * marshal.c: Fix warnings.
18867
18868 2004-02-09  Martin Baulig  <martin@ximian.com>
18869
18870         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
18871
18872         * reflection.h (MonoReflectionInflatedMethod): Removed the
18873         `declaring' field, it's now in the unmanaged MonoGenericMethod.
18874
18875         * reflection.c (method_encode_methodspec): Removed the `method'
18876         argument; we get it from `gmethod->declaring'.
18877         (inflated_method_get_object): Removed the `declaring' argument.
18878
18879 2004-02-09  Martin Baulig  <martin@ximian.com>
18880
18881         * class.h (MonoGenericMethod): New type.
18882         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
18883         `generic_method'.
18884
18885         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
18886         a `MonoGenericMethod *gen_method' one.
18887
18888         * class.c (mono_class_inflate_generic_type): Take an additional
18889         `MonoGenericMethod * argument.  This is only non-NULL if we're
18890         inflating types for a generic method.   
18891         (mono_class_inflate_generic_signature): Renamed to
18892         inflate_generic_signature() and made static; take a
18893         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18894         (inflate_generic_header): Take a `MonoGenericMethod *' argument
18895         instead of a `MonoGenericInst *' one.
18896         (mono_class_inflate_generic_method): Likewise.
18897
18898         * reflection.c (encode_generic_method_sig): Take a
18899         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18900         (method_encode_methodspec): Likewise.
18901         (inflated_method_get_object): Likewise. 
18902
18903         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
18904         field with a `MonoGenericMethod *gmethod' one.  
18905
18906 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
18907
18908         * class.h (mono_class_has_parent): add parens to expansion
18909         so you can ! this.
18910
18911 2004-02-08  Martin Baulig  <martin@ximian.com>
18912
18913         * image.h (MonoImage): Removed `generics_cache'.
18914
18915         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
18916         instead of a `MonoType *' argument; removed the `inflate_methods'
18917         argument.  Don't inflate methods here.
18918
18919         * loader.c (find_method): If it's a generic instance, call
18920         mono_class_init() on the `sclass->generic_inst->generic_type'.
18921
18922         * metadata.c (mono_type_size): Make this work on uninitialized
18923         generic instances; call it on the `ginst->generic_type's class.
18924
18925         * reflection.c (mono_reflection_bind_generic_parameters): Call
18926         mono_class_from_generic() to create the `ginst->klass'.
18927
18928 2004-02-08  Martin Baulig  <martin@ximian.com>
18929
18930         * class.h (MonoClass): Changed type of `generic_inst' from
18931         `MonoType *' to `MonoGenericInst *'.
18932
18933 2004-02-08  Martin Baulig  <martin@ximian.com>
18934
18935         * icall.c (ves_icall_Type_BindGenericParameters): Just call
18936         mono_type_get_object(), this is now creating a `MonoGenericInst'
18937         for MONO_TYPE_GENERICINST.
18938         (ves_icall_MonoGenericInst_GetParentType): Likewise.
18939         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
18940
18941         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
18942         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
18943         (inflated_method_get_object): Added `MonoClass *refclass' argument.
18944         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
18945         and reflected type.
18946
18947         * reflection.h (MonoReflectionInflatedMethod): Removed
18948         `declaring_type' and `reflected_type'.
18949
18950 2004-02-08  Martin Baulig  <martin@ximian.com>
18951
18952         * class.h (MonoGenericInst): Added `MonoType *parent' and
18953         `MonoType **ifaces'.
18954
18955         * reflection.h (MonoReflectionGenericInst): Removed `klass',
18956         `parent' and `interfaces'.
18957
18958         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18959         `MonoType *' argument and return a `MonoType *'.
18960
18961         * icall.c
18962         (ves_icall_MonoGenericInst_GetParentType): New interncall.
18963         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
18964
18965 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
18968         valuetype marshalling.
18969
18970 2004-02-06  Martin Baulig  <martin@ximian.com>
18971
18972         * class.c
18973         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
18974         (my_mono_class_from_generic_parameter): Likewise.
18975
18976 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18977
18978         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
18979         contents of the symbol files lazily.
18980
18981         * object.h (MonoThread): Add 'name' and 'name_len' fields.
18982
18983         * threads.h threads.c icall.c: New icalls for getting and setting the
18984         threads name.
18985
18986 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
18987
18988         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
18989         Raise an exception when the domain is not found.
18990
18991 2004-02-03  Martin Baulig  <martin@ximian.com>
18992
18993         * reflection.c (mono_image_get_methodspec_token): Use the
18994         uninflated signature; fixes gen-33.
18995
18996 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18997
18998         * gc.c threads.c: Make the finalizer thread a normal managed thread so
18999         the finalizer code can use thread functionality.
19000
19001         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
19002         the finalizer thread.
19003
19004         * threads.c: Make some functions more robust.
19005
19006         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
19007
19008         * metadata.h: Add new marshalling conventions.
19009
19010         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
19011         stringbuilder marshalling. Fixes #53700.
19012
19013         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
19014
19015         * reflection.c (mono_image_get_type_info): Save declarative security
19016         info.
19017
19018         * reflection.c (mono_image_get_field_info): Handle uninitialized 
19019         unmanaged fields as well.
19020
19021         * appdomain.c: Bump corlib version.
19022
19023 2004-02-01  Martin Baulig  <martin@ximian.com>
19024
19025         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
19026         method type arguments.  
19027
19028 2004-01-30  Duncan Mak  <duncan@ximian.com>
19029
19030         * marshal.h: Add prototype for
19031         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
19032         and
19033         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
19034         fix the build.
19035
19036 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
19039         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
19040
19041 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * marshal.c (mono_marshal_get_native_wrapper): Add support for
19044         custom marshalling of valuetypes.
19045
19046         * marshal.c: Fix some warnings.
19047
19048 2004-01-29  Martin Baulig  <martin@ximian.com>
19049
19050         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
19051         for generic method parameters.
19052
19053         * reflection.c (method_encode_methodspec): Write the uninflated
19054         signature into the methodspec table.
19055         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
19056         is always the uninflated method.
19057         (reflection_methodbuilder_to_mono_method): Copy the generic
19058         parameters from the MethodBuilder into `header->gen_params'.
19059
19060 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
19061
19062         * class.c (mono_class_from_generic_parameter): Fix warning.
19063
19064 2004-01-27  Martin Baulig  <martin@ximian.com>
19065
19066         * class.c (mono_class_from_generic_parameter): Don't create
19067         `klass->methods' here.  
19068
19069 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
19072         extension since it does not work with libraries named lib<FOO>.dll.so.
19073
19074 2004-01-25  Martin Baulig  <martin@ximian.com>
19075
19076         * class.c (mono_class_inflate_generic_type): Added support for
19077         MONO_TYPE_GENERICINST.
19078
19079         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
19080         inflate methods on open constructed types.      
19081
19082 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19083
19084         * object.c: fire ProcessExit event in the root AppDomain after running
19085         Main. Fixes bug #53299.
19086
19087 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19088
19089         * socket-io.c: include the new socket-wrappers.h header.
19090         Use the wrappers instead of the unix socket functions to make the code
19091         more clear.
19092
19093 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
19096
19097         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19098         Fixes #22532.
19099
19100 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
19101
19102         * reflection.c (mono_image_create_pefile): Handle the case when the
19103         entry point is not a MethodBuilder.
19104
19105         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19106         field to ReflectionMethod since it is not allways a builder.
19107
19108         * reflection.c (type_get_fully_qualified_name): New helper function to
19109         return the fully qualified name of a type.
19110
19111         * reflection.c (encode_marshal_blob): Always emit the fully qualified
19112         type name for custom marshallers.
19113
19114         * reflection.c (mono_marshal_spec_from_builder): Ditto.
19115
19116         * class.c (mono_class_setup_vtable): If a parent class already 
19117         implements an interface, use the implementing methods from that class.
19118         Fixes #53148.
19119
19120 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19121
19122         * threadpool.c: just return instead of ExitThread to allow for thread
19123         clean up earlier.
19124
19125 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
19128         when closing resource modules.
19129
19130         * reflection.c (mono_image_create_pefile): Handle the case when the
19131         entry point is not a MethodBuilder.
19132
19133         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19134         field to ReflectionMethod since it is not allways a builder.
19135
19136 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
19137
19138         * marshal.c (mono_marshal_get_managed_wrapper): 
19139         mono_marshal_alloc takes native int so CONV_I
19140         the arg for 64bits.
19141
19142 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
19143
19144         * reflection.c (fixup_cattrs): New function to fixup the methoddef
19145         tokens in the cattr table. Fixes #53108.
19146
19147 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19148
19149         * loader.c: don't trim ".dll" before looking up in the config file.
19150         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
19151
19152 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
19155         Return the module which contains the resource as well.
19156         (ves_icall_System_Reflection_Module_Close): New icall.
19157
19158         * appdomain.c: Bump corlib version number.
19159
19160         * image.c (mono_image_addref): New public function.
19161
19162         * assembly.c: Call mono_image_addref.
19163
19164         * reflection.c (mono_module_get_object): Increase reference count of 
19165         the image.
19166
19167         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19168         Fixes #22532.
19169
19170         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
19171         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
19172         proper exceptions on DllImport problems.
19173
19174 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
19175
19176         * class.c, metadata.c: eliminate CSIZE macro.
19177
19178 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
19179
19180         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
19181         * object.h: Added async_callback field in MonoAsyncResult.
19182         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
19183         * verify.c: Added async_callback in MonoAsyncResult layout.
19184
19185 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
19186
19187         * reflection.c (mono_reflection_get_custom_attrs): Add support
19188         for Modules.
19189
19190 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
19193         marshalling.
19194         (mono_marshal_method_from_wrapper): Add null pointer check.
19195
19196 2004-01-16  Martin Baulig  <martin@ximian.com>
19197
19198         * debug-mono-symfile.h: Set version number to 36 and reflect
19199         latest symbol writer changes.
19200
19201 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19202
19203         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
19204         multi-dimensional arrays.
19205         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
19206         (mono_class_from_mono_type): Use bounded_array_class_get.
19207         
19208         * class.c (mono_bounded_array_class_get): New function which takes
19209         a 'bounded' bool argument to distinguish vectors from one dimensional
19210         arrays.
19211
19212         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
19213         bounded_array_class_get if the array has bounds.
19214
19215         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19216         Search modules loaded using AssemblyBuilder:AddModule as well.
19217
19218 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19219
19220         * appdomain.c: increased corlib version.
19221         * filewatcher.c: removed g_print.
19222         * icall.c:
19223         (get_property_info): only allocate what is actually requested.
19224         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
19225
19226 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19227
19228         * Makefile.am: added filewatcher.[ch]
19229         * filewatcher.[ch]: FileSystemWatcher runtime support.
19230         * icall.c: added new FSW icalls.
19231
19232 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19233
19234         * string-icalls.c: fix stringbuilder regression as suggested by
19235         Iain McCoy <iain@mccoy.id.au>.
19236
19237 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * process.c (process_read_stringtable_block): Recognize '007f' as
19240         a language neutral stringtable block.
19241
19242 2004-01-12  Patrik Torstensson
19243
19244         * object.h (MonoStringBuilder) : Changed layout to support our
19245         new stringbuilder class.
19246         * marshal.c: Change marshalling to support the new layout of 
19247         string builder.
19248         * appdomain.c: increased version number because new layout of
19249         string builder.
19250
19251 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
19254         assembly name as an string instead of an AssemblyName, since it is
19255         easier to extract info from it.
19256
19257         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
19258         the culture subdirectories too. Fixes #52231.
19259
19260 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19261
19262         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
19263         It takes 2 new parameters with an optional name for the method to look
19264         for and case ignoring info.
19265
19266         * threadpool.c: removed unused variable.
19267
19268 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19269
19270         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
19271         It takes 2 new parameters with an optional name for the property to look
19272         for and case ignoring info.
19273         Fixes bug #52753.
19274
19275 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
19278         Fix #52451.
19279
19280 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19281
19282         * appdomain.c:
19283         * assembly.c: escape the uri before passing it to g_filename_from_uri.
19284         Fixes bug #52630.
19285
19286 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * reflection.c: Add support for more than one unmanaged resource.
19289
19290         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
19291         in field->def_value, as done in all other cases.
19292
19293         * reflection.c (mono_reflection_get_custom_attrs): Add support for
19294         TypeBuilders.
19295
19296         * reflection.c (mono_reflection_create_runtime_class): Remove 
19297         errorneous assignment to klass->element_class, since it is already
19298         done in mono_reflection_setup_internal_class.
19299
19300 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19301
19302         * gc.c: added missing LeaveCriticalSection.
19303         * icall.c: indented a couple of lines.
19304         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
19305         if we call EndInvoke inside a callback. Fixes bug #52601.
19306
19307 2004-01-07  Martin Baulig  <martin@ximian.com>
19308
19309         * mono-debug-debugger.h
19310         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
19311
19312 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
19313
19314         * appdomain.c: Use messages in NotImplementedException.
19315
19316         * exception.c (mono_get_exception_not_implemented): Now this takes
19317         a message argument.
19318
19319         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
19320         exception instead of g_asserting an aborting when something is not
19321         implemented.
19322
19323         Add some inline docs.
19324
19325 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * reflection.h: Update after changes to object layout.
19328
19329         * reflection.c: Implement saving of unmanaged aka win32 resources.
19330
19331         * appdomain.c: Bump version number.
19332
19333         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
19334         Handle missing domains gracefully.
19335
19336 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
19337
19338         * file-io.c : On Windows, there are much more invalid_path_chars.
19339
19340 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19341
19342         * class.h, object.c: prepare for GetType () speedup.
19343
19344 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
19345
19346         * profiler.c: workaround for --profile null reference exception on
19347           cygwin. Patch by Patrik Torstensson.
19348
19349 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
19350
19351         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
19352         make work for unaligned access.
19353
19354 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
19355
19356         * class.c: small cleanup (class->fields [i] -> field).
19357         * image.c: check address of metadata is valid.
19358
19359 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * assembly.h assembly.c (mono_assembly_loaded): New public function to
19362         search the list of loaded assemblies.
19363
19364         * reflection.c (mono_reflection_type_from_name): Use 
19365         mono_assembly_loaded instead of mono_image_loaded.
19366
19367         * reflection.c: Fix warnings.
19368
19369 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
19372         is dynamic. This is needed since an assembly can contain both dynamic and
19373         non-dynamic images.
19374
19375         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
19376         assembly->dynamic.
19377
19378         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
19379
19380         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
19381         to store modules loaded using AddModule.
19382
19383         * reflection.c (mono_image_fill_file_table): Generalize this so it works
19384         on Modules.
19385
19386         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
19387
19388         * reflection.c (mono_image_fill_export_table_from_module): New function to
19389         fill out the EXPORTEDTYPES table from a module.
19390
19391         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
19392         into a separate function. Also handle loaded non-dynamic modules.
19393
19394         * reflection.c (mono_image_basic_init): Fix memory allocation.
19395
19396         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19397
19398         * assembly.c (mono_assembly_load_references): Make this public.
19399
19400 2003-12-19  Martin Baulig  <martin@ximian.com>
19401
19402         * class.c (mono_class_initialize_generic): Made this static, take
19403         a `MonoGenericInst *' instead of a `MonoClass *'.
19404         (mono_class_from_generic): Call mono_class_initialize_generic()
19405         unless we're already initialized or being called from
19406         do_mono_metadata_parse_generic_inst().
19407
19408         * class.h (MonoGenericInst): Added `initialized' and
19409         `init_pending' flags.
19410
19411         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
19412         `mono_class_init (gklass)' or mono_class_initialize_generic()
19413         here; set `generic_inst->init_pending' while parsing the
19414         `type_argv'.
19415
19416 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
19417
19418         * locales.c: include string.h for memxxx prototypes
19419
19420 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19421
19422         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
19423         constructor when accessing literal fields.
19424
19425 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19428
19429         * reflection.c (assembly_add_resource_manifest): New function to fill
19430         the MANIFESTRESOURCE table.
19431
19432         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
19433
19434         * reflection.h: Update to changes in class layout.
19435
19436         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
19437         Reenable call to mono_runtime_is_shutting_down ().
19438
19439         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
19440         determine if the runtime is shutting down.
19441
19442 2003-12-16  Jackson Harper <jackson@ximian.com>
19443
19444         * icall.c: comment out call to mono_runtime_is_shutting_down to
19445         fix build.
19446         
19447 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
19448
19449         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
19450         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
19451
19452 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
19453
19454         * reflection.c: move definition of swap_with_size
19455         to before its first call
19456
19457 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
19458
19459         * appdomain.c (mono_runtime_is_shutting_down): New public function.
19460
19461         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
19462         icall.
19463
19464         * object.c: Fix warnings.
19465
19466         * icall.c (ves_icall_Type_Get...): Only consider inherited static
19467         members if FlattenHierarchy is set.
19468
19469         * reflection.c (mono_image_add_decl_security): New function to emit
19470         declarative security.
19471
19472         * reflection.h reflection.c: Add support for declarative security.
19473
19474         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19475         
19476 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19479         
19480         * appdomain.c verify.c: Moved corlib version checking into its own
19481         function in appdomain.c since it needs to create vtables etc.
19482
19483 2003-12-13  Patrik Torstensson <p@rxc.se>
19484
19485         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
19486         instead of unwrapped server.
19487
19488 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * verify.c (check_corlib): Fix field index.
19491
19492 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
19493
19494         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
19495         GetGacPath icall.
19496
19497 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
19498
19499         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
19500         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
19501         cope with sizeof(size_t) != sizeof(guint32).
19502
19503 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19504
19505         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
19506         in case of failure.
19507
19508 2003-12-10  Mark Crichton <crichton@gimp.org>
19509
19510         * icall.c: removed the GetNonZeroBytes.  We now handle this case
19511         in managed code.
19512
19513         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
19514
19515 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
19516
19517         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
19518         marked as deleted.
19519
19520 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * verify.c (check_corlib): Handle the case when the version field is 
19523         initialized by a static constructor.
19524
19525 2003-12-08  Patrik Torstensson  <p@rxc.se>
19526
19527     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
19528
19529 2003-12-08  Martin Baulig  <martin@ximian.com>
19530
19531         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
19532         a MonoReflectionGenericParameter, also take the parameter index
19533         and name as arguments.
19534         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
19535         (ves_icall_MonoGenericParam_initialize): New interncall.
19536         (ves_icall_Type_make_byref_type): New interncall.
19537
19538         * reflection.h (MonoReflectionGenericParam): Derive from
19539         MonoReflectionType, not just from MonoObject.  Added `refobj' and
19540         `index' fields.
19541
19542         * reflection.c (mono_reflection_define_generic_parameter): Create
19543         and return a new MonoReflectionGenericParam; don't initialize the
19544         constraints here.
19545         (mono_reflection_initialize_generic_parameter): New public method;
19546         initializes the constraints and creates the `param->pklass'.
19547
19548 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * reflection.h reflection.c: Use the new fields 'num_types', 
19551         'num_fields' and 'num_methods' to track the number of types etc.
19552
19553         * verify.c (check_corlib): Check corlib version number.
19554
19555 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
19558         function works on all methods.
19559
19560 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19561
19562         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
19563         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
19564         the custom_type_info flag of the transparent proxy.
19565         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
19566         objects that supports IRemotingTypeInfo.
19567         * object.h: Added custom_type_info field in transparent proxy.
19568
19569 2003-12-06  Martin Baulig  <martin@ximian.com>
19570
19571         * class.c (mono_class_create_from_generic): Removed.
19572         (mono_class_from_generic): Check `ginst->klass' before doing
19573         anything else.  This is important to fully support "recursive"
19574         generic types.
19575
19576         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
19577         empty `generic_inst->klass' before doing anything else.
19578
19579 2003-12-06  Dick Porter  <dick@ximian.com>
19580
19581         * verify.c: 
19582         * object.h:
19583         * icall.c:
19584         * locales.c: Use C structs to access class fields.  Don't do a
19585         conversion between MonoString and UChar because both are
19586         platform-endian UTF-16.  Compare now takes startindex and count
19587         parameters.  Add a char overload for IndexOf.  Speed up the
19588         invariant string IndexOf.
19589
19590 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * Makefile.am (monosn_LDADD): Fix parallel build.
19593
19594 2003-12-04  Martin Baulig  <martin@ximian.com>
19595
19596         * icall.c
19597         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19598         (ves_icall_Type_make_array_type): New interncall.       
19599
19600 2003-12-04  Martin Baulig  <martin@ximian.com>
19601
19602         * locales.c: also change it in the !HAVE_ICU case.
19603
19604 2003-12-04  Dick Porter  <dick@ximian.com>
19605
19606         * icall.c:
19607         * locales.c: construct_compareinfo is now in CompareInfo, not
19608         CultureInfo.
19609
19610 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * image.c (mono_image_load_file_for_image): Cache loaded images in the
19613         image->files array.
19614
19615         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
19616         table as well.
19617
19618         * assembly.c (mono_assembly_load_references): Only load references
19619         once.
19620
19621         * class.c (mono_class_from_name): Avoid linear search of the 
19622         EXPORTEDTYPE table.
19623
19624         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
19625
19626 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * image.h (MonoImage): Add 'field_cache' field.
19629
19630         * loader.c (mono_field_from_token): Cache field lookups.
19631         
19632         * reflection.c (mono_module_get_object): Fix name property.
19633
19634         * icall.c (ves_icall_get_enum_info): Update after changes to 
19635         mono_metadata_get_constant_index ().
19636
19637         * icall.c: Get rid of get_type_info icall, use a separate icall for
19638         each type property to avoid needless memory allocations. Fixes #51514.
19639
19640         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
19641         to avoid needless binary searches.
19642
19643         * class.c (class_compute_field_layout): Move the initialization of
19644         field->def_value to mono_class_vtable ().
19645
19646         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
19647         non-corlib types.
19648
19649         * object.c (mono_object_allocate): Make it inline.
19650
19651         * object.c (mono_object_allocate_spec): Make it inline.
19652         
19653 2003-12-02  Dick Porter  <dick@ximian.com>
19654
19655         * locales.c (create_NumberFormat): NumberFormatInfo construction.
19656         Patch by Mohammad DAMT (mdamt@cdl2000.com).
19657
19658 2003-12-01  Dick Porter  <dick@ximian.com>
19659
19660         * threads.c: Fix signature and call in CreateMutex and
19661         CreateEvent.
19662
19663 2003-12-01  Dick Porter  <dick@ximian.com>
19664
19665         * icall.c: 
19666         * locales.c: Implement string compares and searching
19667
19668         * object.h: Add extra Thread field
19669
19670 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
19671
19672         * reflection.c (fixup_method): Add support for MonoCMethod.
19673
19674 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
19677
19678         * reflection.c (assembly_name_to_aname): Allow extra characters in
19679         assembly names. Fixes #51468.
19680
19681 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * exception.c (mono_exception_from_name_domain): New helper function.
19684
19685         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
19686         exception object in the correct domain.
19687
19688         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
19689         formatting + make a copy a the input data.
19690
19691         * loader.c (mono_get_method_from_token): Methods which contain
19692         native code do not have entries in the ImplMap.
19693
19694         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
19695         Thanks to Gonzalo for spotting this.
19696         
19697         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
19698         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
19699
19700         * assembly.h (mono_assembly_load_from): Split the second part of 
19701         assembly loading into a new public function.
19702
19703         * exception.h (mono_get_exception_bad_image_format): New function.
19704
19705 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19708         Enumerate all modules inside a dynamic assembly. Fixes #51293.
19709         
19710         * icall.c: Add new icall for creating dynamic methods.
19711
19712         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
19713
19714         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
19715
19716         * reflection.c (mono_reflection_create_dynamic_method): New icall to
19717         create a dynamic method.
19718
19719         * reflection.c (resolve_object): New helper function.
19720
19721         * reflection.c: Generalize ReflectionMethodBuilder and the functions
19722         which manipulate it so they can also work on dynamic methods.
19723
19724         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
19725         creating the MonoReflectionMethodAux structure if it is not needed.
19726         
19727         * reflection.h verify.c: Update after changes to object layout.
19728
19729         * reflection.c (method_builder_encode_signature): Fix compilation on
19730         gcc 2.95.x.
19731
19732 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
19733
19734         * appdomain.h: Added support for context static fields. Added static_data
19735           field to MonoAppContext and renamed thread_static_fields to a more
19736           generic special_static_fields in MonoAppDomain, since it can now contain
19737           context static fields.
19738         * domain.c: Updated hashtable name.
19739         * object.c: Replaced field_is_thread_static() for a more generic
19740           field_is_special_static() which also checks for context static attribute.
19741           In mono_class_vtable(), added support for static context fields.
19742         * threads.c: Changed methods that manage thread static fields to more
19743           generic methods so they can be reused both for thread and context static
19744           data.
19745         * threads.h: Declared some new methods.
19746
19747 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * reflection.h: Update after changes to the managed types.
19750
19751         * reflection.c (encode_custom_modifiers): New helper function.
19752
19753         * reflection.c (method_encode_signature): Emit custom modifiers.
19754
19755         * reflection.c (field_encode_signature): Emit custom modifiers.
19756
19757 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
19760
19761         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
19762         implementation.
19763
19764         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
19765         icall.
19766
19767         * object.c (mono_field_get_value_object): New function.
19768
19769         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
19770         specific.
19771
19772 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
19775         return a preallocated out-of-memory exception instance.
19776
19777         * object.c (out_of_memory): Use the new function.
19778
19779         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
19780         flag is before the custom modifiers. Fixes #49802.
19781
19782 2003-11-16  Martin Baulig  <martin@ximian.com>
19783
19784         * class.c (mono_class_is_open_constructed_type): Implemented the
19785         MONO_TYPE_GENERICINST case.
19786
19787 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19788
19789         * assembly.c (mono_assembly_fill_assembly_name): New function to
19790         fill out the MonoAssemblyName structure.
19791         (mono_assembly_open): Use the new function.
19792
19793         * icall.c (fill_reflection_assembly_name): New helper function.
19794
19795         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
19796         new function.
19797
19798         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
19799
19800 2003-11-15  Martin Baulig  <martin@ximian.com>
19801
19802         * class.c (mono_class_is_open_constructed_type): New public
19803         function; checks whether a type is an open constructed type,
19804         ie. whether it still contains type parameters.
19805         (mono_class_inflate_generic_type): If we're a type parameter and
19806         the inflated type is also a MONO_TYPE_(M)VAR, return the original
19807         type.
19808
19809         * class.h (MonoGenericInst): Added `guint32 is_open'.
19810
19811         * loader.c (method_from_methodspec): Check whether we're an open
19812         or closed constructed type and set `ginst->is_open'.
19813
19814         * reflection.c (mono_reflection_bind_generic_parameters): Check
19815         whether we're an open or closed constructed type and set
19816         `ginst->is_open'.
19817         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
19818         from open constructed types.
19819
19820 2003-11-15  Martin Baulig  <martin@ximian.com>
19821
19822         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19823         a generic instance (instead of a generic type declaration) with
19824         unbound generic parameters, bind them to our actual types.
19825
19826 2003-11-14  Martin Baulig  <martin@ximian.com>
19827
19828         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
19829
19830         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19831         an interface type, populate `res->interfaces' with instantiated
19832         versions of all the interfaces we inherit.
19833
19834 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
19835
19836         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
19837         when MONO_PATH is set but doesn't contain the install dir.
19838
19839 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19840
19841         * icall.c:
19842         (ves_icall_Type_GetInterfaces): don't return an interface twice when
19843         it's also implemented in base classes. Fixes bug #50927.
19844
19845 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
19848         if this method is called from a finalizer. Fixes #50913.
19849
19850 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
19851
19852         * threads.c: Implement VolatileRead/VolatileWrite
19853
19854         * icall.c: Add new icalls for VolatileRead/VolatileWrite
19855
19856 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
19859         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
19860         2.95.3.
19861
19862         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
19863         from Peter Ross (pro@missioncriticalit.com).
19864         
19865 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
19866
19867         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
19868
19869 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19870
19871         * assembly.c (mono_assembly_load_references): Disable check because it
19872         triggers on older corlibs which lots of people have.
19873
19874 2003-11-12  Jackson Harper  <jackson@ximian.com>
19875
19876         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
19877         load corlib.dll if mscorlib.dll is not found.
19878         * assembly.h: Remove corlib name define.
19879         * class.c:
19880         * domain.c:
19881         * image.c: Change corlib name to mscorlib.
19882         
19883 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19884
19885         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
19886
19887 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
19888
19889         * appdomain.h: Added loader_optimization here to sync with the C#
19890         code, and add disallow_binding_redirects field.
19891
19892 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
19895
19896         * reflection.c (mono_image_build_metadata): Fix crash on modules
19897         with no types.
19898
19899         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
19900
19901         * icall.c (ves_icall_get_method_info): Return callingConvention as
19902         well.
19903
19904         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
19905         namespaces from the EXPORTEDTYPE table as well.
19906
19907         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
19908         from all modules inside the assembly.
19909         
19910 2003-11-11  Martin Baulig  <martin@ximian.com>
19911
19912         * reflection.c (mono_reflection_bind_generic_parameters): Make
19913         this work for interfaces.
19914
19915 2003-11-11  Martin Baulig  <martin@ximian.com>
19916
19917         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
19918
19919 2003-11-11  Martin Baulig  <martin@ximian.com>
19920
19921         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
19922         "MonoInflatedMethod" and "MonoInflatedCtor".
19923
19924 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * reflection.c (resolution_scope_from_image): Use the assembly table
19927         from the manifest module, since other modules don't have it.
19928
19929         * debug-helpers.c (mono_type_full_name): New helper function.
19930
19931         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
19932
19933         * image.c (mono_image_load_file_for_image): New public function which
19934         is a replacement for the load_file_for_image in class.c.
19935
19936         * assembly.c (mono_assembly_load_module): A wrapper for the function
19937         above which does assembly association and reference loading too.
19938
19939         * class.c (mono_class_from_name): Call mono_assembly_load_module.
19940
19941 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19942
19943         * appdomain.c: not all of the attributes for the full assembly name
19944         are required and the order doesn't matter. Fixes bug #50787.
19945
19946 2003-11-10  Dick Porter  <dick@ximian.com>
19947
19948         * locales.c: Use platform-endian UTF16
19949
19950 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19953         
19954 2003-11-10  Martin Baulig  <martin@ximian.com>
19955
19956         * metadata.c
19957         (mono_metadata_load_generic_params): Make this actually work.
19958
19959         * reflection.c (mono_reflection_bind_generic_parameters): If our
19960         parent is a generic instance, pass all the `types' to it, no
19961         matter whether it has the same number of type parameters or not.
19962
19963 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19966
19967         * assembly.c (mono_assembly_load_references): Move the image<->assembly
19968         assignment code to this function so it gets called recursively for all
19969         modules.
19970
19971         * image.c (load_modules): Remove the assembly assignment since it is
19972         now done by mono_assembly_load_references.
19973         
19974         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19975         Add 'module' argument.
19976         (mono_module_get_types): New helper function.
19977         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
19978
19979 2003-11-08  Martin Baulig  <martin@ximian.com>
19980
19981         * class.c (mono_class_inflate_generic_method): Interface method
19982         don't have a header.
19983
19984         * reflection.c (mono_image_get_methodspec_token): Take an
19985         additional `MonoGenericInst *' argument instead of reading it from
19986         the header; this is necessary to support interfaces.
19987         (mono_image_create_token): Pass the `MonoGenericInst *' from the
19988         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
19989         (inflated_method_get_object): Take an additional `MonoGenericInst *'
19990         argument.
19991
19992         * reflection.h (MonoReflectionInflatedMethod): Added
19993         `MonoGenericInst *ginst'.
19994
19995 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
19996
19997         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
19998
19999 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
20000
20001         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
20002
20003 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20004
20005         * reflection.c 
20006         (reflection_methodbuilder_from_method_builder):
20007         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
20008         initialize a ReflectionMethodBuilder structure.
20009         (mono_image_get_methodbuilder_token):
20010         (mono_image_get_ctorbuilder_token): New functions to emit memberref
20011         tokens which point to types in another module inside the same assembly.
20012
20013         * reflection.c: Use the new helper functions.
20014         
20015         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
20016
20017         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
20018         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
20019
20020         * reflection.c (resolution_scope_from_image): Emit a moduleref if
20021         neccesary.
20022
20023         * reflection.c (mono_image_build_metadata): Emit metadata only for the
20024         current module. Emit the manifest only for the main module.
20025
20026         * reflection.c (mono_image_create_token): Add assertion when a 
20027         memberref needs to be created.
20028
20029         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
20030
20031         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
20032         larger buffer for the custom attribute blob. Fixes #50637.
20033         
20034 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20035
20036         * threadpool.c: notify listener on async processing handles after
20037         invoking the async callback. Thanks to Zoltan.
20038
20039 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
20042         avoid code duplication.
20043
20044         * reflection.h (MonoDynamicImage): New type which is currently unused,
20045         but will be used through the ref.emit code in place of 
20046         MonoDynamicAssembly.
20047
20048         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
20049         object layout.
20050
20051         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
20052         a MonoDynamicImage instead of just a MonoImage.
20053         
20054         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
20055         icalls to ModuleBuilder but keep their semantics, so they will work
20056         with moduleb->assemblyb. This will change later.
20057         
20058 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
20061         object layout.
20062
20063         * reflection.c (mono_image_build_metadata): Avoid creation of a default
20064         main module, since it is now done by the managed code.
20065
20066 2003-11-03  Martin Baulig  <martin@ximian.com>
20067
20068         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
20069         `ginst->klass' here.
20070         (method_encode_methodspec): Don't use the `ginst->generic_method's
20071         klass if it's a generic instance, use `ginst->klass' in this case.
20072
20073 2003-11-03  Martin Baulig  <martin@ximian.com>
20074
20075         * reflection.c (mono_image_get_generic_method_param_info):
20076         Removed, use mono_image_get_generic_param_info() instead.
20077         (mono_image_get_type_info): Write the GenericParam table before
20078         the Method table.  This is neccessary because in the GenericParam
20079         table, type parameters of the class (ie. '!0' etc.) must come
20080         before the ones from its generic methods (ie. '!!0' etc).
20081
20082 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
20085
20086 2003-11-02  Martin Baulig  <martin@ximian.com>
20087
20088         * reflection.c (create_generic_typespec): Take a
20089         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
20090         the generic parameters from it.
20091
20092 2003-11-02  Martin Baulig  <martin@ximian.com>
20093
20094         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
20095         instead of a `MonoClassField *' since we just need the type.
20096         (create_generic_typespec): New static function.  Creates a
20097         TypeSpec token for a generic type declaration.
20098         (mono_image_get_generic_field_token): New static function.
20099         (mono_image_create_token): If we're a FieldBuilder in a generic
20100         type declaration, call mono_image_get_generic_field_token() to get
20101         the token.
20102
20103 2003-11-02  Martin Baulig  <martin@ximian.com>
20104
20105         * reflection.h
20106         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
20107         `MonoReflectionGenericInst *declaring_type' and
20108         `MonoReflectionGenericInst *reflected_type' fields.
20109
20110         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
20111         `MonoReflectionGenericInst *declaring_type' and a
20112         `MonoReflectionGenericInst *reflected_type' argument instead of a
20113         single `MonoReflectionGenericInst *type' one.  Set
20114         `res->declaring_type' and `res->reflected_type' from them.
20115         (mono_reflection_inflate_field): Likewise.      
20116
20117 2003-11-02  Martin Baulig  <martin@ximian.com>
20118
20119         * class.c (mono_class_setup_vtable): Don't store generic methods
20120         in the vtable.  
20121
20122 2003-11-02  Martin Baulig  <martin@ximian.com>
20123
20124         * reflection.h (MonoReflectionGenericInst): Added
20125         `MonoReflectionType *declaring_type'.
20126
20127         * reflection.c (mono_reflection_bind_generic_parameters): Use
20128         `if (tb->parent)' instead of `klass->parent'.
20129
20130 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
20133         with an empty ASSEMBLY table.
20134
20135         * reflection.c (mono_image_build_metadata): Avoid using the same loop
20136         variable in the inner and outer loops.
20137
20138 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * metadata.h (mono_metadata_make_token): Put parentheses around macro
20141         argument.
20142
20143         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
20144         
20145         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
20146         icalls. Instead, do everything in managed code. This is needed since
20147         it is hard to restore the original domain etc. in unmanaged code in the
20148         presence of undeniable exceptions.
20149
20150         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
20151         New icalls to push and pop appdomain refs.
20152
20153 2003-10-31  Martin Baulig  <martin@ximian.com>
20154
20155         * class.c (inflate_generic_type): Renamed to
20156         mono_class_inflate_generic_type() and made it public.
20157
20158         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
20159         New interncall.
20160
20161         * loader.c (mono_field_from_memberref): Also set the retklass for
20162         typespecs.
20163
20164         * fielder.c (mono_image_get_inflated_field_token): New static
20165         method; creates a metadata token for an inflated field.
20166         (mono_image_create_token, fixup_method): Added support for
20167         "MonoInflatedField".
20168         (fieldbuilder_to_mono_class_field): New static function.
20169         (mono_reflection_inflate_field): New public function.
20170
20171         * reflection.h
20172         (MonoReflectionGenericInst): Added `MonoArray *fields'.
20173         (MonoReflectionInflatedField): New typedef.     
20174
20175 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
20176
20177         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
20178         for Solaris and other platforms without s6_addr16
20179
20180 2003-10-30  Martin Baulig  <martin@ximian.com>
20181
20182         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
20183         argument instead of two.
20184         (mono_class_inflate_generic_signature): Likewise.
20185         (inflate_generic_header): Likewise.
20186         (mono_class_inflate_generic_method): Likewise.  In addition, if
20187         `ginst->klass' is set, it becomes the new `method->klass'.
20188
20189         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
20190         field.
20191
20192         * reflection.c (encode_generic_method_sig): Write a 0xa as the
20193         first byte. [FIXME]
20194         (method_encode_methodspec): If we have generic parameters, create
20195         a MethodSpec instead of a MethodRef.
20196         (fixup_method): Added support for "MonoInflatedMethod" and
20197         "MonoInflatedCtor".
20198         (mono_image_create_token): Added support for "MonoInflatedMethod"
20199         and "MonoInflatedCtor".
20200         (inflated_method_get_object): New static function; returns a
20201         managed "System.Reflection.MonoInflatedMethod" object.
20202         (mono_reflection_bind_generic_method_parameters): Return a
20203         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
20204         (mono_reflection_inflate_method_or_ctor): Likewise.
20205         (mono_image_get_generic_method_param_info): Initialize unused
20206         fields to zero.
20207         (mono_image_get_generic_param_info): Likewise.
20208
20209         * reflection.h (MonoReflectionInflatedMethod): New public
20210         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
20211         "S.R.MonoInflatedCtor" classes.
20212
20213         * loader.c (method_from_memberref): If we're a TypeSpec and it
20214         resolves to a generic instance, inflate the method.
20215
20216 2003-10-28  Dick Porter  <dick@ximian.com>
20217
20218         * object.c (mono_runtime_run_main): Convert command-line arguments
20219         into utf8, falling back to the user's locale encoding to do so.
20220
20221 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
20224         at this time.
20225
20226         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
20227
20228         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
20229         up icalls at method definition time. Partially fixes #33569.
20230
20231 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
20234         marshalling of arrays. Fixes #50116.
20235
20236         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
20237
20238         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
20239         points to a vtable in the dying appdomain.
20240
20241         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
20242         listeners into unmanaged code inside the lock.
20243
20244         * object.c (mono_class_vtable): Turn off typed allocation in non-root
20245         domains and add some comments.
20246
20247 2003-10-25  Martin Baulig  <martin@ximian.com>
20248
20249         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
20250
20251         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
20252
20253         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
20254         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
20255         currently parsing.  Create the generic class and store it in
20256         `generic_inst->klass' before parsing the type arguments.  This is
20257         required to support "recursive" definitions; see mcs/tests/gen-23.cs
20258         for an example.
20259         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
20260         to support recursive typespec entries.
20261
20262         * class.c (mono_class_setup_parent): If our parent is a generic
20263         instance, we may get called before it has its name set.
20264         (mono_class_from_generic): Splitted into
20265         mono_class_create_from_generic() and mono_class_initialize_generic().
20266
20267 2003-10-25  Martin Baulig  <martin@ximian.com>
20268
20269         * icall.c (ves_icall_Type_BindGenericParameters): Return a
20270         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
20271         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
20272         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
20273
20274         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
20275         (create_typespec): Likewise.
20276         (mono_reflection_bind_generic_parameters): Return a
20277         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
20278         (mono_reflection_inflate_method_or_ctor): New public function.
20279
20280         * reflection.h (MonoReflectionGenericInst): New typedef.        
20281
20282 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
20285         inside the domain lock. Fixes #49993.
20286         
20287         * object.c (mono_class_vtable): When typed allocation is used, 
20288         allocate vtables in the GC heap instead of in the mempool, since the
20289         vtables contain GC descriptors which are used by the collector even
20290         after the domain owning the mempool is unloaded.
20291
20292         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
20293
20294         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
20295         reflect what it does. Also invalidate mempools instead of freeing
20296         them if a define is set.
20297
20298         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
20299         of the appdomain.
20300         
20301         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
20302         hold the finalizable objects in this domain.
20303
20304         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
20305         appdomain.
20306
20307         * appdomain.c (mono_domain_set): New function to set the current
20308         appdomain, but only if it is not being unloaded.
20309
20310         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
20311         appdomain which is being unloaded.
20312         
20313         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
20314         unloading of the root appdomain.
20315
20316         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
20317         icall to execute a method in another appdomain. Intended as a 
20318         replacement for InternalSetDomain, which can confuse the code 
20319         generation in the JIT.
20320
20321         * appdomain.c (mono_domain_is_unloading): New function to determine
20322         whenever an appdomain is unloading.
20323
20324         * appdomain.c (mono_domain_unload): New function to correctly unload
20325         an appdomain.
20326
20327         * assembly.c (mono_assembly_load_references): Check that an assembly
20328         does not references itself.
20329
20330         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
20331         domain manually, it asks the finalizer thread to do it, then waits for
20332         the result. Also added a timeout.
20333
20334         * icall.c: Register the new icalls.
20335
20336         * threads.h threads.c: Export the mono_gc_stop_world and 
20337         mono_gc_start_world functions.
20338         
20339         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
20340         function to fill out the mempool with 0x2a.
20341
20342 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
20343
20344         * reflection.h (MonoReflectionMethodAux): New structure to store
20345         information which is rarely used, thus is not in the MonoMethod
20346         structure.
20347
20348         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
20349         store the aux info.
20350
20351         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
20352         and marshalling info into the aux structure.
20353
20354         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
20355         from the aux structure.
20356
20357         * loader.c (mono_method_get_param_names): Retrieve the param names from
20358         the aux structure.
20359         
20360 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
20361
20362         * exception.h exception.c: Add AppDomainUnloadedException && fix 
20363         warning.
20364
20365 2003-10-21  Dick Porter  <dick@ximian.com>
20366
20367         * socket-io.c
20368         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
20369         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
20370
20371 2003-10-21  Martin Baulig  <martin@ximian.com>
20372
20373         * reflection.c (mono_reflection_bind_generic_parameters):
20374         `klass->parent' is NULL for interfaces.
20375
20376 2003-10-21  Martin Baulig  <martin@ximian.com>
20377
20378         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20379
20380 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * exception.c (mono_exception_from_name_msg): New helper function for
20383         creating exceptions and initializing their message field.
20384
20385         * exception.c: Simplify functions using the new helper.
20386
20387         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
20388         New function.
20389
20390         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
20391         mono_raise_exception, since otherwise gcc doesn't generate the function
20392         epilog for raise_exception, confusing the stack unwinding in the JIT.
20393         Fixes #45043.
20394
20395         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
20396         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
20397         Fixes #49499.
20398
20399 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20400
20401         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
20402         utf8.
20403
20404 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
20405
20406         * icall.c: Removed GetUninitializedObject method because
20407           AllocateUninitializedClassInstance does the same.
20408
20409 2003-10-18  Martin Baulig  <martin@ximian.com>
20410
20411         * class.c (inflate_generic_signature): Renamed to
20412         mono_class_inflate_generic_signature() and made it public.
20413         (my_mono_class_from_generic_parameter): New static function; if we
20414         don't already have the generic parameter's MonoClass, create a
20415         very simple one which is just used internally in the runtime and
20416         not passed back to managed code.
20417
20418         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
20419
20420         * metadata.h (MonoMethodSignature): Moved the
20421         `MonoGenericParam *gen_params' to the MonoMethodHeader.
20422         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
20423
20424         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
20425         ves_icall_MonoMethod_GetGenericArguments(); this is now an
20426         interncall on the MonoMethod class, not on MethodInfo.
20427         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
20428         calling mono_reflection_bind_generic_method_parameters() directly.
20429
20430         * loader.c (mono_method_get_signature): If this is a MethodSpec;
20431         return the already computed `method->signature'.
20432         (method_from_methodspec): New static function to load a method
20433         from a MethodSpec entry.
20434         (mono_get_method_from_token): Call the new method_from_methodspec()
20435         for MethodSpec tokens.  
20436         (mono_get_method_from_token): If we're a generic method, load the
20437         type parameters.
20438
20439         * reflection.c (mono_image_get_memberref_token): Allow
20440         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
20441         table.
20442         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
20443         (mono_image_create_token): First check whether it's a generic
20444         method (so we'd need to create a MethodSpec), then do the other
20445         two alternatives.
20446         (mono_reflection_bind_generic_method_parameters): Return a
20447         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
20448         called directly from the interncall.
20449
20450 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
20451
20452         * reflection.c (load_public_key): Move loading of the public key
20453         into managed code.
20454
20455         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
20456
20457         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
20458         fields.
20459
20460         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
20461         culture, hash_alg and public_key. Fixes #49555.
20462
20463 2003-10-17  Martin Baulig  <martin@ximian.com>
20464
20465         * class.h (MonoGenericInst): Moved this declaration here and added
20466         `MonoMethod *generic_method'.
20467
20468         * icall.c
20469         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
20470         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
20471
20472         * metadata.c (mono_metadata_type_equal): Two types of
20473         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
20474         index; ie. don't compare the address of the `MonoGenericParam'
20475         structure.
20476         (mono_metadata_load_generic_params): Removed the `MonoMethod
20477         *method' argument.
20478
20479         * metadata.h (MonoGenericInst): Moved declaration to class.h.
20480         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
20481
20482         * reflection.c (method_encode_signature): Encode the number of
20483         generic parameters.
20484         (encode_generic_method_sig): New static function.
20485         (method_encode_methodspec): New static function; creates an entry
20486         in the MethodSpec table for a generic method.
20487         (mono_image_get_methodspec_token): New static function.
20488         (mono_image_create_token): Call mono_image_get_methodspec_token()
20489         for generic methods.
20490         (mono_reflection_bind_generic_method_parameters): New public
20491         function.  Instantiates a generic method.
20492
20493 2003-10-16  Martin Baulig  <martin@ximian.com>
20494
20495         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
20496         *gen_params' here from MonoMethodHeader.
20497
20498         * metadata.c (mono_metadata_parse_method_signature): If we have
20499         generic parameters, initialize `method->gen_params' and then set
20500         the correct `type->data.generic_param' in all the parameters.
20501
20502 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * threads.c (mono_threads_get_default_stacksize): New function to 
20505         return the default stacksize.
20506
20507         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
20508         termination of the finalizer thread, since the previous method had
20509         race conditions. Fixes #49628.
20510
20511         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
20512         as for the other managed threads.
20513
20514 2003-10-16  Martin Baulig  <martin@ximian.com>
20515
20516         * class.c (inflate_generic_signature): Copy `generic_param_count'
20517         and `gen_params'.
20518
20519         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
20520         New interncall.
20521
20522         * metadata.c (mono_metadata_parse_method_signature): Actually set
20523         the `method->generic_param_count' here.
20524         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
20525
20526 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * object.h: Add a new field to TypedRef to simplify the implementation
20529         of the REFANY opcodes in the JIT.
20530
20531         * icall.c: Make use of the new field.
20532
20533         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
20534         dynamically.
20535
20536 2003-10-15  Martin Baulig  <martin@ximian.com>
20537
20538         * class.c (mono_class_from_gen_param): Renamed to
20539         mono_class_from_generic_parameter() and moved most of the
20540         functionality from mono_reflection_define_generic_parameter()
20541         here; ie. we create a "real" class here.
20542         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
20543         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
20544         previously been called.
20545
20546         * class.h (MonoGenericParam): Moved the declaration of this struct
20547         here from metadata.h and added `MonoMethod *method'.
20548
20549         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
20550         interncall.
20551
20552         * loader.c (mono_get_method_from_token): If we have any generic
20553         parameters, call mono_metadata_load_generic_params() to read them
20554         from the MONO_TABLE_GENERICPAR.
20555
20556         * metadata.c (mono_metadata_load_generic_params): Added
20557         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
20558
20559         * metadata.h (MonoMethodSignature): Replaced
20560         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
20561         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
20562
20563         * reflection.c (mono_reflection_define_generic_parameter): Moved
20564         most of the functionality into the new
20565         mono_class_from_generic_parameter(); set the `method' field if
20566         we're a method parameter.       
20567
20568 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
20569
20570         * marshal.c (emit_struct_conv): if native size is 0
20571         emit no code.
20572
20573 2003-10-14  Martin Baulig  <martin@ximian.com>
20574
20575         * icall.c: The generics API has changed in the spec since it was
20576         added to System.Type; these modifications make it match the spec
20577         again.
20578         (ves_icall_Type_GetGenericParameters): Renamed to
20579         `ves_icall_Type_GetGenericArguments'.
20580         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
20581         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
20582         `ves_icall_MonoType_get_HasGenericArguments'.
20583         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
20584         `ves_icall_MonoType_get_IsGenericParameter'.
20585         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
20586         this is no interncall anymore.
20587         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
20588         `ves_icall_TypeBuilder_get_IsGenericParameter'.
20589
20590 2003-10-14  Martin Baulig  <martin@ximian.com>
20591
20592         * reflection.c (mono_reflection_bind_generic_parameters): Also
20593         inflate generic methods if we're reading the class from IL.
20594
20595 2003-10-13  Martin Baulig  <martin@ximian.com>
20596
20597         * reflection.c (mono_reflection_define_generic_parameter): This
20598         method isn't called directly from the icall anymore; take a
20599         `MonoReflectionAssemblyBuilder *' so we can use this for type and
20600         method generic parameters.
20601         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
20602         (method_builder_encode_signature): Encode generic parameters.
20603         (mono_image_get_method_info): Write generic params to the
20604         MONO_TABLE_GENERICPARAM table.
20605
20606         * reflection.h (MonoReflectionMethodBuilder): Added
20607         `MonoArray *generic_params'.
20608
20609         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
20610
20611         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
20612         wrapper for mono_reflection_define_generic_parameter().
20613         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
20614
20615 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
20616
20617         * marshal.h: Add missing function to fix build.
20618
20619         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
20620         the SetLastError pinvoke attribute.
20621
20622         * marshal.c (mono_marshal_set_last_error): New helper function called
20623         by the generated code.
20624         
20625         * marshal.c (mono_mb_emit_branch): New helper function.
20626
20627         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
20628
20629         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20630         classes as parameters and return values of delegates. Fixes #29256. 
20631
20632 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
20633
20634         * locales.c: use gint32 in non HAVE_ICU case
20635
20636 2003-10-11  Martin Baulig  <martin@ximian.com>
20637
20638         * mono-debug.c (mono_debug_add_method): Added a workaround for
20639         bug #48591.
20640
20641 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
20644         delegates passed to native code must use the STDCALL calling 
20645         convention. Fixes #35987.
20646
20647 2003-10-10  Martin Baulig  <martin@ximian.com>
20648
20649         * class.c (inflate_generic_type): If we're inflating for a generic
20650         type instance (and not for a generic method), return
20651         MONO_TYPE_MVAR unchanged.
20652
20653 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20654
20655         * string-icalls.c: Join ignores null strings in the source array.
20656         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
20657         * threads.c: GetAvailableTheads is slightly more accurate.
20658
20659 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
20660
20661         * threads.h threads.c : add mono_threads_set_default_stacksize
20662         and pass default to CreateThread calls.
20663
20664 2003-10-09  Dick Porter  <dick@ximian.com>
20665
20666         * icall.c:
20667         * locales.h:
20668         * locales.c: Internal calls for constructing CultureInfo and
20669         related objects from libicu (if its available.)
20670
20671 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
20674
20675 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20676
20677         * threadpool.c: added an argument to async_invoke_thread that is the
20678         item to process, pass the MonoAsyncResult to the thread start function
20679         when creating a new thread. This way we don't need to acquire any lock
20680         when we're creating a new thread. Readded a semaphore for faster
20681         response times (instead of that Sleep i added).
20682
20683 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
20684
20685         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
20686         get daylight change dates better on Windows, fix handling
20687         of platforms without tm_gmtoff.
20688
20689 2003-10-06  Martin Baulig  <martin@ximian.com>
20690
20691         * class.c (inflate_generic_method): Renamed to
20692         mono_class_inflate_generic_method() and made public.
20693         (mono_class_init): Don't inflate the generic methods here.
20694         (mono_class_from_generic): Added `gboolean inflate_methods'
20695         argument.  Inflate the methods here.
20696
20697         * loader.c (mono_method_get_param_names): Ignore instances of
20698         generic types for the moment.
20699
20700         * reflection.c (fixup_method): Added support for inflated methods.
20701         (mono_image_create_token): Use mono_image_get_methodref_token()
20702         for inflated methods.
20703         (mono_custom_attrs_from_param): Ignore instances of generic types
20704         for the moment.
20705         (mono_reflection_bind_generic_parameters): New public function.
20706         Moved all the functionality from
20707         ves_icall_Type_BindGenericParameters() here and added support for
20708         dynamic types.
20709         (mono_reflection_define_generic_parameter): Initialize
20710         `klass->methods' here.
20711
20712         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
20713         functionality into mono_reflection_define_generic_parameter().
20714         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
20715         TypeBuilder, return that TypeBuilder.
20716
20717 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20718
20719         * appdomain.c: removed mono_delegate_semaphore.
20720
20721         * threadpool.c:
20722         (mono_thread_pool_add): moved hash table creation inside and the thread 
20723         creation outside of the critical region.
20724         (mono_thread_pool_finish): removed obsolete code.
20725         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
20726         continue or exit the thread depending on the queue.
20727
20728 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
20729
20730         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
20731         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
20732         handle more bool marshalling options
20733
20734 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
20735
20736         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
20737         arrays of structs. Also add a more descriptive error message when
20738         a structure member is marshalled as LPArray.
20739
20740 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20741
20742         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20743         marshalling arrays of complex types. Fixes #29098. Also remove an
20744         usused and incomplete function.
20745
20746 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20747
20748         * gc.c: report heap_size - free_bytes as total memory allocated
20749         (bug#49362).
20750
20751 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20752
20753         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
20754         fix timezone handling problems on Windows.
20755         
20756         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
20757         asserts when the year is outside the range handled by ms the functions.
20758
20759         * class.c (setup_interface_offsets): If the class is an interface,
20760         fill out its interface_offsets slot.
20761
20762 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20763
20764         * threadpool.c: mark threadpool threads as background.
20765
20766 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
20767
20768         * decimal.c - define DECINLINE to nothing if not using GCC
20769
20770 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20771
20772         * assembly.c: More refcount fixes.
20773
20774 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20775
20776         * string-icalls.c: if we're not trimming, return the same string.
20777         When not splitting, don't create a new string.
20778
20779 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20780
20781         * image.c:
20782         (mono_image_open): increment the ref_count inside the critical section.
20783
20784 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
20785
20786         * image.c (mono_image_open): Fix reference counting bug.
20787
20788 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
20789
20790         * marshal.c (mono_marshal_type_size) struct alignment changed for 
20791         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
20792         64bits. Avoid leak in mono_marshal_get_native_wrapper when
20793         mono_lookup_pinvoke_call throws.        
20794
20795 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20796
20797         * reflection.c (mono_reflection_parse_type): Fix #49114.
20798
20799         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
20800         temporary workaround for cygwin header problem.
20801
20802         * object.c (mono_object_isinst): Synchronize this with the code
20803         generated by the JIT for casts.
20804
20805 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20806
20807         * reflection.c (encode_type): Fix #38332.
20808
20809 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * marshal.c (mono_marshal_method_from_wrapper): New function to return
20812         the original method from the wrapper method.
20813
20814 2003-09-25  Martin Baulig  <martin@ximian.com>
20815
20816         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
20817         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
20818         (ves_icall_Type_get_IsGenericInstance): New interncall.
20819
20820 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
20821
20822         * object.c: fix cast warning in big endian code.
20823
20824 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
20825
20826         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
20827         
20828 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20829
20830         * assembly.c: don't call check_env from mono_assembly_load. It's
20831         already done once in mono_assemblies_init and may cause headaches when
20832         multiple threads are loading assemblies.
20833
20834 2003-09-19  Martin Baulig  <martin@ximian.com>
20835
20836         * reflection.c (mono_reflection_define_generic_parameter): Don't
20837         allocate `klass->methods', set `klass->flags' to
20838         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
20839
20840 2003-09-18  Martin Baulig  <martin@ximian.com>
20841
20842         * class.c (mono_class_init): Don't create `class->methods' if it's
20843         already initialized.
20844
20845         * metadata.c (mono_metadata_load_generic_params): Make this
20846         actually work.
20847
20848         * reflection.c (mono_reflection_define_generic_parameter): Set
20849         parent class and interfaces from the constraints.
20850
20851         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
20852         to keep this struct in sync with the declaration in TypeBuilder.cs.
20853
20854 2003-09-17  Martin Baulig  <martin@ximian.com>
20855
20856         * metadata.h (MonoType): Replaced the data's `int type_param'
20857         field with `MonoGenericParam *generic_param'.
20858         (MonoGenericParam): Added `MonoClass *klass'.
20859
20860         * class.c (mono_class_from_gen_param): Removed the
20861         `MonoImage *image' and `int type_num' arguments.
20862
20863         * metadata.c (mono_metadata_parse_generic_param): New static
20864         method; creates a MonoGenericParam which just contains the index.
20865         (do_mono_metadata_parse_type): Call
20866         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
20867         MONO_TYPE_MVAR.
20868
20869         * reflection.c (mono_image_typedef_or_ref): Generic type
20870         parameters may be in the same assembly, but never use a typedef
20871         for them.
20872         (mono_reflection_define_generic_parameter): We're now creating a
20873         "real" class for the type parameter; it's now safe to call
20874         mono_class_from_mono_type() on the class'es type, it'll do the
20875         right thing.
20876
20877 2003-09-16  Martin Baulig  <martin@ximian.com>
20878
20879         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
20880         `symfile->range_entry_size' and `symfile->class_entry_size' here;
20881         the `symfile' data structure must be fully initialized before it
20882         gets added to the table.
20883
20884 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
20887
20888         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
20889         class init trampolines.
20890
20891 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
20894         to the built-in profiler to turn off time and allocation profiling
20895         respectively.
20896
20897 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20898
20899         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
20900         g_direct_equal.
20901
20902         * debug-helpers.c (mono_method_full_name): Print the wrapper type
20903         in human readable form.
20904
20905 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20906
20907         * reflection.c icall.c: Fixed warnings.
20908
20909         * image.c (load_class_names): Use a temporary hash table to hold the
20910         namespaces in order to avoid doing many string comparisons.
20911
20912         * image.h: Fix typo.
20913
20914         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
20915         Pass NULL instead of g_direct_equal to the GHashTable constructor 
20916         since the NULL case is short-circuited inside g_hash_table_lookup, 
20917         leading to better performance.  
20918
20919         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
20920         obtain the first custom attribute for a given index. Depends on the
20921         CustomAttribute table being sorted by the parent field.
20922
20923         * reflection.c (mono_custom_attrs_from_index): Use the new function 
20924         for better performance.
20925
20926 2003-09-07  Martin Baulig  <martin@ximian.com>
20927
20928         * class.c (mono_class_init): If we're a generic instance, inflate
20929         all our methods instead of loading them from the image.
20930         (mono_class_from_generic): Set `class->methods = gklass->methods'.
20931
20932 2003-09-07  Martin Baulig  <martin@ximian.com>
20933
20934         * mono-debug-debugger.c: Added support for constructors.
20935
20936 2003-09-06  Martin Baulig  <martin@ximian.com>
20937
20938         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
20939         New interncall.
20940
20941         * reflection.c (mono_reflection_setup_generic_class): Call
20942         ensure_runtime_vtable() to create the vtable.
20943
20944 2003-09-05  Martin Baulig  <martin@ximian.com>
20945
20946         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
20947         MONO_TYPE_MVAR.
20948
20949 2003-09-04  Martin Baulig  <martin@ximian.com>
20950
20951         * reflection.c (mono_reflection_define_generic_parameter): Generic
20952         parameters start with zero.
20953
20954 2003-09-04  Martin Baulig  <martin@ximian.com>
20955
20956         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20957
20958         * reflection.h (MonoReflectionGenericParam): New typedef.
20959         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
20960         the generic parameters from the managed TypeBuilder.
20961
20962         * reflection.c (mono_reflection_define_generic_parameter): New function.
20963         (mono_reflection_create_runtime_class): Encode generic parameters.
20964         (mono_reflection_setup_generic_class): New function; this is
20965         called after adding adding all generic params to the TypeBuilder.
20966         (encode_type): Added MONO_TYPE_VAR.
20967
20968 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20969
20970         * class.h class.c (mono_class_needs_cctor_run): Moved this method
20971         here from the JIT.
20972
20973         * assembly.h assembly.c: Moved the AOT loading code into an assembly
20974         load hook.
20975
20976 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
20977
20978         * reflection.h reflection.c class.h class.c: Delete duplicate 
20979         definition of mono_type_get_name () from reflection.c and export the
20980         one in class.c.
20981
20982         * class.c: Class loading fixes from Bernie Solomon 
20983         (bernard@ugsolutions.com).
20984
20985         * reflection.c: Endianness fixes from Bernie Solomon 
20986         (bernard@ugsolutions.com).
20987         
20988 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20989
20990         * assembly.h assembly.c: Define a file format version for AOT
20991         libraries.
20992         
20993         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
20994
20995         * appdomain.h (MonoJitInfo): New field to determine whenever the
20996         code is domain neutral.
20997         
20998 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
20999
21000         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
21001
21002 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21003
21004         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
21005         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
21006         Avoid caching the result since strings must be domain specific. Fixes
21007         #48050.
21008
21009 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21010
21011         * marshal.c (mono_marshal_init): Make this callable multiple times
21012         since it is hard to find a correct place to call it.
21013
21014         * object.c (mono_runtime_class_init): Execute static constructors in
21015         the correct appdomain.
21016
21017         * image.c (build_guid_table): Handle the case when multiple images have
21018         the same GUID.
21019
21020 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21021
21022         * icall.c: added a couple of icalls for System.Web.
21023
21024 2003-08-28  Martin Baulig  <martin@ximian.com>
21025
21026         * icall.c (ves_icall_Type_BindGenericParameters): Use
21027         `klass->generic_inst' instead of `&klass->byval_arg' in the
21028         mono_type_get_object() call.  The returned type must be
21029         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
21030
21031 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21032
21033         * NOTES: New file.
21034
21035         * object.c (mono_class_proxy_vtable): Make it thread safe.
21036
21037         * pedump.c: Fix warning.
21038
21039         * object.c appdomain.h: Get rid of metadata_section. 
21040         It is no longer needed and it was causing deadlocks with domain->lock.
21041
21042         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
21043
21044 2003-08-26  Martin Baulig  <martin@ximian.com>
21045
21046         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
21047
21048 2003-08-26  Martin Baulig  <martin@ximian.com>
21049
21050         * pedump.c (main): Call mono_metadata_init(),
21051         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
21052         and mono_loader_init().
21053
21054 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
21055
21056         * loader.h: Add missing include to fix build.
21057
21058         * image.h: mono_image_load_references is no more.
21059
21060         * assembly.c: Reworked assembly loading to make it really thread safe.
21061         After these changes, the assembly returned by mono_assembly_open is
21062         fully initialized, i.e. all its references assemblies are loaded.
21063
21064         * assembly.c (mono_image_load_references): Renamed to 
21065         mono_assembly_load_references, and made private, since clients no
21066         longer need to call it.
21067
21068         * class.c: Removed calls to mono_assembly_load_references, since it was
21069         a source of deadlocks.
21070
21071         * loader.h loader.c class.h class.c: Protect data structures using a 
21072         new lock, the loader lock.
21073
21074         * class.c (mono_class_setup_vtable): Create temporary hash tables and
21075         GPtrArrays only when needed.
21076
21077         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
21078         into empty structures by mcs. Fixes pinvoke7.cs.
21079         
21080         * domain.c (mono_init): Call a new initialization function.
21081
21082         * appdomain.c (mono_runtime_init): Call the new initializer function
21083         of the marshal module.
21084
21085         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
21086         inserted into empty structures by mcs. Fixes pinvoke7.cs.
21087
21088         * marshal.h marshal.c: Added locks around the wrapper caches to make
21089         this module thread safe.
21090
21091         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
21092         this argument. Fixes pinvoke1.exe.
21093
21094 2003-08-25  Lluis Sanchez <lluis@ximian.com>
21095
21096         * object.h: Added call_type field to MonoMethodMessage and the corresponding
21097         enumeration of values. Removed fields to store remote call output values in
21098         MonoAsyncResult. Not needed any more.
21099         * object.c: Initialize call_type and async_result fields in mono_message_init.
21100         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
21101         dispatching the message.
21102         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
21103         async call to finish. To do it use a message with EndInvoke call type.
21104
21105 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * loader.h loader.c (mono_method_hash_marhal_info): New function which
21108         determines whenever a method has marshalling info.
21109
21110 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21111
21112         * assembly.c: fix the build on windows.
21113
21114 2003-08-22 Lluis Sanchez <lluis@ximian.com>
21115
21116         * object.cs: Fixed bug #47785.
21117
21118 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
21119
21120         * string-icalls.c (StringReplace): If their are no occurances of
21121         the old string found return a reference to the supplied
21122         string. This saves some memory and matches MS behavoir.
21123         
21124 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21125
21126         * socket-io.c: fixed compilation for systems that define AF_INET6
21127         and don't define SOL_IP/SOL_IPV6.
21128
21129 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
21130
21131         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
21132         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
21133
21134         * rawbuffer.c rawbuffer.h: Make this module thread safe.
21135
21136         * domain.c: Make this module thread safe.
21137
21138         * domain.c (mono_init): Call new initialization function.
21139
21140         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
21141         reference types too. Fixes #38812.
21142
21143         * image.c (mono_image_init): Fixed warnings.
21144
21145         * class.c (mono_class_from_typeref): Handle assembly load failure
21146         correctly.
21147
21148         * appdomain.c (add_assemblies_to_domain): Handle the case when
21149         the references of an assembly are not yet loaded.
21150
21151         * metadata.c image.c assembly.c: Moved initialization of global
21152         variables to a separate function called at startup since lazy 
21153         initialization of these variables is not thread safe.
21154         
21155         * image.c assembly.c: Made this module thread safe by adding locks in 
21156         the appropriate places.
21157
21158         * domain.c (mono_init): Call the new initialization functions of the
21159         three modules.
21160
21161 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
21162
21163         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
21164           make a direct call. It is proxy's work to make the call asynchronous.
21165           mono_delegate_end_invoke(): If the targe is a proxy, just collect
21166           the return values.
21167         * object.cs: mono_method_call_message_new(): read AsyncResult and
21168           state object from parameters list, if this info is requested.
21169         * object.h: Added fields to store remote call output values in
21170           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
21171
21172 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21173
21174         * object.h: add needed fields to MonoThread.
21175         * threads.c, threads.h: allow registering a function to cleanup data
21176         allocated per thread by the JIT.
21177
21178 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21179
21180         * loader.h: portability fix by Bernie Solomon
21181         * <bernard@ugsolutions.com>.
21182
21183 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
21184
21185         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
21186         return a MonoArray. This simplifies the code and also ensures that
21187         the cache allways contains an object reference as a value.
21188
21189         * icall.c (ves_icall_get_parameter_info): Simplified using the new
21190         function.
21191
21192 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21193
21194         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
21195         fixes a problem with byte ordering when getting the address family for
21196         a socket.
21197
21198 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
21199
21200         * .cvsignore: Added monosn.
21201
21202         * reflection.h reflection.c loader.c: Added support for parameter
21203         marshalling to dynamically created types. Fixes #47295.
21204
21205 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21206
21207         * rand.c: remove useless warnings.
21208
21209 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21210
21211         * class.c: implemented ldtoken for methods and fieldrefs.
21212
21213 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21214
21215         * threadpool.c: when mono_async_invoke was called, no one took care of
21216         monitoring the queue. So if the method invoked took some time and we
21217         got new async invoke requests after 500 ms (the thread created waited
21218         that long in WaitForSingleObject), the new async invoke was not called
21219         until the previous one finished.
21220
21221         This is fixed now. Thanks to Totte for helping with it.
21222
21223 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21224
21225         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
21226
21227 2003-08-11  Martin Baulig  <martin@ximian.com>
21228
21229         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
21230
21231 2003-08-06  Martin Baulig  <martin@ximian.com>
21232
21233         * mono-debug-debugger.c: Added support for static fields,
21234         properties and methods.
21235
21236 2003-08-06  Martin Baulig  <martin@ximian.com>
21237
21238         * mono-debug-debugger.c: Don't store the MonoString's vtable to
21239         make this work for applications with multiple application domains.
21240
21241 2003-08-04  Martin Baulig  <martin@ximian.com>
21242
21243         * mono-debug-debugger.c: Completely reworked the type support; the
21244         most important thing is that we're now just using one single
21245         `MonoType' instance per type.
21246
21247 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
21248
21249         * mono-endian.h, mono-endian.c, icall.c: Added icall
21250         ves_icall_System_Double_AssertEndianity to assert double word endianity
21251         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
21252
21253 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21254
21255         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
21256         support, icalls and fixes.
21257
21258 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
21259
21260         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
21261         classes that are a punctuation character in .NET is not the same a
21262         g_unichar_ispunct.
21263
21264 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21265
21266         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
21267
21268 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
21269
21270         * icall.c: Add new MemCopy internalcall.
21271         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
21272         Simplified code; It is not necessary to handle all the cases here,
21273         as the C# code takes care of it.  Only handle the case of the name
21274         resource embedded into the assembly.
21275
21276         Changed signature to return the data pointer and the size of the
21277         data. 
21278
21279 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
21280
21281         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
21282         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
21283
21284 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21285
21286         * socket-io.c: ignore EINTR error in select.
21287
21288 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21289
21290         * class.h, class.c: removed unused subclasses field in MonoClass.
21291
21292 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21293
21294         * icall.c: improve fix of get_base_definition(). If the parent class
21295           doesn't have the mehod, look at the parent of the parent.
21296         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
21297           to check if a parameter is an in or out parameter
21298           (PARAM_ATTRIBUTE_IN is not set by default).
21299           mono_method_return_message_restore(): Use mono_class_value_size to
21300           get the size of a value type. mono_type_stack_size (parameterType)
21301           does not return the correct value if parameterType is byRef.
21302           mono_load_remote_field(), mono_load_remote_field_new(),
21303           mono_store_remote_field(), mono_store_remote_field_new():
21304           raise exception if the remote call returns an exception.
21305
21306 2003-07-28  Martin Baulig  <martin@ximian.com>
21307
21308         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
21309         method.  This is a wrapper around mono_runtime_invoke() which
21310         boxes the instance object if neccessary.
21311
21312 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21313
21314         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
21315         metadata.h, row-indexes.h, verify.c: first cut of generics support.
21316
21317 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21318
21319         * icall.c: disable mcs bug workaround.
21320
21321 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21322
21323         * object.c (mono_runtime_class_init): Take the metadata_section
21324         mutex before obtaining the domain mutex.
21325
21326         * appdomain.h: Added definition of metadata_section mutex here. 
21327
21328         * object.c: define metadata_mutex here.
21329
21330 2003-07-24  Ravi Pratap  <ravi@ximian.com>
21331
21332         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
21333         fixed.
21334
21335 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
21336
21337         * reflection.c: Fix bug #46669
21338
21339 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21340
21341         * exception.c:
21342         * exception.h:
21343         * icall.c:
21344         * object.h: fill in the type name for TypeLoadException.
21345
21346 2003-07-23  Ravi Pratap  <ravi@ximian.com>
21347
21348         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
21349         relationship between TypeBuilders while compiling corlib) and bug
21350         45993 (Array types returned from the runtime while compiling
21351         corlib were from the loaded corlib).
21352
21353 2003-07-22  Martin Baulig  <martin@ximian.com>
21354
21355         * mono-debug-debugger.c: Reworked the type support a bit more;
21356         distinguish between types and classes.
21357
21358 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
21359
21360         * icall.c: add IsArrayImpl icall.
21361
21362 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
21365         initializing real_size only once. Also fix bug #46602.
21366
21367 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
21368
21369         * object.c: Renamed mono_metadata_section to metadata_section.
21370
21371 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
21372
21373         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
21374           empty array if the type is an array. Fixed.
21375           ves_icall_MonoMethod_get_base_definition: if the base method
21376           is abstract, get the MethodInfo from the list of methods of
21377           the class.
21378         * reflection.c: ParameterInfo.PositionImpl should be zero-based
21379           and it was 1-based. Fixed in mono_param_get_objects.
21380
21381 2003-07-20  Martin Baulig  <martin@ximian.com>
21382
21383         * mono-debug.h: Set version number to 31.
21384         (mono_debug_init): Added `MonoDomain *' argument.
21385
21386         * mono-debug-debugger.c: Reworked the type support; explicitly
21387         tell the debugger about builtin types; pass the `klass' address to
21388         the debugger.
21389
21390 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
21391
21392         * image.c: Allow new metadata tables to be loaded without a
21393         warning. Also update the warning message to give the new constant value.
21394                 
21395 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21396
21397         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
21398         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
21399         array type representation changes.
21400
21401 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21402
21403         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
21404         on Environment.Exit () call.
21405
21406 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21407
21408         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
21409         requires a matching corlib.
21410
21411 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21412
21413         * Changelog: My editor decided to add a CR to each line. Sorry about that.
21414           Committed again without the CRs.
21415         
21416 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21417
21418         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
21419           getting it from the "this" socket instance. Did not work
21420           if the socket is a subclass of Socket.
21421           Also fixed bug #35371.
21422
21423 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21424
21425         * metadata.c: fixed size for TypedByRef.
21426         * loader.c: when searching for a method, consider the vararg amrker.
21427         * unicode.c, decimal.c: constify some arrays.
21428
21429 2003-07-15  Dick Porter  <dick@ximian.com>
21430
21431         * socket-io.c: Fixed compilation for gcc < 3.2.
21432
21433         Fixed compilation for machines that don't have AF_INET6 (thanks to
21434         Bernie Solomon <bernard@ugsolutions.com> for that part.)
21435
21436         Fixed compile warnings.
21437         
21438         Fixed formatting and line endings.
21439
21440 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
21441
21442         * socket-io.h:
21443         * socket-io.c: Added IPv6 support.
21444
21445 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * class.c (mono_class_is_assignable_from): New function to implement
21448         the is_assignable_from logic. Used by mono_object_isinst, 
21449         Type::IsAssignableFrom () and the interpreter.
21450
21451         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
21452         Object, even interfaces.
21453         
21454         * object.c (mono_object_isinst): Implement in terms of 
21455         is_assignable_from.
21456
21457         * icall.c (ves_icall_type_is_assignable_from): New icall.
21458
21459 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
21460
21461         * domain.c (foreach_domain): fix compiler warning.
21462
21463 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
21464
21465         * image.c (load_metadata_ptrs): use g_strndup because strndup is
21466         not available on all plattforms
21467
21468 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
21469
21470         * image.h image.c: Store the metadata version string in MonoImage.
21471         * icall.c: New icall to retrieve the image version.
21472         * reflection.c (create_dynamic_image): Fill in the image version field
21473         * reflection.c (build_compressed_metadata): Use the image version
21474         from the image structure.
21475
21476 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21477
21478         * appdomain.c: modified comment.
21479         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
21480         That will be its last iteration when mono_gc_cleanup is called from
21481         mono_runtime_cleanup and before the domain is unloaded.
21482
21483         Fixes bug #45962.
21484
21485 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
21486
21487         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
21488         attributes.
21489
21490 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21491
21492         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
21493         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
21494         Bernie Solomon <bernard@ugsolutions.com>.
21495
21496 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21497
21498         * object.c, object.h: provide mono_object_new_fast() for faster
21499         allocation in some special cases.
21500
21501 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21502
21503         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
21504         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
21505
21506 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21507
21508         * threadpool.c: fix leaks.
21509
21510 2003-07-01  Dick Porter  <dick@ximian.com>
21511
21512         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
21513         using MonoGHashTables.  Fixes threadpool bug posted to list.
21514
21515 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
21516
21517         * image.h, image.c: added support to load an assembly from a byte array.
21518         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
21519         assembly bundle support.
21520
21521 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
21522
21523         * threadpool.c (mono_thread_pool_add): keep a reference to the
21524         AsyncResult to prevent GC
21525
21526 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21527
21528         * class.c: leak fix.
21529
21530 2003-06-25  Dick Porter  <dick@ximian.com>
21531
21532         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
21533         for the async object, the WaitHandle object will close the handle.
21534         Fixes bug 45321.
21535
21536 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21537
21538         * class.c: in mono_array_class_get (), lookup from the hash with the
21539         same type we insert: this works around a bug in
21540         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
21541         lluis. The real fix will have to wait for after the release.
21542
21543 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21544
21545         * icall.c: fix memory leak when getting type members.
21546
21547 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21548
21549         * reflection.c: added more pubtoken special cases.
21550
21551 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21552
21553         * class.c: handle field offset correctly when class size
21554         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
21555
21556 2003-06-20  Martin Baulig  <martin@ximian.com>
21557
21558         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
21559         *image' field.
21560
21561 2003-06-20  Martin Baulig  <martin@ximian.com>
21562
21563         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
21564
21565 2003-06-20  Martin Baulig  <martin@ximian.com>
21566
21567         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
21568         just distinguish between variables in registers and variables at
21569         an offset relative to a register.
21570
21571 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21572
21573         * icall.c: #ifdef out latest changes until mcs is fixed.
21574
21575 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21576
21577         * icall.c: return members in metadata order.
21578
21579 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21580
21581         * icall.c: avoid infinite loop in GetTimeZoneData.
21582
21583 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21584
21585         * icall.c: added Marshal.Prelink/All icalls.
21586
21587 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21588
21589         * object.c, object.h: fix warnings and do some overflow checking
21590         when creating arrays.
21591
21592 2003-06-17  Dick Porter  <dick@ximian.com>
21593
21594         * file-io.h:
21595         * file-io.c: File attributes need to be tweaked slightly when
21596         passed from the managed to the w32 world.
21597
21598 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21599         * profiler.h profiler-private.h profiler.c: Rework last patch
21600         based on suggestion by Paolo.
21601         
21602 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
21605         instruction level coverage data collection.
21606         * profiler.h profiler.c (: Added new callback function which can be
21607         used by the profiler to limit which functions should have coverage
21608         instrumentation.
21609         * profiler.c (mono_profiler_load): Call g_module_build_path to
21610         generate the file name of the profiler library.
21611
21612 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21613
21614         * profiler.c, profiler.h, profiler-private.h: added basic block 
21615         coverage profiling API.
21616
21617 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * reflection.c (mono_reflection_create_runtime_class): Add support
21620         for events in dynamically generated code.
21621
21622         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
21623         not allocated.
21624
21625 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21626
21627         * icall.c: when getting timezone info, return reasonable values if we
21628         can't get the actual data.
21629
21630 2003-06-14  Dick Porter  <dick@ximian.com>
21631
21632         * threads.c (start_wrapper): Remove the reference to the thread
21633         object in the TLS data, so the thread object can be finalized.
21634         This won't be reached if the thread threw an uncaught exception,
21635         so those thread handles will stay referenced :-( (This is due to
21636         missing support for scanning thread-specific data in the Boehm GC
21637         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
21638
21639 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
21640
21641         * reflection.c: ensure streams and tables are first allocated with
21642         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
21643
21644 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21645
21646         * icall.c: fixed GetElementType for byrefs (bug# 44792).
21647
21648 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
21649
21650         * reflection.c (mono_reflection_create_runtime_class): Add support for
21651         properties to dynamically created classes.
21652         * reflection.c: Fix a few places where non-MonoObjects were inserted
21653         into the tokens hashtable.
21654
21655 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21656
21657         * object.c: some support to handle out of memory exceptions.
21658
21659 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
21660
21661         * marshal.c (mono_marshal_get_native_wrapper): support reference
21662         return types
21663
21664 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21665
21666         * object.h, object.c: more portability stuff from Bernie Solomon.
21667         Unexport mono_object_allocate(). Added mono_object_unbox ().
21668         Set exitcode when an unhandled exception is thrown.
21669
21670 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
21671
21672         * marshal.c (mono_marshal_get_native_wrapper): use custom
21673         marshaler for return types.
21674
21675 2003-06-10  Dick Porter  <dick@ximian.com>
21676
21677         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
21678         ip_mreq is available
21679
21680 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21681
21682         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
21683         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
21684         by Bernie Solomon <bernard@ugsolutions.com>.
21685
21686 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
21687
21688         * gc.c (mono_gc_init): Avoid error message on shutdown when
21689         GC_DONT_GC=1 is used.
21690
21691         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
21692         New icall to return the GUID of a module.
21693
21694 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21695
21696         * class.c: ensure instance size always includes the parent's size
21697         even whem class size is set explicitly (fixes bug#44294).
21698
21699 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21700
21701         * profiler.h, profiler.c: made the simple profiler thread-safe,
21702         get more accurate timing info. Allow the loading of an
21703         externally-developed profiler module.
21704
21705 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
21706
21707         * marshal.c (mono_marshal_get_native_wrapper): improved
21708         class/byref arguments.
21709         (mono_marshal_get_native_wrapper): better string marshaling support.
21710
21711 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21712
21713         * class.c: ensure .pack and .size are handled correctly and
21714         simplified layout of static fields.
21715
21716 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21717
21718         * appdomain.c
21719         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
21720
21721         * loader.c (mono_lookup_pinvoke_call): look for modules in the
21722         current directory (fix bug 44008)
21723
21724 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
21725
21726         * marshal.c (mono_marshal_get_native_wrapper): started support for
21727         custom marshalers.
21728         (mono_delegate_to_ftnptr): consider marshalling specifications
21729
21730 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21731
21732         * reflection.c, reflection.h: emit custom marshal info.
21733
21734 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21735
21736         * object.c: free the GError.
21737         * icall.c: added CloseEvent_internal.
21738         * threads.[ch]:
21739         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
21740         call.
21741
21742 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
21743
21744         * loader.c (mono_method_get_signature): Add support for dynamic
21745         assemblies.
21746
21747 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21748
21749         * reflection.c: fixed bug #43905.
21750
21751 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21752
21753         * class.c, domain.c, icall.c, metadata.h, object.h: support for
21754         handling TypedReference and ArgIterator.
21755         * loader.c, loader.h: added function to get signature at call site.
21756
21757 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21758
21759         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
21760         data readonly. Buglets and warning fixes. Some MethodSpec support.
21761
21762 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21763
21764         * class.h, class.c, object.c: remove relative numbering support.
21765
21766 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
21767
21768         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
21769         free the string, until we get a chance to fix Gtk#
21770
21771 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21772
21773         * marshal.c: revert last patch.
21774
21775 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21776
21777         * icall.c: updates for new mono_class_vtable() not calling
21778         the type constructor anymore.
21779
21780 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21781
21782         * object.h, object.c: separate vtable creation from type
21783         initialization. Make running the .cctor thread safe.
21784
21785 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21786
21787         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
21788
21789 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21790
21791         * loader.c (mono_get_method): consider calling convention
21792
21793 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
21794
21795         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
21796         to return the invisible global type for a module.
21797
21798         * reflection.c (mono_image_build_metadata): Emit global fields too.
21799
21800 2003-05-20  Peter Williams  <peterw@ximian.com>
21801
21802         * loader.c (mono_lookup_internal_call): Add a few newlines.
21803
21804 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
21807         literal strings.
21808
21809         * appdomain.c (set_domain_search_path): Recalculate search path when
21810         AppDomainSetup.PrivateBinPath changes.
21811
21812         * object.c (mono_class_compute_gc_descriptor): It turns out some
21813         parts of the class libs (like System.Thread) holds pointers to
21814         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
21815         to treat native int a pointer type here.
21816         
21817 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
21818
21819         * appdomain.h, domain.c: add hashtable for jump target resolution.
21820
21821 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * reflection.h reflection.c icall.c: Added new icalls 
21824         GetManifestResourceInfoInternal, GetModulesInternal and support
21825         infrastructure.
21826
21827 2003-05-16  Dick Porter  <dick@ximian.com>
21828
21829         * icall.c:
21830         * file-io.h:
21831         * file-io.c: Implement System.IO.MonoIO::GetTempPath
21832
21833 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
21834
21835         * object.c: mono_store_remote_field: little fix to previous patch.
21836
21837 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21838
21839         * class.c: add constructors to array classes.
21840         * icall.c: special case array construction for InternalInvoke (),
21841
21842 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * class.h class.c reflection.c object.c: Added support for field
21845         defaults in dynamically generated classes.
21846
21847 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21848
21849         * reflection.c: properly encode charset for ddlimport.
21850
21851 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21852
21853         * threads.c: allow compiling without GC.
21854
21855 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21856
21857         * appdomain.h, object.c, object.h, threads.c, threads.h: added
21858         handling of thread static data.
21859
21860 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21861
21862         * reflection.h, reflection.c: added mono_custom_attrs_free ().
21863
21864 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21865
21866         * class.c (mono_array_class_get): always set the serializable flags
21867         (mono_array_class_get): always set the SEALED attribute for array types
21868
21869 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
21870
21871         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
21872         attributes (fix for bug 42021).
21873
21874 2003-05-12  Dick Porter  <dick@ximian.com>
21875
21876         * gc.c: Don't run finalizers when the finalizer thread is
21877         finishing up, because the default domain has already been
21878         destroyed.
21879
21880 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
21881
21882         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
21883         value is null, we should throw an exception.   This is slightly
21884         different than the other conventions used for the constructor.
21885
21886 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21887
21888         * socket-io.c: fixed windows build.
21889
21890 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21891
21892         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
21893
21894 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * object.c (mono_string_new_wrapper): Compatibility fix for MS
21897         compilers.
21898
21899 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * class.c (mono_class_layout_fields): Add experimental GC aware
21902         auto layout facility. Requires class library changes to work correctly.
21903
21904         (mono_class_setup_vtable): Avoid overriding explicit interface
21905         method implementations. Fixes iface3.exe test.
21906
21907         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
21908         object reference.
21909         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
21910         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
21911
21912         * metadata.h: Add new type classification macro which determines
21913         whenever the type holds an object reference.
21914
21915 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21916
21917         * marshal.c (mono_marshal_get_native_wrapper): cleanups
21918
21919 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * gc.c (finalizer_thread): Work around a GC bug.
21922
21923 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
21924
21925         * marshal.c (emit_struct_conv): allow unions
21926
21927         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
21928
21929 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
21930
21931         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
21932
21933 2003-05-06  Martin Baulig  <martin@ximian.com>
21934
21935         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
21936
21937 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21938
21939         * socket-io.c:
21940         (Select_internal): allow NULLs, don't create arrays if not needed.
21941         Coupled with Socket.cs changes.
21942
21943         * threadpool.c:
21944         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
21945         register a finalizer for it that will close the semaphore handle. This
21946         fixes the leak and make Lupus' test run with > 4080 loops.
21947
21948 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21949
21950         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
21951         Jerome Laban (bug #42287)
21952
21953 2003-05-02  Martin Baulig  <martin@ximian.com>
21954
21955         * debug-mono-symfile.h
21956         (MonoSymbolFile): Moved declaration into mono-debug.h.
21957         (MonoDebugMethodJitInfo): Likewise.
21958         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
21959         argument.
21960         (_mono_debug_address_from_il_offset): Take a
21961         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
21962
21963         * mono-debug.h
21964         (MonoDebugDomainData): New struct.
21965         (mono_debug_get_domain_data): New function.
21966         (mono_debug_add_method): Take an additional `MonoDomain *'
21967         argument.
21968         (mono_debug_source_location_from_address): Likewise.
21969         (mono_debug_il_offset_from_address): Likewise.
21970         (mono_debug_address_from_il_offset): Likewise.
21971
21972 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
21973
21974         * reflection.c: one more check for null type in custom attrs.
21975
21976 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21977
21978         * reflection.c: avoid warning (comparison is always false due to limited
21979         range of data type).
21980
21981 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21982
21983         * icall.c: throw an exception in Type.GetField if the argument 'name'
21984         is NULL.
21985
21986 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
21987
21988         * reflection.c: fixed handling of enums in named arguments to custom
21989         attributes (bug #42123).
21990
21991 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21992
21993         * reflection.c: use the right array element type and handle
21994         a null for a Type argument, too.
21995
21996 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
21997
21998         * reflection.c: handle arrays as arguments to custom attributes.
21999
22000 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
22001
22002         * reflection.c: handle a string value in a custom attr
22003         ctor that takes an object.
22004
22005 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22006
22007         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
22008         (fix bug #42063)
22009
22010 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
22013
22014 2003-04-27  Martin Baulig  <martin@ximian.com>
22015
22016         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
22017         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
22018         MONO_DEBUGGER_EVENT_BREAKPOINT.
22019         (mono_breakpoint_trampoline_code): Removed.
22020         (mono_debugger_event_handler): The last argument is now a
22021         `guint32'.
22022         (mono_debugger_insert_breakpoint_full): Removed the
22023         `use_trampoline' argument.
22024         (mono_debugger_method_has_breakpoint): Likewise.
22025         (mono_debugger_trampoline_breakpoint_callback): Renamed to
22026         mono_debugger_breakpoint_callback(); take the method and
22027         breakpoint number as arguments.
22028
22029 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22030
22031         * metadata.c: fix off by one when loading parameters attributes.
22032
22033 2003-04-24  Martin Baulig  <martin@ximian.com>
22034
22035         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
22036
22037 2003-04-24  Martin Baulig  <martin@ximian.com>
22038
22039         * mono-debug-debugger.c: Moved all code which interacts with the
22040         Mono Debugger here.
22041
22042         * debug-mono-symfile.c: This code now just deals with the symbol
22043         file itself, the debugger code is now in mono-debug-debugger.c.
22044
22045 2003-04-23  Martin Baulig  <martin@ximian.com>
22046
22047         * mono-debug.c (mono_debug_source_location_from_il_offset):
22048         New method; like mono_debug_source_location_from_address(), but
22049         takes an IL offset instead of a machine address.
22050
22051 2003-04-23  Martin Baulig  <martin@ximian.com>
22052
22053         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
22054         `line' field; this is now computed by the debugger.
22055
22056 2003-04-23  Martin Baulig  <martin@ximian.com>
22057
22058         * mono-debug.[ch]: New files.  This is the new debugging interface.
22059
22060         * mono-debug-debugger.[ch]: New files.  Moved all code which
22061         interacts with the Mono Debugger here.
22062
22063 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22064
22065         * domain.c (mono_init): initialize mono_defaults.monitor_class
22066
22067 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
22068
22069         * reflection.c (method_encode_code): Add a spicy exception to help
22070         future compiler authors.
22071
22072 2003-04-21  Martin Baulig  <martin@ximian.com>
22073
22074         * icall.c
22075         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22076         Make this work with relative pathnames; g_filename_to_uri() needs
22077         an absolute filename.
22078
22079 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * icall.c: Track name changes in Object and ValueType.
22082
22083 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
22084
22085         * metadata.c (mono_type_stack_size): size should be a multiple of
22086         sizeof (gpointer)
22087
22088 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22089
22090         * gc.c:
22091         (internal_domain_finalize): moved into mono_domain_finalize. No need
22092         to create another thread because the finalizers will be run in the
22093         finalizer thread.
22094         
22095         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
22096         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
22097         to be run (MS does this too).
22098
22099 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * object.c (mono_class_compute_gc_descriptor): Update comment.
22102
22103         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
22104
22105         * image.h: Add synchronized wrapper cache.
22106
22107         * image.c (do_mono_image_open): Initialize cache.
22108
22109         * reflection.c (create_dynamic_mono_image): Initialize cache.
22110
22111 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22112
22113         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
22114         ves_icall_System_Buffer_ByteLengthInternal.
22115
22116 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22117
22118         * reflection.c: setup klass->nested_in earlier. Allow
22119         a dash in the assembly name.
22120
22121 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
22122
22123         * metadata.c (mono_type_to_unmanaged): dont access
22124         type->data.klass for MONO_TYPE_OBJECT
22125         (mono_type_to_unmanaged): consider System.Delegate class
22126
22127 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
22128
22129         * class.c: just setup supertypes in the proper place instead of
22130         initializing the full element class for arrays.
22131
22132 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22133
22134         * class.c: ensure the element class of arrays is initialized.
22135         Setup the supertype info for array classes, too.
22136
22137 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
22138
22139         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
22140
22141 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22142
22143         * Makefile.am: re-added -m option when running cygpath. This way,
22144         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
22145         separator.
22146         * mono-config.c: same codepath for locating mono config file for WIN32
22147         and the rest.
22148         * assembly.c: if mono_assembly_setrootdir is called, don't override
22149         the value set.
22150
22151 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22152
22153         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
22154         MONO_ASSEMBLIES variable.
22155
22156 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22157
22158         * icall.c: added Assembly::GetNamespaces() icall.
22159
22160 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22161
22162         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
22163
22164 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
22165
22166         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
22167         * object.c: fixed bug in the construction of vtable for proxies
22168
22169 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * object.c (mono_array_new): Mark mono_array_new as an icall.
22172
22173 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22174
22175         * class.c: fixed test for public method when overriding interfaces.
22176         Closes bug #40970.
22177
22178 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22179
22180         * appdomain.h, domain.c: added mono_domain_foreach() to
22181         be able to access the currently loaded appdomains.
22182         * object.c: make string interning work across sppdomains.
22183         Mark some functions for use as icalls.
22184
22185 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22186
22187         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
22188
22189         * reflection.h reflection.c: Allocate long living data using 
22190         GC_MALLOC_ATOMIC so the collector does not need to scan it.
22191
22192         * reflection.c: Double the allocation size in streams instead of
22193         increasing it, to prevent unneccesary copying on large assemblies.
22194         
22195         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
22196         creation if the assembly does not have the Run flag set.
22197
22198 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22199
22200         * class.h: avoid the C++ keywords in header files (Jerome Laban
22201         spotted and fixed this).
22202
22203 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22204
22205         * object.c:
22206         (mono_unhandled_exception): fill in the arguments for the
22207         UnhandledException event. Only trigger that event for the default
22208         domain (as MS does).
22209
22210 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
22211
22212         * object.c: Improve typed allocation stuff based on suggestions from
22213         Paolo. Also turn it on if the GC library supports it.
22214
22215 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * object.c object.h class.h: Added experimental typed allocation
22218         facility using the interfaces in gc_gcj.h.
22219
22220         * os/gc_wrapper.h: Added new include files.
22221         
22222 2003-04-03  Martin Baulig  <martin@ximian.com>
22223
22224         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
22225         which is not yet enabled by default.
22226
22227         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
22228         functions.
22229         (mono_gc_lock, mono_gc_unlock): New static functions.
22230
22231         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
22232         functions; stop/start the world for the garbage collector.  This
22233         is using the windows API; we need to complete the SuspendThread()/
22234         ResumeThread() implementation in the io-layer to make this work on Unix.
22235         (mono_gc_push_all_stacks): New public function; tells the garbage
22236         collector about the stack pointers from all managed threads.
22237
22238 2003-04-03  Martin Baulig  <martin@ximian.com>
22239
22240         * object.h (MonoThread): Added `gpointer stack_ptr'.
22241
22242         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
22243
22244 2003-04-03  Martin Baulig  <martin@ximian.com>
22245
22246         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
22247
22248 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22249
22250         * reflection.c (typebuilder_setup_fields): Initialize field.first and
22251         field.last.
22252
22253 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
22254
22255         * loader.c (mono_lookup_internal_call): Report the corlib that is
22256         out of sync.
22257
22258 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
22259
22260         * icall.c (ves_icall_type_GetTypeCode): fixed check for
22261         System.DBNull (it's class not valuetype).
22262
22263 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22264
22265         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
22266         if the array method was already assigned a token (fixes bug#40646).
22267
22268 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
22269
22270         * reflection.c (mono_reflection_get_type): Attempt type resolve even
22271         if no assembly is given.
22272
22273 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
22274
22275         * metadata.h: Added the new tables.
22276
22277         * row-indexes.h: Added definitions for new tables.
22278
22279         * metadata.c: Add schemas for new tables, and add support for
22280         computing the sizes of them.
22281
22282         * class.c: Update for handling the new type cases.
22283
22284 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
22285
22286         * metadata.h (MONO_TYPE_IS_VOID): new macro
22287
22288 2003-03-31  Martin Baulig  <martin@ximian.com>
22289
22290         * threads.h (MonoThreadCallbacks): Added `thread_created'.
22291
22292         * threads.c (mono_thread_new_init): Call `thread_created' in the
22293         mono_thread_callbacks.
22294
22295 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
22296
22297         * loader.h: added marshalbyrefobject_class to mono_defaults
22298         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
22299         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
22300           generation of output parameters.
22301           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
22302         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
22303           contextbound and the target object belongs to the context of the caller.
22304         * object.h: added context and unwrapped_server variables in MonoRealProxy.
22305         * object.c: Implemented support for interfaces and abstract classes
22306           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
22307           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
22308
22309 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
22310
22311         * class.h class.c (mono_class_is_subclass_of): New function.
22312         
22313         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
22314         routines for most common case (calls from ArrayList::ToArray).
22315
22316         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
22317         routine so programs which call Environment::Exit() can be profiled.
22318
22319         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
22320         Added MONO_ARCH_SAVE_REGS.
22321
22322         * icall.c (ves_icall_type_is_subtype_of): Use new function.
22323
22324 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
22325
22326         * blob.h: Add a couple of new MonoType types definitions.
22327
22328         * tabledefs.h: Add a couple of new call convs.
22329
22330 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
22331
22332         * reflection.h (MonoReflectionDynamicAssembly): track changes in
22333         the layout of the class.
22334
22335         * reflection.c (alloc_table): double the size on overflow to avoid
22336         unnecessary copying.
22337
22338         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
22339         avoid filling out metadata tables and blobs. Also set mb->ilgen to
22340         null so it can be garbage collected.
22341         
22342 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         * reflection.c (mono_reflection_get_type): Return the resolved type
22345         only if it is in the assembly we searched.
22346
22347         * reflection.c (ensure_runtime_vtable): Initialize method slots.
22348
22349         * class.c (mono_class_setup_vtable): Set the slot of the overriding
22350         method.
22351
22352 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22353
22354         * appdomain.c:
22355         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
22356         the right one is 'file:///blah', but MS allows it.
22357         * assembly.c:
22358         (mono_assembly_open): allow 'file://blah'
22359
22360         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
22361
22362 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
22363
22364         * socket-io.c: fixes bug #40310.
22365
22366 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
22367
22368         * reflection.c (mono_reflection_parse_type): handle deeply nested
22369         types correctly.
22370
22371         * reflection.c (mono_image_create_token): Use unique token values
22372         since they will be put into a hash table.
22373
22374         * class.c (mono_class_setup_vtable): If a method occurs in more than
22375         one place in the vtable, and it gets overriden, then change the
22376         other occurances too.
22377
22378         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
22379         object as return type.
22380
22381 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22382
22383         * icall.c: Deleted "ToString" implementation for double and float
22384         because they are full implemented in managed code.
22385
22386 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22387
22388         * reflection.c, reflection.h: implemented and exported functions
22389         to retrieve info about custom attributes.
22390
22391 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22392
22393         * appdomain.c: moved Uri handling to assembly.c
22394         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
22395         work when using a file Uri in *nix and windows.
22396
22397         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
22398         GetReferencedAssemblies.
22399
22400 2003-03-18  Dick Porter  <dick@ximian.com>
22401
22402         * icall.c: Rename a couple of internal calls
22403
22404         * threads.c: Set the thread state to Stopped when a thread exits.
22405         Fixes bug 39377.
22406
22407 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
22408
22409         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
22410         New icall.
22411
22412         * object.c (mono_class_vtable): fix warning.
22413
22414 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
22415
22416         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
22417
22418         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
22419         memory.
22420         (method_encode_clauses): Create exception info structures in the right
22421         order.
22422         (mono_reflection_setup_internal_class): Initialize supertypes field.
22423
22424         * class.c object.c: Handle interfaces which implement other interfaces 
22425         correctly.
22426
22427         * class.h class.c: Move the supertypes array initialization code into 
22428         a separate function so it can be used for dynamic types too. Also call
22429         it earlier, in mono_class_init(), since it can be used before the
22430         type is initialized.
22431
22432 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22433
22434         * Makefile.am:
22435         * assembly.c:
22436         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
22437
22438         * appdomain.c:
22439         * appdomain.h:
22440         * marshal.c:
22441         * object.c: remove warnings.
22442
22443 2003-03-13  Martin Baulig  <martin@ximian.com>
22444
22445         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
22446         (MonoDebugLexicalBlockEntry): New types.
22447
22448         * debug-mono-symfile.c
22449         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
22450
22451 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22452
22453         * process.c: ret can be any non-zero value accroding to MS doc.
22454
22455 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
22456
22457         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
22458         fixing a warning for a miss-used prototype, would have cause
22459         random memory corruption.
22460
22461 2003-03-07  Martin Baulig  <martin@ximian.com>
22462
22463         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
22464         getting really annoying ....
22465
22466 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
22467
22468         * reflection.c (fixup_method): added support for array methods.
22469
22470 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22471
22472         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
22473         (pointed out by Michael Adams).
22474
22475 2003-03-04  Dick Porter  <dick@ximian.com>
22476
22477         * icall.c: Temporarily reverted the Double and Single ToString()
22478         change, because it broke nunit.
22479
22480 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
22481
22482         * object.h, threads.h: make include files compatible with C++
22483         (patch by Jerome Laban <jlaban@wanadoo.fr>).
22484
22485 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22486
22487         * icall.c: Erased ToString helper functions for Double and Single.
22488         Now, that implementations ar all in managed code (Double and Single
22489         Formatters).
22490
22491 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
22492
22493         * appdomain.c: Added method for initializing the default context of
22494         a domain. Added internal call for getting the default context.
22495         * appdomain.h: Added context variable in MonoDomain struct.
22496         * domain.c: mono_domain_set also sets the default context of the domain
22497         * icall.c: Mapped internal method InternalGetDefaultContext.
22498         * object.c: mono_object_get_virtual_method returns always a remoting
22499         wrapper if the object is a transparent proxy.
22500         mono_runtime_invoke_array: when creating an object by calling the
22501         constructor, if the created object is a proxy, then the constructor should
22502         be called using the a remoting wrapper.
22503
22504 2003-03-03  Dick Porter  <dick@ximian.com>
22505
22506         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
22507         variable so it compiles on solaris.  Problem spotted by
22508         Christopher Taylor <ct@cs.clemson.edu>
22509
22510 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22511
22512         * appdomain.c:
22513         (get_info_from_assembly_name): don't leak value.
22514
22515         * icall.c:
22516         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
22517         result.
22518
22519 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22520
22521         * assembly.c: export mono_image_load_references ().
22522         * class.c: handle function pointers. mono_class_from_name() now
22523         supports nested type names directly.
22524
22525 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
22526
22527         * reflection.h reflection.c: Encode already created dynamic methods 
22528         and fields correctly as a DEF instead of a REF.
22529
22530         * reflection.c: Get rid of the force_ref argument to 
22531         mono_image_typedef_or_ref since it was wrong in the first place.
22532
22533         * string-icalls.c: add error checking to string constructors according
22534         to the MSDN docs.
22535
22536         * reflection.c: Emit types in the order their TypeBuilders were 
22537         created. Previously, a new table index was assigned to each type before
22538         the tables were emitted. This was wrong because the signature blob
22539         might already refer to a type by its original table index.
22540
22541 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
22544         change.
22545         
22546 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22547
22548         * Makefile.am: make assemblies dir have \ instead of / on windows.
22549
22550 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
22551
22552         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
22553         iterate over the NESTEDCLASS table using a linear search since the
22554         table is not guaranteed to be sorted by the secondary key.
22555
22556         * class.c (mono_class_create_from_typedef): fixed up call to
22557         mono_metadata_nesting_typedef.
22558         
22559 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
22560
22561         * marshal.c (mono_string_to_byvalstr): clear the memory as
22562         suggested by Jerome Laban <jlaban@wanadoo.fr>
22563
22564 2003-02-26  Dick Porter  <dick@ximian.com>
22565
22566         * process.c: Cope with padding in .rsrc blocks
22567
22568 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22569
22570         * metadata.h: reverted the filter_len change, it breaks reflection
22571         
22572 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22573
22574         * metadata.h: added a new field to store the filter_len
22575         
22576
22577 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22578
22579         * reflection.c: handle custom attributes for types and members
22580         created with Reflection.Emit (bug#38422).
22581
22582 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
22583
22584         * reflection.c: define RTSpecialName automatically for constructors for
22585         compatibility with MS.NET.
22586
22587         * reflection.c (mono_reflection_create_runtime_class): initialize
22588         nested_in field of dynamically created classes.
22589
22590 2003-02-22  Martin Baulig  <martin@ximian.com>
22591
22592         * debug-mono-symfile.h: Incremented version number.
22593
22594 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22595
22596         * object.h icall.c process.c: fix warnings.
22597
22598 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * appdomain.h appdomain.c:
22601         (mono_domain_try_type_resolve): split the 
22602         name_or_tb argument into a name and a tb argument.
22603         (mono_domain_has_type_resolve): new function to check whenever the
22604         application has registered a TypeResolve event handler.
22605         
22606         * icall.c reflection.h reflection.c: move the type resolve logic into
22607         mono_reflection_get_type () so it will be invoked when 
22608         Assembly::GetType () is called.
22609
22610         * reflection.c:
22611         (mono_reflection_get_type): renamed to get_type_internal.
22612         (mono_reflection_get_type): fixed type name generation so it works 
22613         for nested types too.
22614         (mono_reflection_get_type): call has_type_resolve () to avoid the 
22615         costly type name generation if there is no resolve event handler.
22616
22617 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22618
22619         * class.c, image.c: load exported types from file references.
22620
22621 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
22622
22623         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
22624           used to cache the managed methods used to create proxies and make 
22625           remote invocation of methods.
22626         * class.h: Added in MonoVTable a flag to indicate that a class needs 
22627           to be remotely created.
22628         * object.c: Modified the method mono_class_vtable(). It now initializes 
22629           the remote flag of the vtable. Modified mono_object_new_specific(), 
22630           so now it checks the remote flag.
22631         * icall.c: Added a couple of internal methods, one for enabling instance 
22632           creation interception for a type, and one for creating objects bypassing
22633           the remote check.
22634
22635 2003-02-18  Martin Baulig  <martin@ximian.com>
22636
22637         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
22638         New interncall to get a method's metadata token.
22639
22640         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
22641         New interncall for the debugger.
22642
22643 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
22644
22645         * class.c (mono_class_setup_vtable): allocate supertype array
22646
22647 2003-02-18  Martin Baulig  <martin@ximian.com>
22648
22649         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
22650
22651 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22652
22653         * reflection.c:
22654         (assembly_name_to_aname): jump over unknown properties (i've found
22655         something like: 'type, assembly, version=xxx, custom=null, public...',
22656         so now will ignore custom=null and still get the rest of the values).
22657
22658 2003-02-17  Dick Porter  <dick@ximian.com>
22659
22660         * threads.c: Have Thread.Start() wait for a semaphore to signal
22661         that the thread has set up all its local data.  This fixes bug
22662         34323, where Abort() raced the new thread's TLS data.
22663
22664         Also removes the handle_store() call from start_wrapper, because
22665         threads are now always created suspended and there is no longer a
22666         race between the parent and child threads to store the info.
22667
22668 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
22669
22670         * image.c: explain the #- heap issue in a message, hopefully
22671         avoiding FAQs on mono-list.
22672
22673 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22674
22675         * icall.c:
22676         (GetEntryAssembly): if the domain has not invoked
22677         AppDomain.ExecuteAssembly yet, return the assembly of the default
22678         AppDomain.
22679
22680 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
22681
22682         * class.c (mono_ldtoken): make it work in dynamic assemblies.
22683
22684 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22685
22686         * metadata.c, reflection.c: simple speedup to type hash
22687         and equals code.
22688
22689 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
22690
22691         * image.c, image.h, class.c, assembly.c: move module loading
22692         to MonoImage. When loading metadata, consider alignemnet from
22693         the start of metadata, not from the metadata address in memory.
22694
22695 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
22696
22697         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
22698         AssemblyBuilder objects. Factored out custom attribute creation into
22699         a separate function.
22700         (create_custom_attr): new function to create custom attributes.
22701
22702 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
22703
22704         * Makefile.am: Got tired of typing the full pathname to pedump.
22705         Until there is another option, am installing this.
22706
22707 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
22708
22709         * class.c (class_compute_field_layout): always set field->parent 
22710         (mono_ldtoken): use mono_defaults.fieldhandle_class;
22711
22712 2003-02-11  Dick Porter  <dick@ximian.com>
22713
22714         * threads-types.h:
22715         * monitor.c: Rewrote Monitor, making lock much faster and
22716         Pulse/Wait work as specified.  Also uses much fewer handles, and only
22717         creates them as needed.
22718
22719         * exception.c: Added SynchronizationLockException
22720
22721         * threads.c: Deleted old Monitor implementation.  The new one is
22722         in a new file.
22723
22724 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22725
22726         * class.c: handled TypedReference type code. Set the correct size for
22727         class data. Setup interface_offsets for interface classes, too.
22728
22729 2003-02-09  Martin Baulig  <martin@ximian.com>
22730
22731         * debug-mono-symfile.h: Reflect latest symbol writer changes.
22732
22733 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
22734
22735         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
22736         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
22737         * object.c: fixed mono_object_get_virtual_method () for interfaces.
22738         * verify.c: check for code that runs after the end of the method.
22739
22740 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22741
22742         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
22743         "System.Math::Round2".
22744         * sysmath.h: Added Floor, Round and Round2 definitions.
22745         * sysmath.c: Modified certain functions that were not 100% compliant
22746         with MS.NET (math precision) and added the implementation of Floor,
22747         Round and Round2.
22748
22749 2003-02-07  Martin Baulig  <martin@ximian.com>
22750
22751         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
22752
22753 2003-02-07  Martin Baulig  <martin@ximian.com>
22754
22755         * debug-mono-symfile.c: Reflected latest symwriter changes.
22756         (mono_debug_create_mono_symbol_file): Removed.
22757         (mono_debug_open_mono_symbol_file): Take an argument which
22758         specifies whether to create a dynamic symbol file.
22759
22760 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
22761
22762         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
22763
22764 2003-02-05  Martin Baulig  <martin@ximian.com>
22765
22766         * reflection.c (mono_image_build_metadata): Make this public,
22767         protect it against being called multiple times, don't create
22768         resources and don't build the compressed metadata here.
22769         (mono_image_create_pefile): Do this here.
22770
22771         * icall.c
22772         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
22773
22774 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22775
22776         * socket-io.c: fixed bug #36322.
22777
22778 2003-02-06  Piers Haken <piersh@friskit.com>
22779
22780         * appdomain.[ch]:
22781         * class.h:
22782         * debug-mono-symfile.c:
22783         * icall.c:
22784         * loader.c:
22785         * mono-config.c:
22786         * monosn.c:
22787         * reflection.c:
22788         * socket-io.c: warning cleanups
22789
22790 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
22791
22792         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
22793         function. works like remoting invoke, but does a check for the Proxy first.
22794
22795 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
22796
22797         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
22798
22799 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
22800
22801         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
22802         array of pointers.
22803         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
22804         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
22805
22806         * object.c (mono_store_remote_field_new): used by the new jit
22807         instead of mono_store_remote_field
22808         (mono_load_remote_field_new): used by the new jit
22809         instead of mono_load_remote_field
22810
22811 2003-02-05  Patrik Torstensson
22812
22813         * appdomain.c: changed unload to take the domain id instead
22814         of domain
22815         
22816         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
22817
22818
22819 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22820
22821         * appdomain.c: don't look for assemblies in ApplicationBase if
22822         PrivateBinPathProbe is set.
22823
22824 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22825
22826         * object.c: make the first argument in main_args contain the absolute
22827         path to the assembly. Fixes bug #37511.
22828
22829 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22830
22831         * icall.c: get correct UTC offset for countries not using daylight
22832         time saving. Fixes bug #30030.
22833
22834 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22835
22836         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
22837         and 1 are the family).
22838
22839 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
22840
22841         * icall.c (ves_icall_InternalExecute): removed wrong assertion
22842
22843         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
22844
22845 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
22846
22847         * reflection.c: added support for SignatureHelper tokens, which is
22848         needed by the Calli opcode.
22849
22850         * reflection.h: track changes to SignatureHelper class.
22851
22852         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
22853
22854 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22855
22856         * appdomain.c: fixed loading assemblies from PrivateBinPath.
22857
22858 2003-02-03  Patrik Torstensson
22859         * appdomain.[c|h], domain.c : 
22860          - Added support for getting a domain via domain id
22861          - Support for setting and getting domain from System.AppDomain 
22862            (used in cross appdomain channel)
22863          - Added support for get/set for a MonoAppContext on a thread 
22864            (Context class in System.Runtime.Remoting.Contexts),
22865          - Removed hack in Get/SetData and ExecuteAssembly.
22866         
22867         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
22868         the managed world to get control when a proxy is created.
22869
22870         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
22871         
22872 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
22873
22874         * icall.c
22875         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22876         Populate the codebase field as well.
22877
22878 2003-02-02  Martin Baulig  <martin@ximian.com>
22879
22880         * debug-mono-symfile.c
22881         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
22882         (mono_debug_symfile_add_method): Allow interncalls.
22883
22884 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22885
22886         * icall.c: throw parse exception if strtod fails or the string is empty.
22887
22888 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
22889
22890         * marshal.c: handle object type separately from defined
22891         class types.
22892
22893 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
22894
22895         * marshal.c: handle NATIVE_LPSTR for strings when it's
22896         explicitly specified.
22897
22898 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
22899
22900         * reflection.c, reflection.h, icall.c: setup the reflection
22901         handle cache for ModuleBuilders and AssemblyBuilders.
22902
22903 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
22904
22905         * reflection.c (reflection_methodbuilder_to_mono_method): set
22906         pinvoke flag
22907
22908 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22909
22910         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
22911
22912 2003-01-29  Dick Porter  <dick@ximian.com>
22913
22914         * threads.c: No need for the fake_thread kludge now that Thread
22915         doesn't run a class constructor
22916         
22917 2003-01-29  Dick Porter  <dick@ximian.com>
22918
22919         * threads.c: Use g_direct_hash instead of the rather bogus
22920         g_int_hash
22921
22922 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
22923
22924         * marshal.c (mono_marshal_get_native_wrapper): add check for null
22925         (fix pinvoke12.exe)
22926         (mono_marshal_get_struct_to_ptr): generate valid IL code
22927         (mono_marshal_get_ptr_to_struct): generate valid IL code
22928         (*): correctly set sig->pinvoke, we need to memdup the signature
22929         to do that
22930
22931 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
22934         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
22935
22936 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22937
22938         * profiler.c: provide more callers information.
22939
22940 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
22941
22942         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
22943
22944         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
22945
22946         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
22947
22948 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22949
22950         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
22951         exception instead of going into an infinite loop on dates which it 
22952         can't yet handle.
22953
22954         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
22955         out-of-range exception if needed.
22956
22957         * class.c (mono_class_setup_vtable): allow a virtual method to provide
22958         an implementation for an interface method and to override an inherited
22959         method at the same time. 
22960         Imagine a scenario when a virtual method is used to override a
22961         virtual abstract method in a parent class, and this same method 
22962         provides an implementation for an method inherited from an interface. 
22963         In this case, the interface resolution code will set im->slot, which 
22964         means that the virtual method override pass will skip this method 
22965         which means a pointer to the abstract method inherited from the parent
22966         will remain in the vtable of this non-abstract class.
22967
22968         * class.c: (mono_class_setup_vtable): continue search for a real 
22969         method if only an abstract method is found.     
22970
22971 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22972
22973         * reflection.c: add size to encoding for ByValStr and ByValArray
22974         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
22975
22976 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22977
22978         * class.c (mono_class_setup_vtable): pass the override info as an
22979         argument.
22980
22981         * class.c (mono_class_setup_vtable): set the slot of overriding methods
22982         correctly.
22983         
22984         * reflection.c (ensure_runtime_vtable); add support for method 
22985         overrides.
22986         
22987 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22988
22989         * reflection.c (resolution_scope_from_image): Hack to work to work with
22990         dynamic assemblies.
22991
22992         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
22993         added a 'force_ref' argument to force this function to allways return 
22994         a TypeRef. This is needed by mono_image_get_memberref_token ().
22995         
22996 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22997
22998         * reflection.c (mono_image_get_type_info): interfaces really don't have
22999         a parent.
23000
23001         * reflection.c (mono_image_basic_init): fill out missing fields of
23002         image structure.
23003
23004         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
23005         dynamic assemblies. This is required so dynamic assemblies show up in
23006         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
23007         Type::GetType() etc. This is consistent with MS behaviour.
23008
23009         * image.c image.h reflection.c: add newly created classes to the name 
23010         cache so mono_class_get () will find them.      
23011
23012 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23013
23014         First part of changes to get IKVM.NET running under mono.
23015         
23016         * appdomain.h, appdomain.c: added new function 
23017         mono_domain_try_type_resolve() which will emit TypeResolve events. 
23018         This function will call AppDomain::DoTypeResolve to do the actual work.
23019
23020         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
23021         moved existing code dealing with dynamic tokens to a new function 
23022         called mono_reflection_lookup_dynamic_token (). This function will 
23023         raise TypeResolve events when appropriate. Since reflection.c is not 
23024         part of libmetadata, a new hook function called 
23025         mono_lookup_dynamic_token() is added to class.c which will call this.
23026
23027         * assembly.h assembly.c: make the invoke_load_hook function public,
23028         so it can be called for dynamic assemblies.
23029
23030         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
23031
23032         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
23033         type isn't found.
23034
23035         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
23036         MonoGHashTable, since it contains pointers to objects which the GC 
23037         needs to track.
23038
23039         * assembly.c (search_loaded): remove unused variable.
23040         
23041 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
23042
23043         * object.c: fixed issue exposed by gcc-generated IL programs
23044         that use RVA data for pointers.
23045
23046 2003-01-25  Martin Baulig  <martin@ximian.com>
23047
23048         * threads.c (start_wrapper): Moved the initialization of
23049         `start_func' above the mono_new_thread_init() call to which we
23050         pass it as argument.
23051
23052 2003-01-24  Martin Baulig  <martin@ximian.com>
23053
23054         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
23055         the MonoThread pointer.
23056
23057 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
23058
23059         * icall.c: Rename `PowImpl' to Pow.
23060
23061 2003-01-23  Dick Porter  <dick@ximian.com>
23062
23063         * threads.c (start_wrapper): Create a Thread object if needed, so
23064         the Main() thread can do the class initialisation in a subthread
23065         that has been set up to allow managed code execution.
23066
23067         Pass the thread ID instead of the MonoThread pointer to the thread
23068         start and attach callbacks.  This change is required, because the
23069         jit thread start callback must be called _before_ the Thread
23070         object can be created.
23071         
23072         (mono_thread_init): Removed much object creation code that is no
23073         longer needed.  No managed code is called from here now.
23074
23075         * object.c (mono_runtime_exec_managed_code): Create a subthread
23076         for Main, and call back to the runtime to use it.
23077         Set the exit code when Main exits.
23078
23079         * gc.c: Make sure domain finalisation happens in a subthread.
23080         Re-enable threaded GC, fixing bug 31333 (again).
23081
23082         * environment.c: System.Environment internall calls (so far just
23083         ExitCode is here, the others are still in icall.c)
23084
23085         * appdomain.c (mono_runtime_cleanup): All threads running managed
23086         code should have finished before mono_runtime_cleanup() is
23087         reached, so no need to clean up threads.
23088
23089 2003-01-22  Martin Baulig  <martin@ximian.com>
23090
23091         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
23092         `gpointer func' arguments.      
23093         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
23094         but added `MonoThread *thread' argument.
23095         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
23096
23097         * threads.c (mono_new_thread_init): Added `gpointer func' argument
23098         and pass it to the mono_thread_start_cb callback.
23099         (mono_install_thread_callbacks): New public function to install a
23100         set of callbacks which are set by the debugger.
23101         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
23102
23103 2003-01-22  Martin Baulig  <martin@ximian.com>
23104
23105         * Makefile.am: Install debug-mono-symfile.h.
23106
23107 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
23108
23109         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
23110
23111 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
23112
23113         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
23114         * class.c (mono_ptr_class_get): correctly set access levels of pointers
23115         (mono_array_class_get): correctly set access levels of arrays
23116
23117 2003-01-20      Patrik Torstensson
23118         * image.h (MonoAssemblyName): changed major, minor, build, revision
23119         from signed to unsigned.
23120
23121 2003-01-20  sean kasun <skasun@azstarnet.com>
23122
23123         * reflection.c (load_cattr_value): Now this handles
23124         MONO_TYPE_SZARRAY.  Fixes bug #35629
23125
23126 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
23127
23128         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
23129         integer value
23130
23131 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23132
23133         * decimal.c: fixed bug #26056.
23134
23135 2003-01-17  Martin Baulig  <martin@ximian.com>
23136
23137         * gc.c: Raise an ExecutionEngineException instead of using g_error().
23138
23139 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23140
23141         * exception.[ch]:
23142         (mono_get_exception_type_initialization): new function.
23143
23144         * object.c: throw a TypeInitializationException when an exception is
23145         thrown invoking the class constructor.
23146
23147 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23148
23149         * reflection.c: fixed attribute reading.
23150
23151 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23152
23153         * icall.c:
23154         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
23155         provided, look for the type in the calling assembly and then in
23156         mscorlib; if the assembly name is provided, only try that one.
23157
23158 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23159
23160         * object.c: register the vtable before there is a chance it's
23161         queried again recursively.
23162
23163 2003-01-13  Duncan Mak  <duncan@ximian.com>
23164
23165         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
23166         gc-internal.h. 
23167         
23168 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
23169
23170         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
23171
23172 2003-01-11  Martin Baulig  <martin@ximian.com>
23173
23174         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
23175         this to 20 for the release.
23176
23177 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
23178
23179         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
23180
23181         * loader.c (mono_method_get_marshal_info): bug fix
23182
23183         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
23184         structures with explicit layout
23185
23186 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23187
23188         * profiler.c: made the output more readable (and sorted). 
23189         Added caller information for the allocation profiler.
23190
23191 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
23192
23193         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
23194
23195 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23196
23197         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
23198         to get value types.
23199         
23200 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
23201
23202         * object.c, profiler.h, profiler.c, profiler-private.h:
23203         Added object allocation profiler.
23204
23205 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
23206
23207         * reflection.h, reflection.c: handle global methods.
23208         Compress blob entries.
23209
23210 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
23211
23212         * marshal.c: fix compilation.
23213
23214 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
23215
23216         * loader.c (mono_method_get_marshal_info): impl.
23217
23218         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
23219
23220 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23221
23222         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
23223         for reference types.
23224
23225 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
23226
23227         * loader.c: fixed off by one error in loaded parameter names.
23228
23229 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
23230
23231         * marshal.c (mono_marshal_get_icall_wrapper): like
23232         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
23233         instead of a MonoMethod.
23234
23235 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23236
23237         * decimal.c: fixed bug #36537.
23238
23239 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
23240
23241         * marshal.c: throw a missing method exception if a
23242         P/Invoke method is not found.
23243
23244 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23245
23246         * icall.c: allow a null this for constructors.
23247
23248 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23249
23250         * icall.c: raise the proper exceptions if the arguments to the
23251         internal Invoke are incorrect.
23252
23253 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
23254
23255         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
23256
23257 2003-01-03  Martin Baulig  <martin@ximian.com>
23258
23259         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23260
23261 2002-12-31  Martin Baulig  <martin@ximian.com>
23262
23263         * debug-mono-symfile.c: Completely rewrote the type section.
23264         Instead of using individual malloc()ed fields, we use one big
23265         continuous memory area and offsets into this area.
23266         See the comments in the source code for details.
23267
23268 2002-12-30  Martin Baulig  <martin@ximian.com>
23269
23270         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
23271
23272 2002-12-30  Martin Baulig  <martin@ximian.com>
23273
23274         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
23275         line number table in this data blob instead of using an external
23276         pointer.
23277
23278 2002-12-28  Martin Baulig  <martin@ximian.com>
23279
23280         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23281
23282 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
23283
23284         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
23285         as a boxed return type.
23286
23287 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
23288
23289         * appdomain.c
23290         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
23291         g_build_filename to properly get separators on the filename created.
23292
23293         * object.h: Small change, introduce MonoMarshalByRefObject to
23294         track the layout of that structure in the C# universe as we make
23295         changes there.
23296
23297 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
23298
23299         * object.c: removed assert to allow static fields on interfaces.
23300         * loader.c: a TypeSpec may be used for any type, not just arrays.
23301
23302 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
23303
23304         * class.c, class.h: added mono_class_array_element_size ().
23305         Ignore static methods in interfaces.
23306
23307 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23308
23309         * threads.c: fixed the build under cygwin.
23310
23311 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
23312
23313         * reflection.c: handle nullref constants. Allocate keys for
23314         reflection handles with the GC.
23315
23316 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23317
23318         * threads.c, threads.h: added mono_thread_get_abort_signal()
23319         to get a suitable signal for thread abort.
23320
23321 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23322
23323         * metadata.c: fix handling of ExportedType table.
23324
23325 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23326
23327         * icall.c: added WriteWindowsDebugString internal call.
23328
23329 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23330
23331         * reflection.h: added fields to match C# implementation.
23332
23333 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23334
23335         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
23336
23337 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
23338
23339         * gc.h, gc-internal.h: Rename header for GC internal calls to
23340         gc-internal.h from gc.h as to not clash with Boehm GC having its
23341         header installed as <gc.h> in outside include paths.
23342         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
23343         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
23344
23345 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23346
23347         * icall.c: assign minor, build and revision in FillName.
23348
23349 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
23350
23351         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
23352         Added support for running code generated by Reflection.Emit.
23353
23354 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23355
23356         * appdomain.c: check for NULL argument in LoadFrom.
23357
23358 2002-12-10  Dick Porter  <dick@ximian.com>
23359
23360         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
23361
23362 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23363
23364         * appdomain.c: fix buglet when building exe file name.  Handle full
23365         assembly name (needed after latest changes to AssemblyName).
23366         * image.c:
23367         (mono_image_close): free some hashtables.
23368
23369 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
23370
23371         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
23372         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
23373         on some systems (redhat 7.3) 
23374
23375 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
23376
23377         * threads.c: delete the critical section of a sync block,
23378         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
23379
23380 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
23381
23382         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
23383
23384 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23385
23386         * appdomain.[ch]: handle the assembly preload event to try loading the
23387         assemblies using the paths we have in the current domain.
23388
23389         * assembly.[ch]: created an assembly preload hook that is called to try
23390         loading the assembly by other means that the ones provided here.
23391
23392         * domain.c: initialize the domain search path.
23393
23394         From now on, assemblies (TODO: except corlib and System) are loaded
23395         according to these rules when using mono_assembly_load ():
23396
23397                 1. It tries to load the assembly from the ApplicationBase
23398                 of the current domain appending .dll and .exe (TODO: have to
23399                 try loading from name/name.dll and name/name.exe).
23400
23401                 2. It tries the search path specified in PrivateBinPath for the
23402                 current domain (if any).
23403
23404                 3. Previous behavior.
23405
23406 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
23407
23408         * icall.c: implemented GetInterfaceMap() related icall.
23409         * domain.c, loader.h: load MethodInfo in mono_defaults.
23410
23411 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
23412
23413         * gc.c: disable the finalizer thread for now, untill all the issues
23414         with it are resolved.
23415
23416 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23417
23418         * string-icalls.c: handle embedded nulls in string ctor when the
23419         length is specified.
23420
23421 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
23422
23423         * class.c: look for explicit interface implementation in parent
23424         classes, too.
23425
23426 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
23427
23428         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
23429
23430 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
23431
23432         * gc.c: protect handles with a critical section.
23433
23434 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23435
23436         * icall.c:
23437         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
23438         parameters. If no assembly specified, try getting the type from all
23439         the assemblies in the current domain, else, load the assembly and get
23440         the type from it.
23441
23442 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23443
23444         * marshal.c: applied patch from Aleksey Demakov that fixes
23445         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
23446
23447 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23448
23449         * icall.c: fixed get_location.
23450
23451 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
23452
23453         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
23454         declarations to make it work with older gcc. 
23455
23456         * loader.c (mono_get_method): set signature->pinvoke for native calls
23457
23458 2002-11-20  Dick Porter  <dick@ximian.com>
23459
23460         * threads.c (mono_thread_init): Set the main thread's handle
23461
23462 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
23463
23464         * gc.c: allow compilation without GC support. Changed to match the
23465         mono coding style.
23466
23467 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
23468
23469         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
23470
23471 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
23472
23473         * reflection.c: set a public key token on the core assemblies.
23474
23475 2002-11-18  Dick Porter  <dick@ximian.com>
23476
23477         * threads.c: Split out some thread initialisation so that other
23478         files can set the start callback function.
23479
23480         * gc.c: Run finalisers in a separate thread, to avoid stack
23481         overflow.  Fixes bug 31333.
23482
23483         * appdomain.c: Set up GC finalisation thread.
23484
23485         * reflection.c: 
23486         * object.c: 
23487         * domain.c: Use gc.h macros for GC_malloc
23488         
23489 2002-11-15  Dick Porter  <dick@ximian.com>
23490
23491         * threadpool.c: 
23492         * threads.c:
23493         * appdomain.c: Removed mono_runtime_init_with_attach(),
23494         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
23495         merging the extra parameter with the existing function.  Removed
23496         unneeded code in mono_thread_attach().
23497
23498 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
23499
23500         * image.c (mono_image_loaded_by_guid): a method to get loaded
23501         images by guid. 
23502         (load_metadata_ptrs): we store the guid as string.
23503
23504 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
23505
23506         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
23507
23508         * metadata.c (mono_guid_to_string): imported method form Zoltan
23509         Varga (slightly modified)
23510
23511         * assembly.c (mono_assembly_open): load precompiled code
23512
23513         * loader.h (MonoMethod): we store the method token for use in the
23514         aot compiler. 
23515
23516 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23517
23518         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
23519         the hook function called when an assembly is loaded.
23520         
23521         * domain.c: Modified file.
23522         (mono_domain_assembly_load): removed hash table insertion of assemblies.
23523
23524         Fixes bug #33196.
23525
23526 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
23527
23528         * reflection.c: Map PEFileKind to the value expected by the WinNT
23529         image loader. 
23530
23531 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23532
23533         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
23534         Read until the buffer is filled completely.
23535
23536 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23537
23538         * icall.c: implemented MonoType.InternalGetEvent ().
23539
23540 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23541
23542         * appdomain.c: implemented InitAppDomainSetup. Delayed
23543         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
23544         the entry_assembly.
23545
23546         * assembly.c: base_dir is now an absolute path ending with
23547         G_DIR_SEPARATOR.
23548
23549         * icall.c: modified get_location according to the above changes.
23550
23551         * object.c: init AppDomain.SetupInformation for the default domain after
23552         we have the entry assembly.
23553
23554         * domain.c: when unloading a domain, setup = NULL.
23555
23556 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
23557
23558         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
23559
23560 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
23561
23562         * object.h, object.c: introduced mono_object_get_virtual_method ()
23563         to lookup the method invoked on an object when a callvirt is done on
23564         a method.
23565         * icall.c: make MethodInfo::Invoke() always do a virtual call.
23566
23567 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23568
23569         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
23570         current domain when loaded an assembly and failed to load it.
23571
23572         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
23573
23574 2002-10-31  Dick Porter  <dick@ximian.com>
23575
23576         * icall.c: 
23577         * file-io.h: 
23578         * file-io.c: Return the error status in a parameter, as the
23579         GetLastError() value has long since been blown away if we try and
23580         look it up in a subsequent internal call invocation.  Delete the
23581         GetLastError() internal call, because it's useless.
23582
23583 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
23584
23585         * class.[ch]: added cast_class to fix bug 29517
23586
23587 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
23588
23589         * marshal.c: create valid IL code in the filter clause:
23590         the new JIT is less forgiving:-)
23591
23592 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23593
23594         * icall.c: removed get_property internal call.
23595
23596 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
23597
23598         * appdomain.h domain.c: Added an ID to appdomains.
23599         
23600         * threads.c threads.h icall.c: Implement icall
23601         Thread:GetDomainID(), and remove unused icall 
23602         CurrentThreadDomain_internal.
23603
23604 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23605
23606         * icall.c: Don't recurse through the base types in GetConstructor.
23607         Fixes bug #32063. 
23608
23609 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23610
23611         * mempool.h, mempool.c: added mono_mempool_empty() and
23612         mono_mempool_stats().
23613
23614 2002-10-23  Dick Porter  <dick@ximian.com>
23615
23616         * file-io.c: 
23617         * file-io.h: 
23618         * icall.c: Added MonoIO.GetFileType internal call
23619
23620 2002-10-17  Dick Porter  <dick@ximian.com>
23621
23622         * appdomain.c (mono_runtime_cleanup): Don't signal the async
23623         delegate semaphore before waiting for all threads to finish,
23624         because new threads can also call async delegates.  Fixes bug
23625         32004.
23626
23627         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
23628         of 3 seconds, in case another async job is queued.  (This part is
23629         needed because the bug fix reintroduced the 3s exit lag.)  This
23630         makes the mono_runtime_shutdown flag superfluous.
23631
23632 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23633
23634         * reflection.c: include ehader size in method section headers.
23635         Really check for suplicated modules entries.
23636
23637 2002-10-17  Martin Baulig  <martin@gnome.org>
23638
23639         * debug-mono-symfile.c: Added back support for locals.
23640
23641 2002-10-14  Martin Baulig  <martin@gnome.org>
23642
23643         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
23644         MONO_TYPE_VOID.
23645
23646 2002-10-14  Martin Baulig  <martin@gnome.org>
23647
23648         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
23649         mono_class_get() instead of looking in the class cache. 
23650
23651 2002-10-13  Martin Baulig  <martin@gnome.org>
23652
23653         * debug-mono-symfile.c: Set version number to 28, include the
23654         signature in method names.
23655
23656 2002-10-13  Martin Baulig  <martin@gnome.org>
23657
23658         * debug-mono-symfile.h: Set version number to 27.
23659
23660 2002-10-11  Martin Baulig  <martin@gnome.org>
23661
23662         * gc.c: Don't register/unregister NULL pointers as disappearing links.
23663
23664 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23665
23666         * metadata.c, metadata.h: added helper function to allocate signatures.
23667
23668 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23669
23670         * icall.c: added internal call to get the location of machine.config.
23671
23672 2002-10-08  Martin Baulig  <martin@gnome.org>
23673
23674         * debug-mono-symfile.c: Ignore classes with a pending init for the
23675         moment.
23676
23677 2002-10-03  Dick Porter  <dick@ximian.com>
23678
23679         * threads.c: Freebsd pthread_t is a pointer
23680
23681 2002-10-03  Dick Porter  <dick@ximian.com>
23682
23683         * socket-io.c: Implemented GetHostName_internal
23684
23685 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23686
23687         * mono-config.c:
23688         (mono_config_parse_file): don't leak the text.
23689
23690 2002-10-02  Martin Baulig  <martin@gnome.org>
23691
23692         * debug-mono-symfile.c: Added support for methods.
23693
23694 2002-10-01  Martin Baulig  <martin@gnome.org>
23695
23696         * debug-mono-symfile.c: Don't emit methods and line numbers for
23697         the dynamic symbol file, just write the type table.  We can easily
23698         have an external helper program which creates a symbol file for an
23699         IL file.        
23700
23701 2002-10-01  Dick Porter  <dick@ximian.com>
23702
23703         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
23704         Only add the handle to the cleanup array when we're about to
23705         launch the thread.  Bug 31425 deadlocked when the test was run on
23706         mono under w32.
23707
23708 2002-10-01  Martin Baulig  <martin@gnome.org>
23709
23710         * debug-mono-symfile.c: Added support for properties.
23711
23712 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23713
23714         * reflection.c: unaligned store fix from Mark Crichton
23715         <crichton@gimp.org>.
23716
23717 2002-09-27  Martin Baulig  <martin@gnome.org>
23718
23719         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
23720         New interncall.
23721
23722 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23723
23724         * assembly.h, assembly.c: use a sane API to hook into the assembly
23725         loading process instead of a useless special-purpouse hack
23726         (ngen needs a hook, too, for example).
23727
23728 2002-09-27  Dick Porter  <dick@ximian.com>
23729
23730         * threads.c (mono_thread_init): Call GetCurrentProcess() so
23731         io-layer can set up some process handle info.  Not needed on w32,
23732         but doesn't hurt either.
23733
23734         * process.c: Pass the program name in the second parameter to
23735         CreateProcess, so the path is searched.  Include the working
23736         directory. Implemented process name, process enumeration, and some
23737         process detail internal calls.
23738         
23739         * icall.c: Added internal calls for process lookup, and some
23740         process details
23741
23742 2002-09-26  Martin Baulig  <martin@gnome.org>
23743
23744         * assembly.c (mono_install_open_assembly_hook): New global
23745         function to install a function to be invoked each time a new
23746         assembly is loaded.
23747         (mono_assembly_open): Run this callback function if set.
23748
23749         * debug-mono-symfile.c: Put back line numbers for the dynamic
23750         symbol file and also record the .il file as source file.  This
23751         allows us to install the temporary symbol file as `file.dbg' just
23752         like a compiler-generated one.
23753
23754 2002-09-26  Nick Zigarovich <nick@chemlab.org>
23755
23756         * Corrected typo in gc.c (BOHEM vs BOEHM).
23757
23758 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23759
23760         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
23761         GetProperties. Also avoid calling g_slist_length in GetProperties and
23762         GetMethods.
23763
23764 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23765
23766         * reflection.c: avoid unaligned stores (bug spotted by
23767         Mark Crichton  <crichton@gimp.org>).
23768
23769 2002-09-25  Martin Baulig  <martin@gnome.org>
23770
23771         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
23772         instead of guint64 for addresses and added prologue/epilogue info.
23773
23774 2002-09-25  Martin Baulig  <martin@gnome.org>
23775
23776         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
23777         store line number info.  For the dynamic symbol file, we only need
23778         to provide the JIT generated dynamic line number info for the dynamic
23779         symbol file.
23780
23781 2002-09-25  Martin Baulig  <martin@gnome.org>
23782
23783         * debug-mono-symfile.h: Incremented version number.
23784
23785 2002-09-24  Martin Baulig  <martin@gnome.org>
23786
23787         * class.c (mono_debugger_class_init_func): New global function
23788         pointer variable.
23789         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
23790         call it.
23791
23792         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
23793         function.  This is called via the mono_debugger_class_init_func
23794         hook to add all types to the dynamic type table.
23795         (ves_icall_MonoDebugger_GetType): New interncall to get a class
23796         from its metadata token.
23797
23798         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
23799         New interncall for the debugger.
23800
23801 2002-09-24  Nick Drochak <ndrochak@gol.com>
23802
23803         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
23804         before using it in case it is null.
23805         
23806 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23807
23808         * metadata.c: allow custom modifiers in local var signatures
23809         (bug spotted by Zoltan Varga).
23810
23811 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23812
23813         * class.c: deal with the <Module> class that may have a NULL vtable.
23814         Eliminate warnings.
23815
23816 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23817
23818         * image.c, image.h: more strong name helpers.
23819         * monosn.c: more work: convert pem keys to cryptoapi format.
23820
23821 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23822
23823         * string-icalls.c: speedup IndexOf.
23824
23825 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23826
23827         * icall.c: updates from Zoltan.2.Varga@nokia.com.
23828
23829 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23830
23831         * icall.c: cleanup: use mono_object_domain ().
23832
23833 2002-09-23  Martin Baulig  <martin@gnome.org>
23834
23835         * debug-mono-symfile.c: Improved type support.
23836
23837 2002-09-22  Martin Baulig  <martin@gnome.org>
23838
23839         * debug-mono-symfile.c: Added support for reference types and strings.
23840
23841 2002-09-22  Martin Baulig  <martin@gnome.org>
23842
23843         * debug-mono-symfile.c: Started to work on the type table.
23844
23845 2002-09-21  Martin Baulig  <martin@gnome.org>
23846
23847         * debug-mono-symfile.c: Largely reworked the symbol table format.
23848         The symbol table is now incrementally updated each time a new
23849         method is added.  We're now also using our own magic and version
23850         so that you don't need to recompile all your classes if the
23851         dynamic table changes.
23852         (mono_debug_update_mono_symbol_file): Removed.
23853         (mono_debug_symfile_add_method): New function to add a method.
23854
23855 2002-09-21  Martin Baulig  <martin@gnome.org>
23856
23857         * icall.c
23858         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
23859         New interncall.
23860
23861         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
23862         New interncall to get a method from its metadata token.
23863
23864 2002-09-21  Martin Baulig  <martin@gnome.org>
23865
23866         * debug-mono-symfile.c: Create type table.
23867
23868 2002-09-20  Martin Baulig  <martin@gnome.org>
23869
23870         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
23871
23872 2002-09-20  Martin Baulig  <martin@gnome.org>
23873
23874         * debug-mono-symfile.c: Provide information about params and locals.
23875
23876 2002-09-20  Martin Baulig  <martin@gnome.org>
23877
23878         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
23879         New interncall.
23880
23881         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
23882         interncall to get a method from its metadata token.
23883
23884 2002-09-20  Martin Baulig  <martin@gnome.org>
23885
23886         * debug-mono-symfile.c: Added a few checks for method->header
23887         being non-NULL.  This should never happen, but for the moment
23888         let's use a g_warning() rather than a g_assert().
23889
23890 2002-09-19  Mark Crichton  <crichton@gimp.org>
23891
23892         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
23893         even if support for it isn't present.  Added an #ifdef to fix this.
23894
23895         * socket-io.c: Added checks back for Solaris support.
23896
23897 2002-09-19  Martin Baulig  <martin@gnome.org>
23898
23899         * debug-mono-symfile.c (read_string, write_string): Reflect latest
23900         changes in the symbol file format.
23901
23902 2002-09-18  Martin Baulig  <martin@gnome.org>
23903
23904         * debug-mono-symfile.c: Set version number to 21.
23905
23906 2002-09-18  Dick Porter  <dick@ximian.com>
23907
23908         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
23909         on netbsd.  Fixes bug 30051.
23910
23911 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23912
23913         * reflection.c:
23914         (set_version_from_string): little fix.
23915
23916 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23917
23918         * monosn.c, Makefile.am: added strong name utility.
23919         * reflection.h, reflection.c: implemented delayed signing,
23920         locale, version and hash id assembly attributes.
23921
23922 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23923
23924         * loader.c, metadata.c: load param attributes in signatures.
23925
23926 2002-09-16  Martin Baulig  <martin@gnome.org>
23927
23928         * debug-mono-symfile.c: Added string table with all method names.
23929
23930 2002-09-14  Martin Baulig  <martin@gnome.org>
23931
23932         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
23933         fast method lookup.
23934
23935 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23936
23937         * reflection.c: record the public key token of referenced assemblies.
23938
23939 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23940
23941         * image.c, image.h: added functions to get the strong name and the
23942         public key of an assembly.
23943         * pedump.c: use them.
23944
23945 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
23946
23947         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
23948
23949 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
23950
23951         * marshal.c (mono_marshal_get_managed_wrapper): Added
23952         MONO_TYPE_BOOLEAN 
23953
23954 2002-09-11  Martin Baulig  <martin@gnome.org>
23955
23956         * gc.c: Call GC_unregister_disappearing_link() on all links when
23957         finalizing them, this is necessary to aviod a crash in boehm's
23958         finalize handler.
23959
23960 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23961
23962         * gc.c: handle GetTarget for finalized objects spotted and fixed by
23963         nick@chemlab.org.
23964
23965 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23966
23967         * icall.c: implemented MonoType::Module.
23968         * reflection.c, reflection.h: mono_module_get_object () from
23969         Tomi Pakarinen <tomi.pakarinen@welho.com>.
23970
23971 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23972
23973         * icall.c: ignore overridden methods in GetMethods ().
23974         Fix for FieldInfo::SetValue().
23975         * object.c: handle float/double in runtime invoke.
23976
23977 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23978
23979         * object.c: allow a constructor to be called again on an object.
23980
23981 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23982
23983         * class.h, class.c: move field layout code to it's own function and
23984         export it. Get an interface id earlier. Move fields in MonoClass
23985         so they are more cache friendly and align the bitfields.
23986         * loader.c: temporary handle get_param_names() for a runtime method.
23987         * reflection.c, reflection.h: more code to handle runtime creation of
23988         types.
23989
23990 2002-09-09  Martin Baulig  <martin@gnome.org>
23991
23992         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
23993         signature with the pinvoke field being set for the actual call.
23994
23995 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23996
23997         * icall.c: removed some unused icalls. Start of map of glib charsets
23998         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
23999
24000 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24001
24002         * debug-helpers.c: break infinite loop (found and fixed by
24003         Holger Arnold <harnold@gmx.de>).
24004
24005 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24006
24007         * icall.c: target may be null in create_delegate.
24008
24009 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24010
24011         * marshal.c: handle a boolean return type.
24012
24013 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24014
24015         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
24016
24017 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24018
24019         * gc.c: fix weakreferences.
24020
24021 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24022
24023         * icall.c: added icall to get default codepage.
24024
24025 2002-09-03  Dick Porter  <dick@ximian.com>
24026
24027         * threads.h: 
24028         * threads.c: Use MonoThread instead of MonoObject where
24029         apropriate.
24030
24031         Store running thread objects in a hash table, so that we have all
24032         the info to hand when waiting for them to finish
24033         (means we don't need OpenThread() any more, so mingw builds should
24034         be fully functional again.)
24035
24036         * verify.c:
24037         * object.h: Added thread ID to MonoThread
24038
24039 2002-09-03  Martin Baulig  <martin@gnome.org>
24040
24041         * icall.c (System.Reflection.Assembly::get_location): New interncall.
24042
24043 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24044
24045         * icall.c: fixed leak in get_temp_path. Thanks lupus.
24046
24047 2002-09-03  Martin Baulig  <martin@gnome.org>
24048
24049         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
24050         argument to store the end address of the disassembled instruction.
24051
24052         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
24053         here from debug-symfile.h.
24054         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
24055         JIT into this struct.
24056         (MonoSymbolFile): Added `char *image_file' field.
24057         (MonoDebugGetMethodFunc): Removed.
24058         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
24059         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
24060         (mono_debug_find_method): New method.
24061
24062         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
24063         create a full symbol file.
24064         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
24065         and static symbol files.
24066         (mono_debug_find_method): The symbol file keeps an internal method hash,
24067         call this to get a MonoDebugMethodInfo from a MonoMethod.
24068
24069         * debug-symfile.[ch]: Removed.
24070
24071 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
24072
24073         * image.c (do_mono_image_open): Remove linker version check.
24074
24075 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
24076
24077         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
24078         wrappers for instance methods.
24079         
24080 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24081
24082         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
24083
24084 2002-08-28  Dick Porter  <dick@ximian.com>
24085
24086         * Makefile.am: Export HOST_CC for w32 builds
24087
24088 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24089
24090         * file-io.c process.c: MonoString are null terminated, no
24091         need for mono_string_to_utf16() anymore.
24092
24093 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24094
24095         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
24096
24097 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
24098
24099         * icall.c, reflection.h: speedup System.MonoType.
24100
24101 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24102
24103         * reflection.c: allow null as the value of a string argument in
24104         custom attributes constructors.
24105
24106 2002-08-27  Martin Baulig  <martin@gnome.org>
24107
24108         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
24109         `trampoline_address' field.
24110
24111 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
24112
24113         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
24114         check (fixes bug #29486) 
24115
24116 2002-08-27  Martin Baulig  <martin@gnome.org>
24117
24118         * debug-mono-symfile.c: Changed the file format in a way that allows us
24119         open it read-only and to use a specially malloced area for all the
24120         dynamic data.  We can now also generate a symbol file on-the-fly if we're
24121         debugging IL code and there is no MCS generated symbol file for it.
24122
24123 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24124
24125         * object.c: added a define for a good string and array
24126         creation speedup (not enabled by default because we need to deal with
24127         the synch stuff).
24128
24129 2002-08-26  Martin Baulig  <martin@gnome.org>
24130
24131         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
24132         function to create a dynamic symbol file.  This is used by the
24133         debugger to create a symbol file for IL code on-the-fly.
24134
24135 2002-08-26  Martin Baulig  <martin@gnome.org>
24136
24137         * loader.c (mono_lookup_pinvoke_call): Include the error message
24138         from g_module_error() in the error message.
24139
24140 2002-08-24  Martin Baulig  <martin@gnome.org>
24141
24142         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
24143         function to update the symbol file.  The symbol file is mmap()ed
24144         writable, but private.  This allows us to install the symbol file
24145         together with the assembly.
24146
24147 2002-08-24  Martin Baulig  <martin@gnome.org>
24148
24149         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
24150         but they can read the new symbol file format which mcs is now creating.
24151
24152         * debug-symfile.c (mono_debug_find_source_location): Moved to
24153         debug-mono-symfile.c; this is now operating on the new symbol file.
24154
24155 2002-08-23  Martin Baulig  <martin@gnome.org>
24156
24157         * debug-helpers.c (mono_method_desc_from_method): New function to get
24158         a MonoMethodDesc from a MonoMethod.
24159
24160 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24161
24162         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
24163         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
24164
24165 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24166
24167         * string-icalls.[ch]: make helper methods static.
24168
24169 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24170
24171         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
24172         types to it and to SetValueInternal.
24173
24174         * object.c: Moved handle_enum label to its proper place. This was the
24175         f... bug! ;-)
24176
24177         This time i compiled mcs and gtk-sharp and they both work.
24178
24179 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24180
24181         * icall.c: reverted partially my previous patch until 
24182         object.c:set_value handles enums correcly.
24183
24184 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24185
24186         * icall.c:
24187         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
24188         (ves_icall_System_Environment_get_MachineName): removed warning when
24189         compiling under cygwin.
24190
24191 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24192
24193         * object.c: fixed field_get_value() for reference types.
24194
24195 2002-08-22  Dick Porter  <dick@ximian.com>
24196
24197         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
24198         Don't free a buffer while it's still needed.  Patch from Jonathan
24199         Liger <Jonathan.liger@wanadoo.fr>
24200
24201 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
24202
24203         * icall.c (ves_icall_System_Environment_get_Platform): Add new
24204         internal call.
24205
24206 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
24207
24208         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
24209         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
24210
24211         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
24212         we call unmanaged code which throws exceptions.
24213
24214 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24215
24216         * appdomain.h: added per-domain entry_assembly.
24217         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
24218         arguments.
24219         * icall.c: Assembly::GetEntryAssembly icall.
24220         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
24221         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
24222
24223 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24224
24225         * appdomain.h, gc.c: added mono_domain_finalize ().
24226
24227 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24228
24229         * object.c:
24230         (mono_print_unhandled_exception): changed g_warning by g_printerr
24231         because g_log has a 1024 characters limit (yeah, i got a big stack
24232         trace). Don't print exception name, that should be in ToString 
24233         returned string.
24234
24235 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24236
24237         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
24238         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
24239
24240 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24241
24242         * object.c:
24243         (mono_print_unhandled_exception): after previous commit, i realized
24244         that MS calls ToString on the exception. I changed this function to
24245         do that. This way we get stack_trace for free.
24246
24247 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24248
24249         * object.c:
24250         (mono_print_unhandled_exception): invoke Message property instead of
24251         getting 'message' field from Exception. Don't allocate memory for
24252         'trace' and 'message' if not needed.
24253
24254 2002-08-18  Dick Porter  <dick@ximian.com>
24255
24256         * unicode.c: Fix asserts to match Encoder.cs checks
24257
24258 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24259
24260         * marshal.c: fix unaligned store issue and a few wrong
24261         opcode argument types.
24262
24263 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24264
24265         * icall.c: added GetUninitializedObjectInternal internal call.
24266
24267 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
24268
24269         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
24270         to the right domain.
24271
24272 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
24273
24274         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
24275
24276         * class.c (class_compute_field_layout): set blittable to false for Strings
24277
24278         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
24279
24280 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24281
24282         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
24283         first chunk of code to create types at runtime. Code to
24284         handle ReflectedType/DeclaringType. Make reflection handles
24285         domain specific.
24286
24287 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24288
24289         * class.c: set correct name in arrays.
24290
24291 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
24292
24293         * appdomain.c (mono_domain_transfer_object): make it work with
24294         valuetypes. bug fixes.
24295
24296 2002-08-12  Dick Porter  <dick@ximian.com>
24297
24298         * object.h: Rename some parameters to avoid c++ keywords (Patch
24299         from Joseph Wenninger <kde@jowenn.at>)
24300
24301 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
24302
24303         * icall.c: added icall to implement Assembly.GetFile*.
24304
24305 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24306
24307         * reflection.h, reflection.c: code to embed managed resources.
24308
24309 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24310
24311         * class.c: move all the type size stuff into
24312         class_compute_field_layout().
24313
24314 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24315
24316         * class.c: ensure enums have always the correct instance size.
24317         * unicode.c: remove wrong assert.
24318
24319 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24320
24321         * assembly.c: fix mem corruption issue.
24322         * image.h, image.c: added mono_image_get_resource () to access
24323         managed resources.
24324         * icall.c: implemented Assembly.EntryPoint property and some
24325         Managed Resources related internalcalls.
24326
24327
24328 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24329
24330         * image.c, image.h: impemented mono_image_get_entry_point ().
24331         * appdomain.c: use mono_image_get_entry_point.
24332
24333 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24334
24335         * reflection.c: support the object type argument when loading
24336         custom attributes.
24337
24338 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
24339
24340         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
24341         String as return type.
24342
24343 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
24344
24345         * reflection.c: fix encoding of named args for custom attrs to match
24346         the ms implementation. Read them back when instantiating custom
24347         attributes.
24348
24349 2002-08-02  Radek Doulik  <rodo@ximian.com>
24350
24351         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
24352         by Dietmar as quick fix
24353         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
24354         16 as stack size, used on more places as quick fix before Dietmar
24355         will fix it properly
24356
24357 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24358
24359         * object.h, object.c: added accessors for fields and properties.
24360
24361 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24362
24363         * class.c, class.h: made mono_class_get_field_from_name ()
24364         loop on parent types.
24365         Added mono_class_get_property_from_name ().
24366
24367 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24368
24369         * class.c, class.h: move the code to setup the type vtable in its own
24370         function so that it can be reused also for types created at runtime.
24371         Eliminate the "class" identifier from the header file.
24372         * reflection.c: setup the vtable for enums so that we can create
24373         objects for use in SetConstant ().
24374
24375 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
24376
24377         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
24378         instead of the delegate itself as this pointer (bug #28383)
24379
24380 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
24381
24382         * marshal.c (mono_marshal_get_managed_wrapper): added return type
24383         conversions.
24384
24385 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24386
24387         * loader.c: don't set the pinvoke bit on icalls.
24388
24389 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
24390
24391         * debug-helpers.c (mono_method_full_name): only print a number to
24392         indicate wrapper type (so that the output is more readable in traces).
24393
24394 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
24395
24396         * class.c (mono_class_init): include method override patch from Paolo
24397
24398 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
24399
24400         * icall.c: fixed GetTypeCode().
24401
24402 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
24403
24404         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
24405         use real delegate invoke function to make it work with multicast
24406         delegates (fix bug# 28291).
24407
24408 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24409
24410         * object.c: load constant strings.
24411
24412 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24413
24414         * reflection.c: no magic numbers.
24415         * tabledefs.h: security action enum.
24416
24417 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24418
24419         * assembly.c: fix possible memory corruption.
24420
24421 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24422
24423         * reflection.h, reflection.c: added support for linking resources.
24424         * verify.c: check we have an updated corlib.
24425
24426 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
24427
24428         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
24429         string arrays.
24430         (mono_marshal_string_array): null terminate unmanaged string arrays.
24431         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
24432
24433 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24434
24435         * icall.c: Type.GetType () can now return also types from the
24436         calling assembly.
24437
24438 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24439
24440         * loader.h, loader.c: stack walking support.
24441         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
24442         GetCallingAssembly.
24443
24444 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
24445
24446         * marshal.c: added optimisations for blittable types 
24447
24448         * class.c (mono_array_class_get): do not set blittable attribute on arrays
24449         (mono_class_setup_mono_type): set blittable attribute for single
24450         and double.
24451
24452         * marshal.c (mono_string_utf8_to_builder): impl.
24453         (mono_string_builder_to_utf8): impl.
24454         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
24455
24456 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
24457
24458         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
24459         (mono_marshal_get_managed_wrapper): impl. byref types
24460
24461 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24462
24463         * icall.c:
24464         (search_method): don't display debug message. 
24465
24466 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24467
24468         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
24469
24470 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24471
24472         * appdomain.c: set the missing filename when throwing exception.
24473
24474 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24475
24476         * metadata.c (mono_type_size): code cleanup
24477         (mono_type_stack_size): removed some test code
24478
24479 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
24480
24481         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
24482         mono_get_exception_file_not_found now.
24483
24484         * exception.c (mono_exception_from_name_two_strings): New version
24485         that will call a constructor with two string arguments. 
24486         (mono_get_exception_file_not_found): New helper routine, used to
24487         report file-not-found errors.
24488
24489 2002-07-20  Dick Porter  <dick@ximian.com>
24490
24491         * process.h:
24492         * process.c: Pass file handles to CreateProcess
24493         
24494         * icall.c:
24495         * file-io.h:
24496         * file-io.c: Implemented CreatePipe
24497
24498 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24499
24500         * metadata.c (mono_get_param_info): set alignment for value types
24501
24502 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24503
24504         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
24505         Constify mono_domain_assembly_open().
24506         * loader.c: handle null namespace in icalls.
24507
24508 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24509
24510         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
24511         (emit_str_to_ptr_conv): marshal object as structs
24512
24513         * metadata.c (mono_type_to_unmanaged): marshal object as structs
24514
24515         * marshal.c (mono_marshal_get_runtime_invoke): support value types
24516
24517 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
24518
24519         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
24520         (mono_marshal_get_native_wrapper): we an now return value types
24521
24522 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24523
24524         * verify.c: more checks implemented.
24525
24526 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
24527
24528         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
24529         (fix bug #27695)
24530         (mono_marshal_get_native_wrapper): allow byref arguments
24531         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
24532         impl. PtrToStringXXX methods
24533         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
24534         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
24535         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
24536         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
24537         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
24538
24539 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24540
24541         * reflection.c: fix buglet in parsing an assembly name.
24542
24543 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24544
24545         * marshal.c (emit_ptr_to_str_conv): first impl.
24546
24547 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24548
24549         * object.c, class.h: cache the vtable in the class as suggested by
24550         vargaz@freemail.hu (Zoltan Varga).
24551
24552 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24553
24554         * class.h, loader.c: added mono_field_from_token().
24555         * verify.c: first cut of type checking code.
24556
24557 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24558
24559         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
24560
24561 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
24562
24563         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
24564         (fix bug #27782)
24565         (mono_marshal_get_remoting_invoke): impl.
24566         (mono_delegate_begin_invoke): impl.
24567         (mono_mb_emit_save_args): impl.
24568         (mono_delegate_end_invoke): impl.
24569         (mono_marshal_get_delegate_begin_invoke):
24570         (mono_marshal_get_delegate_end_invoke):
24571         (mono_marshal_get_delegate_invoke): generate a special name for
24572         those methods (including the signature) and associate them whith
24573         the delegate class. 
24574
24575 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
24576
24577         * reflection.[ch]: 
24578         (mono_reflection_type_from_name): now it has a MonoImage parameter
24579         which is used as the default image to search the type in. If the image
24580         is NULL or getting the type from it fails, it defaults to corlib.
24581
24582         * icall.c: changed 1 call to mono_reflection_type_from_name to match
24583         new parameter.
24584
24585 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24586
24587         * reflection.c: update the parameter table index.
24588
24589 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24590
24591         * domain.c: don't include the mark byte in the string hash.
24592
24593 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24594
24595         * icall.cs: icall for Type.GetTypeCode ().
24596         * verify: a couple of fixes and disabled local initialization checks.
24597
24598 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
24599
24600         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
24601
24602         * debug-helpers.c (mono_method_full_name): print the type of the
24603         runtime wrapper
24604
24605         * metadata.c (mono_signature_hash): a hash function for signatures
24606         (mono_signature_hash): better hash algorithm
24607
24608         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
24609
24610         * debug-helpers.c (mono_method_full_name): this can now generate
24611         method names with signatures
24612
24613         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
24614         method dont have this pointers.
24615
24616 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24617
24618         * reflection.c: fixup typebuilder tokens.
24619         * image.c: fix buglet.
24620         * marshal.h: remove whitespace.
24621         * metadata.h, metadata.c: reinstate code that was removed.
24622         * verify.c: handle catch directives and fix another couple of bugs.
24623
24624 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
24625
24626         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
24627         (mono_marshal_get_native_wrapper): make it comp. with the old code
24628         (mono_marshal_get_native_wrapper): support boolean
24629         (mono_marshal_get_managed_wrapper): support more types
24630
24631 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
24632
24633         * class.c (class_compute_field_layout): compute class->blittable attribute.
24634
24635 2002-07-09  Dick Porter  <dick@ximian.com>
24636
24637         * threads.c: Make the thread cleaning up cope with threads that
24638         call ExitThread()
24639
24640 2002-07-08  Radek Doulik  <rodo@ximian.com>
24641
24642         * reflection.c (method_encode_code): use non-translated values to
24643         compute finally_start, this fixes exception handling on ppc, yay!
24644
24645         * decimal.h (struct signscale): fix endianess
24646
24647 2002-07-07  Radek Doulik  <rodo@ximian.com>
24648
24649         * reflection.c: swap box_val and not val
24650
24651 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24652
24653         * reflection.c, reflection.h: handle full assembly info in type name.
24654         Handle Type arguments when loading custom attributes.
24655         * icall.c: updated to use new mono_reflection_type_from_name () method.
24656
24657 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24658
24659         * loader.c:
24660         (method_from_memberref): also print assembly name when method not found.
24661
24662 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24663
24664         * icall.c:
24665         (ves_icall_TypeGetProperties): fixed bug #27473. 
24666
24667 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24668
24669         * reflection.c: display image name and token when cannot find the
24670         .ctor for an attribute.
24671
24672 2002-07-05  Martin Baulig  <martin@gnome.org>
24673
24674         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24675
24676 2002-07-04  Dick Porter  <dick@ximian.com>
24677
24678         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
24679         compile on mingw.  This will cause mingw builds to not wait for
24680         subthreads to terminate after the main thread does.  I've lodged a
24681         bug with the mingw developers for them to wrap OpenThread().
24682
24683 2002-07-03  Dick Porter  <dick@ximian.com>
24684
24685         * threads.c: Store thread IDs instead of handles, because
24686         GetCurrentThread() returns a pseudohandle and therefore stores
24687         useless values.  mono_thread_cleanup() continues checking the
24688         array of threads until it is empty, to cope with subthreads
24689         spawning new threads after the main thread has finished.
24690
24691         * profiler.h:
24692         * profiler.c:
24693         * profiler-private.h: Pass the thread ID to thread profiler
24694         functions, instead of a handle
24695
24696 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24697
24698         * verify.c: fixes to make it more usable.
24699         * pedump.c: added --verify code to verify IL code in an assembly.
24700
24701 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24702
24703         * reflection.c: turn errors into warnings to allow compiling corlib.
24704
24705 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24706
24707         * reflection.c: add special cases to compile corlib.
24708
24709 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24710
24711         * reflection.c: handle properties with only a set method.
24712
24713 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24714
24715         * opcodes.h: add enum with opcodes in opval order.
24716
24717 2002-07-01  Dick Porter  <dick@ximian.com>
24718         
24719         * object.h:
24720         * object.c (mono_runtime_run_main): Removed unneeded argument
24721
24722 2002-06-28  Martin Baulig  <martin@gnome.org>
24723
24724         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24725
24726 2002-06-27  Dick Porter  <dick@ximian.com>
24727
24728         * threads.c: Store the handle in both the parent thread and in the
24729         subthread, to minimise the time between starting a new thread and
24730         storing its ID.
24731
24732 2002-06-26  Dick Porter  <dick@ximian.com>
24733
24734         * appdomain.c (mono_runtime_cleanup): Close the socket library
24735         after all the threads have finished, not before
24736
24737 2002-06-26  Martin Baulig  <martin@gnome.org>
24738
24739         * debug-symfile.c (mono_debug_find_source_location): Added
24740         `guint32 *line_number' argument.  If it's not NULL, store the line number
24741         there and return the file name without the line number.
24742
24743 2002-06-25  Dick Porter  <dick@ximian.com>
24744
24745         * icall.c:
24746         * process.h:
24747         * process.c: Process forking and other support functions
24748
24749 2002-06-25  Dick Porter  <dick@ximian.com>
24750
24751         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
24752         things dont happen when the image is closed.
24753         (mono_image_lookup_resource): Walk the resource section looking
24754         for a particular entry
24755
24756         * cil-coff.h: PE resource section decoding
24757
24758 2002-06-25  Dick Porter  <dick@ximian.com>
24759         
24760         * assembly.h:
24761         * assembly.c: 
24762         (mono_assembly_foreach): Accessor functions to walk the list of
24763         loaded assemblies
24764         (mono_assembly_set_main):
24765         (mono_assembly_get_main): Process methods need to know which
24766         assembly is the "main" one
24767
24768         * object.c (mono_runtime_run_main): Record the main assembly
24769
24770         * debug-helpers.c: Fix typo
24771
24772 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
24773
24774         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
24775         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
24776
24777 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24778
24779         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
24780
24781 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
24782
24783         * image.c (do_mono_image_open): Initialize reference count,
24784         otherwise we leak the MonoImage.
24785
24786 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24787
24788         * reflection.c: small tweak to handle self-hosting.
24789
24790 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24791
24792         * reflection.c: fix type name parse code.
24793
24794 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24795
24796         * reflection.c: break out of the loop.
24797         * image.c: special case corlib.
24798
24799 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24800
24801         * reflection.c: add all the custom attrs at the end to ensure the
24802         ctors have been properly initialized when the attributes are defined
24803         in the current assembly.
24804
24805 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24806
24807         * reflection.c: handle correctly multiple-nested types.
24808
24809 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24810
24811         * row-indexes.h: fix typos.
24812         * reflection.c: adjust for typos and fix method_def_or_ref
24813         encoding in MethodImpl table.
24814
24815 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24816
24817         * reflection.c: fix entry point patching (thanks Serge!).
24818
24819 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
24820
24821         * verify.c: add check for System.Exception
24822
24823 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24824
24825         * image.c, class.c: minifix for code just c&p'ed.
24826         * reflection.c: warning fix.
24827         * object.h, loader.h, domain.c: load also StringBuilder.
24828
24829 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24830
24831         * marshal.h, marshal.c: some support code to handle complex marshaling.
24832
24833 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24834
24835         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
24836         Better signatures with vtable error dump.
24837
24838 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
24839
24840         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
24841
24842 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
24843
24844         * icall.c (ves_icall_Type_GetField): impl.
24845
24846 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24847
24848         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
24849         to retrieve a marshal description blob for a field or param.
24850
24851 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24852
24853         * reflection.h, reflection.c: change order of nested type emission
24854         to avoid table corruption. The NestedTypes table is sorted.
24855         * icall.c: change order of GetConstructor results to workaround mcs bug.
24856
24857 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24858
24859         * reflection.h, reflection.c: handle field and param marshal
24860         information.
24861
24862 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24863
24864         * icall.c, marshal.c marshal.h: more Marshal class implementation.
24865
24866 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24867
24868         * reflection.c: fix call convention.
24869
24870 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24871
24872         * reflection.h, reflection.c: mono_image_get_memberref_token()
24873         takes a type instead of a class, now. Added
24874         mono_image_get_array_token() to create tokens for the special
24875         multi-dim array methods.
24876
24877 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24878
24879         * assembly.c: handle modules (no assembly table). Split
24880         loading references in its own function.
24881         * class.c: handle moduleref resolution scope.
24882         * image.c, image.h: cache module name in image.
24883
24884 2002-06-07  Martin Baulig  <martin@gnome.org>
24885
24886         * reflection.c (mono_image_get_type_info): Only add a class layout entry
24887         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
24888
24889 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24890
24891         * icall.c: more signature fixes that used uint instead of int.
24892
24893 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24894
24895         * reflection.c: fixed signature of field refs.
24896
24897 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24898
24899         * class.c, reflection.c: handle typerefs of nested types
24900         (both on read and when writing files).
24901
24902 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24903
24904         * icall.c: fix method signatures that tried to workaround the previous
24905         typo, d'oh!
24906
24907 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24908
24909         * debug-helpers.c: fix typo.
24910
24911 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24912
24913         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
24914         rewrote the PE/COFF writing code (our programs are understood by the
24915         ms runtime, now).
24916
24917 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24918
24919         * gc.c, gc.h, icall.c: weakreference support.
24920
24921 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24922
24923         * Makefile.am, mono-config.c: use $(sysconfdir).
24924
24925 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24926
24927         * icall.c: changed default precision of Double.ToString() to 15.
24928         Fixed memory leak. Unified with Single.ToString.
24929
24930 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24931
24932         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
24933
24934 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24935
24936         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
24937         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
24938         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
24939         and myself.
24940
24941 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24942
24943         * debug-symfile.c, sysmath.c: yet more compilation fixes.
24944
24945 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24946
24947         * reflection.c, socket-io.c: more compilation fixes.
24948
24949 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24950
24951         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
24952         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
24953         unicode.c: warning and compiler compatibility fixes.
24954
24955 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24956
24957         * class.h, metadata.c: fixed warnings/compilation errors.
24958
24959 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24960
24961         * Makefile.am, mono-config.c, mono-config.h: configuration file
24962         support routines.
24963         * loader.c, loader.h: make Dll mapping configurable at runtime in the
24964         config file. Export methods to insert and lookup mappings.
24965
24966 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24967
24968         * reflection.c: handle types and boxed objects in custom attr
24969         constructors.
24970
24971 2002-05-30  Martin Baulig  <martin@gnome.org>
24972
24973         * debug-symfile.c
24974         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
24975
24976 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
24977
24978         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
24979         to lookup the implmap row for a P/Invoke method.
24980         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
24981         P/Invoke method from the runtime on an as needed basis.
24982
24983 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
24984
24985         * metadata.c (mono_metadata_parse_signature): impl.
24986
24987 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24988
24989         * class.c: handle .pack directive.
24990
24991 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24992
24993         * object.c: initialize static fields with RVA data.
24994
24995 2002-05-25  Martin Baulig  <martin@gnome.org>
24996
24997         * debug-symfile.c
24998         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
24999
25000 2002-05-24  Martin Baulig  <martin@gnome.org>
25001
25002         * debug-symfile.c
25003         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
25004         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
25005         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
25006
25007 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25008
25009         * object.c: special case string ctros in invoke.
25010         * gc.c: silly whitespace changes.
25011
25012 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
25013
25014         * threadpool.[ch]: impl. a threadpool that can
25015         be used by mint and mono.
25016
25017 2002-05-22  Martin Baulig  <martin@gnome.org>
25018
25019         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
25020         The first argument is now a `MonoReflectionModuleBuilder *', the return
25021         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
25022         `methods' field to get the method builder.  The `token' argument is the
25023         unfixed token.
25024
25025         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
25026         invalid characters instead of g_assert_not_reached()ing.  This seems
25027         to be the behaviour of mscorlib.
25028
25029 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
25030
25031         * object.c (mono_runtime_invoke_array): applied patch from Rachel
25032         Hestilow to fix bug #25104
25033
25034 2002-05-21  Martin Baulig  <martin@gnome.org>
25035
25036         * debug-symfile.c (mono_debug_find_source_location): New function.
25037         Looks up an IL offset in the line number table and returns the source
25038         location as a string.
25039
25040 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25041
25042         * icall.c:
25043         (mono_double_ToStringImpl): changed %f by %g until we have something
25044         better.
25045
25046 2002-05-21  Nick Drochak  <ndrochak@gol.com>
25047
25048         * icall.c : Use different name for Math.Pow's icall.  Needed to check
25049         parameters first in C#.
25050
25051 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25052
25053         * icall.c, reflection.h: added icall to get info about an event.
25054
25055 2002-05-20  Radek Doulik  <rodo@ximian.com>
25056
25057         * object.c (mono_value_box): don't use memcpy for boxing on BIG
25058         endian
25059         (mono_value_box): don't use memcpy for small sizes on
25060         architectures with unaligned access
25061
25062 2002-05-20  Martin Baulig  <martin@gnome.org>
25063
25064         * reflection.c (mono_reflection_setup_internal_class): Don't crash
25065         if `tb->parent == NULL'.
25066         (mono_reflection_create_internal_class): New function.  This is
25067         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
25068         for enum types.
25069
25070         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
25071         New interncall.
25072
25073 2002-05-19  Martin Baulig  <martin@gnome.org>
25074
25075         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
25076         argument to get the length, don't default to the array length.
25077
25078 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
25079
25080         * assembly.c (mono_assembly_setrootdir): New function used to
25081         override the MONO_ASSEMBLIES directory.
25082
25083 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25084
25085         * icall.c: ValueType_GetHashCode() initialize local var.
25086
25087 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25088
25089         * reflection.c: sort custom attributes table.
25090
25091 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25092
25093         * reflection.c: support named args in custom attributes (write support).
25094
25095 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
25096
25097         * reflection.c: fix finally position calculation.
25098
25099 2002-05-15  Radek Doulik  <rodo@ximian.com>
25100
25101         * reflection.c: fixed endianess at many places
25102
25103         * icall.c (ves_icall_InitializeArray): comment out debug msg
25104
25105 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
25106
25107         * object.c (mono_unhandled_exception): new function to handle
25108         unhandled exceptions.
25109         (mono_unhandled_exception): call the UnhandledException event.
25110         (mono_runtime_delegate_invoke): impl.
25111
25112 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
25113
25114         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
25115         returns the RVA, not the direct pointer to the data. Handle the case
25116         when the class size is fixed.
25117
25118 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25119
25120         * reflection.c: fix some endianess issues.
25121
25122 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
25123
25124         * object.c (mono_runtime_invoke): is now able to catch exceptions.
25125
25126         * threads.c (mono_thread_init): added a callback which is invoked
25127         at thread start.
25128
25129 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25130         
25131         * icall.c: make GetHashCode return non-negative values.
25132
25133 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25134
25135         * object.c, icall.c, gc.c: revert to address-based hashcode.
25136
25137 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
25138
25139         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
25140
25141 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25142
25143         * icall.c, class.c: special case <Module>.
25144
25145 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
25146
25147         * icall.c: fix bug in GetNow().
25148
25149 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
25150
25151         * object.c (mono_runtime_class_init): make sure that we call all
25152         static class constructors.
25153
25154 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25155
25156         * reflection.c: sort methodsemantics table.
25157
25158 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25159
25160         * reflection.h, reflection.c: honour init locals setting.
25161
25162 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
25163
25164         * icall.c: copied Double ToStringImpl for Single ToStringImpl
25165
25166 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25167
25168         * reflection.c: support ContructorBuilders in attribute blob creation.
25169
25170 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25171
25172         * reflection.c: some changes to build a binary that can be run
25173         directly in windows.
25174
25175 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25176
25177         * loader.c: print a big message when an icall can't be found.
25178
25179 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25180
25181         * string-icalls.c: fix bug 24248.
25182
25183 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
25184
25185         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
25186         icall.c, reflection.h: separate assembly loading by pathname and by
25187         assembly name. Use the MONO_PATH env var to search for assemblies.
25188
25189 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25190
25191         * assembly.c, image.h: add some support for assemblies
25192         with multiple modules.
25193         * class.c, class.h: export mono_class_from_typeref().
25194         * loader.c: remove duplicated code and use mono_class_from_typeref(),
25195         instead.
25196
25197 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25198
25199         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
25200         documentation says (the ECMA one is correct).
25201
25202 2002-05-02  Dick Porter  <dick@ximian.com>
25203
25204         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
25205         Don't name the synchronisation mutex.
25206
25207 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
25208
25209         * rand.c
25210         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
25211         Make the prototypes match.
25212         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
25213         Same.
25214
25215         * icall.c
25216         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
25217         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
25218         all systems have tm.tm_zone, so use strftime() with %Z to print
25219         the timezone abreviation into a temp string.
25220
25221         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
25222         rather than mono_array_addr() on a MonoString on Big Endian
25223         machines.
25224
25225 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
25226
25227         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
25228         fix bug 24041
25229
25230 2002-04-30  Dick Porter  <dick@ximian.com>
25231
25232         * socket-io.c: Cope with SOCKET being an integer rather than a
25233         pointer now.
25234
25235         * threads.c: Added Thread_free_internal, to deal with thread
25236         handle cleanup.  Moved calls to handle_store() and handle_remove()
25237         to start_wrapper(), so each can only be called once.  Allocate
25238         synchronisation blocks with GC_malloc(), and use GC finalisation
25239         to close the handles.
25240
25241         * icall.c: added System.Threading.Thread::Thread_free_internal
25242
25243 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25244
25245         * icall.c: support Environment.Exit, CommandLineArgs().
25246
25247 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25248
25249         * object.c, object.h: added mono_runtime_run_main () and
25250         mono_runtime_get_main_args () for use in System.Environment.
25251
25252 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25253
25254         * gc.c: fix thinko, enable actual finalization since the jit is now
25255         fixed.
25256
25257 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25258
25259         * gc.c, object.c: take into account that an object may be offset wrt the address
25260         returned by GC_malloc().
25261
25262 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
25263
25264         * image.c: handle files without entries in the assembly table (modules).
25265
25266 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
25267
25268         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
25269         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
25270         allowed to be null when it's System.Object class setup.
25271
25272 2002-04-27  Martin Baulig  <martin@gnome.org>
25273
25274         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
25275         if `tb->parent == NULL' rather than crashing.
25276
25277 2002-04-28  Nick Drochak  <ndrochak@gol.com>
25278
25279         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
25280         calling acos() where asin() should have been called.
25281
25282 2002-04-26  Martin Baulig  <martin@gnome.org>
25283
25284         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
25285         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
25286         there's a subdirectory called `System', but we don't want to read that
25287         subdirectory as an assembly.
25288
25289 2002-04-25  Martin Baulig  <martin@gnome.org>
25290
25291         * debug-symfile.c: Reflect latest MonoString changes.
25292
25293 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25294
25295         * rand.c, rand.h: instance method icalls need to have an explicit
25296         this pointer as first argument in the C implementation.
25297
25298 2002-04-25  Nick Drochak <ndrochak@gol.com>
25299
25300         * icall.c: Fix typo in map for GetNonZeroBytes
25301
25302 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25303
25304         * string-icalls.c : String does now passes unit tests without any 
25305         errors, the following changes has been made:
25306         
25307         Implemented replace methods.
25308         Renaming of methods to (try) follow the standard.
25309         Fixed compare ordinal
25310         Made all memory allocated directly to function instead of via icall function.
25311         Small performance fix in is_in_array function
25312                         
25313  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
25314
25315         c (mono_string_Internal_ctor_charp_int_int):
25316         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
25317         sindex < 0, throw ArgumentOutOfRangeException instead of
25318         ArgumentNullException.
25319
25320         Added new check for length == 0, however
25321         I need to make it return String.Empty from the C code.
25322         
25323         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
25324         that calculate the length for us here.
25325         
25326         (mono_string_Internal_ctor_sbytep_int_int): Replaced
25327         mono_string_new_utf16 with mono_string_new, since value is utf8.
25328
25329 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25330
25331         * object.c: register the object for finalization if needed.
25332         Allocate one more char in the string for the terminating 0 char.
25333
25334 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25335
25336         * class.c, class.h, image.c: check if a type implemenst a destructor.
25337         Use the proper key for array class lookups.
25338         * icall.c: register the icalls in the System.GC class.
25339         * gc.c, gc.h: GC-related functions and icalls.
25340
25341 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25342
25343         * icall.c:
25344         * socket-io.c:
25345         * unicode.c: free some strings gotten from mono_string_to_utf8 and
25346         changed a couple of free () by g_free ().
25347
25348         * decimal.c: one-liner in the comments for decimal2string ().
25349
25350 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25351
25352         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
25353
25354 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25355
25356         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
25357         * object.c (mono_runtime_invoke_array) : handle null in params
25358
25359 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25360
25361         * string-icalls.c: fixed bug in split (one off bug)
25362
25363 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25364
25365         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
25366         * icalls.c: added String::Equals as internal method
25367
25368 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25369
25370         * threads.c: fixed bug in the double interlocked functions
25371
25372 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
25373
25374         * threads.c: implemented all of the new interlocked icalls.
25375         * string-icalls.c: fix a bug in insert.
25376         * icalls.c: added the icalls for interlocked, removed old string functions.
25377         
25378 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25379
25380         * loader.c: fix off-by-one error when reading argument names.
25381
25382 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25383
25384         * profiler.c: win32 counter implementation (untested).
25385         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
25386         (the latter needs testing and more complete impl. from win32 folks).
25387
25388 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
25389
25390         * object.c: mono_array_new_full workaround mono_array_class_get
25391         problem.
25392
25393 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25394
25395         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
25396         * object.h (mono_string_chars): Changed casting type.
25397
25398 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25399
25400         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
25401                            method signatures to use gunichar2 instead of gint16.
25402
25403 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
25404
25405         * object.h, object.c: domain-specific versions of mono_object_new and
25406         mono_array_new.
25407
25408 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
25409
25410         * object.c: changed String layout
25411
25412         * string-icalls.c (mono_string_Internal_ctor_chara): added
25413         internal string constructors.
25414
25415 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
25416
25417         * threads.c: pass 'this' to the thread start routine.
25418
25419 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25420
25421         * string-icalls.c: fix IndexOf and LastIndexOf. Now
25422         InternalCompareStr don't call twice mono_string_cmp_char for the last
25423         character. Improved performance in mono_string_cmp_char.
25424
25425 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25426
25427         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
25428         code into its own library: libmonoruntime.
25429
25430 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
25431
25432         * object.h, object.c: changed array format so that szarrays do not
25433         require a bounds structure.
25434         * icall.c, appdomain.c: support for new szarray format.
25435
25436 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25437
25438         * metadata.c: compare also the retuns type when comparing signatures:
25439         we didn't do this as an optimization since really overloaded methods
25440         must differ also in the arguments, but this doesn't work with
25441         low-level IL code (or when using explicit conversion operators: see
25442         bug#23498 for an example).
25443
25444 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25445
25446         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
25447
25448 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25449
25450         * icall.c: make MonoType::GetElementType its own icall.
25451
25452 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25453
25454         * icall.c: remove MonoMethod_get_Name().
25455         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
25456         object.
25457
25458 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25459
25460         * string-icalls.c: optimized a few methods.
25461
25462 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25463
25464         * icall.c: added all new string internal calls
25465         * string-icalls.c: added, new string internal call implementation.
25466         * object.c: added mono_string_new_size for allocating a string a size
25467
25468 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
25469
25470         * object.c (mono_object_isinst): use the same code as in the
25471         optimized x86 version.
25472
25473 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25474
25475         * profiler.c: TSC-based timer code (faster and more accurate).
25476         Not hooked up in configure, yet (set USE_X86TSC to 1).
25477
25478 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
25479
25480         * profiler.c, profiler.h: track time spent compiling methods.
25481         * threads.c: track thread creation/destruction.
25482
25483 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
25484
25485         * profiler.c, profiler.h, profiler-private.h: profiling interface
25486         and sample implementation. Moved here so that it can be used also by
25487         the jit.
25488
25489 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
25490
25491         * reflection.c, reflection.h: keep types and other handles separate in
25492         the hash tables for referred tokens. Add guid for modules.
25493
25494 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
25495
25496         * assembly.c: fix bugs found with valgrind.
25497         * metadata.h, metadata.c: added mono_metadata_guid_heap().
25498
25499 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
25500
25501         * threads: added icall support for getting current domain for
25502                    the thread.
25503  
25504 2002-04-13  Martin Baulig  <martin@gnome.org>
25505
25506         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
25507         (MonoDebugVarInfo): Added `index' field for register based addresses.
25508         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
25509         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
25510         `MonoDebugVarInfo *params' and `guint32 this_offset' with
25511         `MonoDebugVarInfo *this_var'.
25512
25513         * debug-symfile.c (relocate_variable): New static function to write
25514         a location description for a local variable or method parameter.
25515
25516 2002-04-12  Martin Baulig  <martin@gnome.org>
25517
25518         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
25519         stack offset and begin/end scope address of a local variable.
25520         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
25521         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
25522         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
25523
25524         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
25525         Added new relocation types for start/end scope of a local variable.
25526
25527 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25528
25529         * object.h: add mono_object_domain() macro.
25530         * reflection.c: handle typespecs.
25531         * icall.c: MonoMethod::get_Name() implementation.
25532
25533 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25534
25535         * icall.c: String::GetHashCode() icall implementation.
25536
25537 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25538
25539         * icall.c: String::IndexOfAny icall.
25540         * object.c, object.h: make array->max_length more useful.
25541         Intrduced mono_object_class() and mono_string_length() macros.
25542
25543 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25544
25545         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
25546         instead of g_unichar_isdigit.
25547
25548 2002-04-11  Nick Drochak  <ndrochak@gol.com>
25549
25550         * icall.c: Implement a simple Double.ToString().
25551
25552 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25553
25554         * appdomain.h: only io-layer.h is supposed to be included.
25555         * icall.c: explicitly import environ. Fix warning.
25556
25557 2002-04-10  Nick Drochak  <ndrochak@gol.com>
25558
25559         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
25560                 return true even if it's not Daylight Savings time.
25561                 Only return false for the case where the function isn't
25562                 implemented for a plaform (read Windows).
25563
25564 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25565
25566         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
25567         data with a mutex.
25568
25569 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
25570
25571         * mempool.c (mono_mempool_alloc): only use g_malloc when
25572         absolutely necessary.
25573
25574 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25575
25576         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
25577
25578         * class.c (mono_class_vtable): use domain mempool to allocate vtable
25579         (mono_class_proxy_vtable): use domain mempool
25580
25581 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25582
25583         * appdomain.h, appdomain.c: split initialization that requires the
25584         execution engine support into mono_runtime_init().
25585
25586 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25587
25588         * class.c (mono_class_init): don't include vtable inside MonoClass
25589         to save some memory, gather some statistics.
25590         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
25591
25592 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25593
25594         * icall.c: internalcall implementation for ValueType.Equals().
25595
25596 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
25597
25598         * object.c (mono_message_init): moved 
25599         (mono_runtime_exec_main): new arch. independent impl.
25600         (mono_runtime_invoke_array): new method - like
25601         mono_runtime_invoke, but you can pass an array of objects.
25602         (mono_remoting_invoke): new arch. independent impl.
25603         (mono_message_invoke): new arch. independent impl.
25604         (mono_runtime_class_init): new arch. independent impl.
25605         (mono_runtime_object_init): new arch. independent impl.
25606
25607 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25608
25609         * metadata.c, object.c, reflection.c: documented the exported
25610         functions.
25611
25612 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
25613
25614         * icall.c: simpler code to pass the assembly builder data to corlib.
25615         Implement GetNestedTypes() internalcall.
25616
25617 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25618
25619         * class.c: warn if a type can't be loaded.
25620
25621 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
25622
25623         * image.h: typedef MonoImageOpenStatus
25624         * types.h: removed unused file
25625         
25626 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
25627
25628         * icall.c: Enum_ToObject accepts enum value arguments.
25629
25630 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25631
25632         * class.c: move initialization of properties, events and nested
25633         classes, so that they happen for interfaces, too.
25634
25635 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25636
25637         * icall.c: cleanup some ugly casts in Array_SetValue*.
25638
25639 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25640
25641         * icall.c: the values array fro enums is of the correct type, now.
25642         Implement (correctly) getFullName instead of assQualifiedName for
25643         MonoType.
25644         * reflection.h, reflection.c: added mono_type_get_name ().
25645
25646 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25647
25648         * assembly.c, image.h: for each MonoImage, record from wich assembly
25649         it was loaded.
25650         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
25651         Make Type.Assembly work.
25652
25653 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
25654
25655         * debug-symfile.h: use char* instead of gpointer to avoid
25656         unnecessary casts.
25657
25658         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
25659
25660         * icall.c (ves_icall_InternalExecute): impl. FielSetter
25661         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
25662
25663 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
25664
25665         * icall.c (mono_message_init): impl. (code cleanup)
25666         (ves_icall_InternalExecute): impl. FieldGetter
25667
25668         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
25669         defined we call all (non-static)methods through the vtable. 
25670
25671 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
25672
25673         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
25674         finalizer even though the memory is still referenced (and the chunk of
25675         memory is not freed).
25676
25677 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25678
25679         * assembly.c: fix brokeness.
25680
25681 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
25682
25683         * class.c: kill some warnings. Check explicit interface method
25684         implementation also without considering the namespace.
25685         Load also literal strings in static class data.
25686
25687 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
25688
25689         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
25690         (default_assembly_name_resolver): Make the resolver take the
25691         "base" directory where the assembly was originally defined, so we
25692         can load DLLs that are in the same directory as the assembly that
25693         is being referenced.
25694
25695 2002-03-28  Dick Porter  <dick@ximian.com>
25696
25697         * file-io.h: 
25698         * file-io.c:
25699         * socket-io.c: 
25700         * unicode.h: 
25701         * unicode.c: Warning cleanups
25702
25703 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
25704
25705         * object.h, reflection.h: use the correct type instead of MonoObject.
25706
25707 2002-03-28  Martin Baulig  <martin@gnome.org>
25708
25709         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
25710         (mono_debug_update_symbol_file): Initialize classes if necessary.
25711
25712 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25713
25714         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
25715         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
25716
25717 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
25718
25719         * assembly.h: fix function prototype.
25720         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
25721         * mono-endian.h: use const cast.
25722
25723 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25724
25725         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
25726
25727 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25728
25729         * loader.c: don't assert when a typeref can't be loaded, give
25730         a chance to the runtime to trow an exception instead.
25731         * loader.h: fix warning.
25732
25733 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25734
25735         * class.c (mono_class_proxy_vtable): added proxy support
25736
25737 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
25738
25739         * icall.c: removed last of PAL calls, added System.Environment
25740         * file-io.h, file-io.c: MonoIO implementation
25741         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
25742
25743 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25744
25745         * appdomain.c: do not use the byte marker in ldstr table lookup.
25746         * debug-helpers.c: allow two ':' to separate class and method name.
25747         * object.c: allocate arrays bounds with the GC, too.
25748         * verify: add a few more checks.
25749
25750 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
25751
25752         * reflection.c: output also literal strings. Allocate parameter data
25753         with GC_malloc() (thanks, Martin, for catching this!).
25754
25755 2002-03-26  Martin Baulig  <martin@gnome.org>
25756
25757         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
25758         include the `this' offset in the `param_offsets'.
25759
25760 2002-03-25  Martin Baulig  <martin@gnome.org>
25761
25762         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
25763         mono_debug_get_class() function to get the classes. Added new
25764         relocation types for arrays and strings.
25765         (mono_debug_get_class): New static function to search in all
25766         referenced assemblies for a metadata token.
25767
25768         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
25769
25770 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25771
25772         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
25773         hold gc-allocated objects. Make the string heap a stream like the
25774         others. Removed duplicated code when writing stream info.
25775         Added asserts to catch possible buffer overflows. Set the sorted map
25776         for tables that need sorting. Added some documentation.
25777
25778 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
25779
25780         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
25781         for interned strings and vtables.
25782
25783 2002-03-24  Martin Baulig  <martin@gnome.org>
25784
25785         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
25786         it in the array since it was created with g_slist_prepend().
25787
25788 2002-03-24  Martin Baulig  <martin@gnome.org>
25789
25790         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
25791         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
25792         (mono_debug_method_from_token): Renamed to
25793         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
25794         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
25795
25796         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
25797         relocation types.
25798
25799         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
25800
25801 2002-03-24  Martin Baulig  <martin@gnome.org>
25802
25803         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
25804         (mono_debug_method_from_token): New func.
25805
25806         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
25807         New interncall, calls mono_debug_local_type_from_signature().
25808         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
25809         calls mono_debug_method_from_token().
25810
25811 2002-03-23  Martin Baulig  <martin@gnome.org>
25812
25813         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
25814         specifies the number of bytes to be converted, not the array size.
25815         Return the number of chars, not the number of bytes.
25816         (ves_icall_iconv_get_chars): The `byteCount' argument
25817         specifies the number of bytes to be converted, not the array size.
25818
25819 2002-03-23  Martin Baulig  <martin@gnome.org>
25820
25821         * reflection.h (MonoReflectionSigHelper): New type.
25822
25823         * reflection.c (mono_reflection_sighelper_get_signature_local),
25824         (mono_reflection_sighelper_get_signature_local): New functions.
25825
25826         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
25827         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
25828         interncalls.
25829
25830 2002-03-23  Martin Baulig  <martin@gnome.org>
25831
25832         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
25833         is_writeable is set.
25834         (mono_raw_buffer_update): New function to write the modified map
25835         back to disk.
25836
25837         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
25838
25839         * debug-symfile.c (mono_debug_update_symbol_file): Call
25840         mono_raw_buffer_update() when done writing.
25841
25842 2002-03-23  Martin Baulig  <martin@gnome.org>
25843
25844         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
25845
25846         * debug-symfile.c: Added support for arguments and local variables.
25847
25848 2002-03-23  Dick Porter  <dick@ximian.com>
25849
25850         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
25851         protected by ifdefs, hence breaking the w32 build.
25852
25853 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25854
25855         * object.c: implement is_interned() the right way.
25856
25857 2002-03-21  Martin Baulig  <martin@gnome.org>
25858
25859         * debug-symfile.[ch]: New files to handle debugging information
25860         files. There's also support to dynamically update these symbol
25861         files to include machine dependent information.
25862
25863 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
25864
25865         * threads.c (mono_thread_create): new function to create thread
25866         from C
25867
25868 2002-03-20  Martin Baulig  <martin@gnome.org>
25869
25870         * icall.c (ves_icall_InternalInvoke): Create a new object if the
25871         method is a constructor.
25872         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
25873         points to ves_icall_InternalInvoke().
25874
25875 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
25876
25877         * file-io.c: Flush shouldn't throw exceptions.
25878
25879 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
25880
25881         * file-io.c: FileStream flush support; FileSetLength now
25882         restores file pointer.
25883
25884 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25885
25886         * class.c: set image for pointer classes.
25887
25888 2002/03/19  Nick Drochak <ndrochak@gol.com>
25889
25890         * sysmath.c: Forgot one.
25891
25892 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
25893
25894         * sysmath.c: Avoid redefining existing names.
25895
25896 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
25897
25898         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
25899         handled by runtime as icall rather than dllimport from libm.so
25900         * file-io.c, file-io.h: fixed handle argument type.
25901
25902 2002-03-18  Dick Porter  <dick@ximian.com>
25903
25904         * reflection.c (mono_image_get_type_info): rename interface to
25905         iface, because of "#define interface struct" on windows.
25906
25907 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
25908
25909         * class.c, class.h: rename and export mono_ptr_class_get().
25910         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
25911         * reflection.c, reflection.h, icall.c: better/saner type name
25912         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
25913         method signatures.
25914
25915 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
25916
25917         * class.c (mono_class_init): removed hardcoded GHC_SLOT
25918
25919         * icall.c (ves_icall_InternalInvoke): impl.
25920
25921 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25922
25923         * reflection.c: output the interface map table, too.
25924
25925 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25926
25927         * class.c (class_compute_field_layout): separate computation of 
25928         static field layout
25929
25930 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
25931
25932         * icall.c: added System.Buffer support.
25933         * file-io.c: moved file icalls from PAL to FileStream.
25934
25935 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25936
25937         * icall.c (ves_icall_System_Object_GetHashCode): impl.
25938
25939 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
25940
25941         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
25942
25943 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25944
25945         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
25946
25947 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25948
25949         * debug-helpers.{c,h}: moved here from monograph some useful functions
25950         to locate a method by name/signature in a class or image. Included
25951         also a small and flexible IL disassembler.
25952
25953 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25954
25955         * reflection.c: fixup tokens in methods with small header size, too.
25956
25957 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
25958
25959         * object.c (mono_string_to_utf8): remove assert(!error), instead
25960         print a warning. 
25961
25962 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
25963
25964         * icall.c: update to the new mono_Array_class_get interface.
25965
25966 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25967
25968         * appdomain.c, object.c: Boehm-GC enable.
25969         * icall.c: make get_data_chunk() support split data requests.
25970         Ensure a class is initialized in more cases. Return only the first
25971         property found in GetProperties() or the compiler gets confused. 
25972         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
25973         * reflection.h, reflection.c: add fixup mechanism for field and method
25974         tokens. Initialize assembly->typeref in a single place. Output
25975         properties after events. Support custom attributes for events, too.
25976         Typo fix for paramter custom attrs.
25977
25978 2002-03-07  Martin Baulig  <martin@gnome.org>
25979
25980         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
25981
25982 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
25983
25984         * class.c (mono_array_class_get): fix. for multi. dim. arrays
25985
25986 2002-03-06  Martin Baulig  <martin@gnome.org>
25987
25988         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
25989         non-zero lower bounds. See testcases #F10-#F13.
25990
25991 2002-03-05  Martin Baulig  <martin@gnome.org>
25992
25993         * exception.c (mono_get_exception_argument_out_of_range): New exception.
25994
25995         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
25996         ves_icall_System_Array_GetValue(), only calculate the absolute array position
25997         here.
25998         (ves_icall_System_Array_SetValue): Likewise.
25999         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
26000         as argument and does the actual work. This function is used when copying a
26001         multi-dimensional array.
26002         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
26003         now do all the widening conversions of value types.
26004         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
26005
26006 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26007
26008         * class.c: remove some magic numbers and use the smbolic names,
26009         instead. Added init_events() to load event info at class init time.
26010         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
26011         and mono_metadata_methods_from_event().
26012         * reflection.h, reflection.c: added support for writing out the evnets
26013         related information.
26014
26015 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
26016
26017         * reflection.h, icall.c: use a different method (GetInterfaces)
26018         to gather interface info and add isbyref, isprimitive and
26019         ispointer to the ves_icall_get_type_info() return value.
26020
26021 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
26022
26023         * class.h: stared adding support for events.
26024         * icall.c: split find_members implementation. Added debug icall to get
26025         the address of an object.
26026         * reflection.c: handle TypeBuilders in mono_type_get_object().
26027
26028 2002-03-01  Martin Baulig  <martin@gnome.org>
26029
26030         * icall.c (ves_icall_System_Array_GetLength): This must throw an
26031         ArgumentOutOfRangeException(), not an ArgumentException().
26032         (ves_icall_System_Array_GetLowerBound): Likewise.
26033         (ves_icall_System_Array_GetValue): Improved argument checking.
26034         (ves_icall_System_Array_SetValue): Improved argument checking.
26035
26036 2002-03-01  Martin Baulig  <martin@gnome.org>
26037
26038         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
26039         called with invalid arguments rather than just dying with g_assert().
26040         (ves_icall_System_Array_SetValue): Likewise.
26041         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
26042         raise a NotImplementedException instead.
26043         (ves_icall_System_Array_GetLength): Added argument checking.
26044         (ves_icall_System_Array_GetLowerBound): Added argument checking.
26045
26046 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
26047
26048         * object.h (mono_assert): new macros mono_assert and
26049         mono_assert_not_reached
26050
26051 2002-02-28  Martin Baulig  <martin@gnome.org>
26052
26053         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
26054         and "System::String::IsInterned" to "System::String::_IsInterned".
26055
26056 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
26057
26058         * icall.c: remove hacks for typebuilder. Added icall to create a
26059         modified type from a tybebuilder.
26060         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
26061         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
26062         to create a backing MonoClass for a TypeBuilder.
26063
26064 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26065
26066         * class.c, class.h: more refactoring of class init.
26067         Export mono_class_setup_mono_type() and mono_class_setup_parent().
26068
26069 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
26070
26071         * marshal.c, marshal.h: start of marshaling interface.
26072
26073 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26074
26075         * icall.c: fix order in assembly qualified name icall.
26076
26077 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
26078
26079         * class.c: do not free str, since we store it in the hash table.
26080         * reflection.h: add label field to MonoILExceptionInfo.
26081         * reflection.c: handle references to more than one assembly. Handle
26082         case when there isn't a module created in the assembly.
26083
26084 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
26085
26086         * class.c: Fix typo. Start refactoring of class init code.
26087
26088 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
26089
26090         * appdomain.c: exit with 1 on error.
26091         * class.c: we already have the name in MonoClassField.
26092         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
26093         MonoStreamHeader instead of an offset of image->raw_metadata.
26094
26095 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
26096
26097         * appdomain.c (mono_init): Be even more descriptive about the error.
26098
26099 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
26100
26101         * appdomain.c: give the user an informative message when corlib can't
26102         be loaded.
26103
26104 2002-02-26  Martin Baulig  <martin@gnome.org>
26105
26106         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
26107         New icall to get the time zone data.
26108
26109 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26110
26111         * reflection.c: set virtual and raw size of section correctly.
26112         * threads.c: transfer domain information to newly created threads.
26113
26114 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26115
26116         * class.c: when instancing a class in a domain, load the default
26117         vaules for static fields from the constant table. Fix System.Enum to
26118         not be an enum.
26119         * icall.c: implement Object::GetType() internalcall. Implemented
26120         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
26121         Fixed checking of binding flags in find_members().
26122         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
26123         * reflection.c: handle enumerations when writing to the constant
26124         table. Use a different object cache for types.
26125
26126
26127 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
26128
26129         * object.c (mono_object_isinst): fix for arrays
26130
26131         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
26132
26133 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26134
26135         * object.c: don't use mprotect ()  and fix intern pool hash table
26136         lookup for big endian systems.
26137
26138 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26139
26140         * icall.c: change type_is_subtype_of () signature.
26141
26142 2002-02-21  Mark Crichton  <crichton@gimp.org>
26143
26144         * rand.c, rand.h: Added random number generator for
26145         System.Security.Cryptography classes.
26146
26147         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
26148
26149         * icall.c: Added System.Security.Cryptography calls.
26150
26151 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
26152
26153         * class.c, icall.c, metadata.c: better support for pointer types.
26154         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
26155         * reflection.c: Add support for getting custom attrs for properties
26156         and simplify some code.
26157
26158 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26159
26160         * icall.c: change getToken () and add custom attribute GetBlob()helper
26161         method.
26162         * reflection.h: add custom attrs array to the reflection builder structures.
26163         * reflection.c: encode and emit custom attributes for all the relevant
26164         reflection objects. Cache fieldref and methodref tokens. Change
26165         mono_image_create_token() interface to take a MonoDynamicAssembly.
26166         More complete custom attributes decoder. Load custom attributes for
26167         Assembly, Field, Method and Constructor objects, too. Make the
26168         returned array an Attribute[] one, not object[]. Added
26169         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
26170         custom attribute constructor.
26171
26172 2002-02-20  Dick Porter  <dick@ximian.com>
26173
26174         * icall.c:
26175         * rawbuffer.c:
26176         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
26177         problem code out for now).
26178
26179 2002-02-19  Radek Doulik  <rodo@ximian.com>
26180
26181         * object.c (mono_ldstr): use hash table to avoid multiple swapping
26182
26183 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
26184
26185         * icall.c: register the GetCustomAttributes method.
26186         * object.c, object.h: add mono_string_new_len ().
26187         * reflection.h, reflection.c: added mono_runtime_invoke(),
26188         mono_install_runtime_invoke(). Added
26189         mono_reflection_get_custom_attrs () to load custom attributes and
26190         create the attribute objects.
26191
26192 2002-02-19  Dick Porter  <dick@ximian.com>
26193         * threads-dummy-types.c:
26194         * threads-dummy-types.h:
26195         * threads-dummy.c:
26196         * threads-dummy.h:
26197         * threads-pthread-types.c:
26198         * threads-pthread-types.h:
26199         * threads-pthread.c:
26200         * threads-pthread.h:  Deleted obsolete files
26201
26202 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
26203
26204         * class.c (mono_class_vtable): runtime init the class when we
26205         allocate static class data.
26206
26207         * icall.c (ves_icall_System_Array_SetValue): check for null values.
26208
26209         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
26210         and String - but we will need generic marshalling support in the
26211         future. 
26212         (mono_init): set the domain name in a ms compatible way
26213
26214         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
26215         String[].
26216
26217 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
26218
26219         * object.c (mono_array_clone): use alloca() instead of g_malloc  
26220         for sizes
26221
26222         * appdomain.c (mono_domain_unload): impl.
26223
26224 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26225
26226         * appdomain.c, object.c: fix intern pool implementation.
26227         * class.c: fix alignment code.
26228
26229 2002-02-16  Radek Doulik  <rodo@ximian.com>
26230
26231         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
26232         and s2 > s1, just copy lower bytes to be compatible with little
26233         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
26234         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
26235
26236         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
26237         force big_endian to be 1 for big endian machines 
26238         (ves_icall_iconv_new_decoder): ditto
26239
26240 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
26241
26242         * socket-io.c (convert_sockopt_level_and_name): If the system
26243         doesn't define SOL_IP or SOL_TCP, get them by hand using
26244         getprotobyname() and caching the values (because this could be a
26245         slow operation).
26246         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
26247         Use the appropriate struct when the system does support it. Ie,
26248         not all systems have struct ip_mreqn so use struct ip_mreq when
26249         appropriate.
26250
26251 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
26252
26253         * reflection.c: handle finally clauses.
26254
26255 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
26256
26257         * socket-io.c: use g_snprintf() instead of snprintf.
26258
26259 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26260
26261         * reflection.c (mono_param_get_objects): Cast second argument to
26262         mono_method_get_param_names to a const char** to silence the
26263         compiler warning.
26264
26265         * appdomain.c (mono_domain_assembly_open): Put parens around the
26266         truth statement in the for-loop.
26267
26268         * unicode.c (iconv_convert): Got rid of a compiler warning about
26269         int i being unused when the system has a new iconv.
26270         (iconv_get_length): Same.
26271
26272         * image.c (load_class_names): Cast the second argument to
26273         g_hash_table_insert() to char* to hush compiler warnings about the
26274         arg being a const.
26275         (mono_image_open): Same here.
26276
26277         * socket-io.c: Don't conditionally include sys/filio.h or
26278         sys/sockio.h here anymore since we now get them from
26279         io-layer/io-layer.h
26280         (inet_pton): If the system doesn't support inet_aton, implement
26281         using inet_addr and also #define INADDR_NONE if it isn't defined
26282         by the system.
26283
26284 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
26285
26286         * metadata.c, metadata.h: added function to get packing and size info
26287         of a typedef.
26288         * reflection.h, reflection.c: handle field RVA data. Save info about
26289         the table layout if needed. Assign typedef indexes to all the types
26290         before dumping the info about them to avoid forward reference problems.
26291
26292 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
26293
26294         * socket-io.c (convert_sockopt_level_and_name): ifdef
26295         SO_ACCEPTCONN because it is not defined on my system (old debian)
26296
26297 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
26298
26299         * opcode.c: use stddef.h to get NULL.
26300
26301 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26302
26303         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
26304         for FIONBIO, FIONREAD and SIOCATMARK.
26305         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
26306         define INADDR_NONE and besides, inet_addr() is deprecated and
26307         should not be used. Use inet_pton() instead - it also has the
26308         added bonus that it can easily handle IPv6 addresses as well.
26309         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
26310
26311 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
26312
26313         * decimal.c: remove _MSC_VER conditional.
26314
26315 2002-02-13  Dick Porter  <dick@ximian.com>
26316
26317         * socket-io.c: 
26318         * icall.c: Internal calls for Blocking, Select, Shutdown,
26319         GetSocketOption and SetSocketOption
26320
26321 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26322
26323         * assembly.cs: better resolver: use it instead of some kludgy
26324         code.
26325
26326 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
26327
26328         * reflection.c: the best way to speed-up the compiler is to avoid
26329         infinite loops.
26330
26331 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
26332
26333         * class.c (mono_class_vtable): changed the object layout
26334         (obj->vtable->class). 
26335         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
26336
26337 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26338
26339         * assembly.c: look for assemblies in the assembly dir, too.
26340
26341 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26342
26343         * class.c: fix thinko in mono_class_from_type().
26344
26345 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26346
26347         * exception.h, exception.c: added TypeLoadException.
26348         * object.h, object.c: added mono_array_clone ().
26349         * icall.c: handle throwOnError in AssemblyGetType().
26350         Added Array.Clone().
26351         * opcode.h, opcode.c: use a single value for the opcode val.
26352         Compile fix for non-gcc compilers.
26353
26354 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
26355
26356         * opcodes.c, opcodes.h: export interesting info about opcodes.
26357
26358 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
26359
26360         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
26361         icalls. 
26362
26363         * class.c (class_compute_field_layout): set element_class for enums
26364         (mono_class_create_from_typedef): set element_class for normal classes
26365
26366         * icall.c (ves_icall_System_Enum_get_value): impl.
26367
26368         * class.c (mono_class_create_from_typedef): do not set valuetype
26369         flag for System.ValueType and System.Enum
26370
26371 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
26372
26373         * unicode.c (iconv_convert): fix big endian problem.
26374
26375 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26376
26377         * class.c: add asserts if we are ever going to scribble over memory.
26378         * socket-io.c: not all systems have AF_IRDA defined.
26379
26380 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
26381
26382         * class.c (class_compute_field_layout): do not consider static
26383         fields to compute alignment
26384
26385 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
26386
26387         * appdomain.c (mono_appdomain_get): impl.
26388         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
26389
26390 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
26391
26392         * icall.c: ignore "file://" prefix when loading an assembly.
26393
26394 2002-01-23  Dick Porter  <dick@ximian.com>
26395
26396         * socket-io.c:
26397         * icall.c:
26398         * Makefile.am: Added socket support
26399
26400 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26401
26402         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
26403         code back.  This should return the assemblies that are loaded by
26404         the runtime on behalf of an application domain. 
26405
26406         The current implementation is still broken, it just returns every
26407         assembly loaded, but until we get real applications domain this
26408         will do.
26409
26410 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
26411
26412         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
26413         AppDomain object.
26414
26415 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26416
26417         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
26418         the mono_class_from_name lookup.
26419         (ves_icall_get_parameter_info): ditto.
26420         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
26421         method.
26422         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
26423
26424 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
26425
26426         * class.c: load also nested classes on class init.
26427         System.ValueType instance methods gets passed boxed
26428         values, unless methods in derived classed that get a pointer to the
26429         data.
26430         * icall.c: use better name parsing code in GetType().
26431         * image.c, image.h: add mono_image_loaded ().
26432         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
26433         * reflection.c, reflection.h: added mono_reflection_parse_type().
26434
26435 2002-01-22  Veronica De Santis <veron78@interfree.it>
26436
26437         * icall.c : Added mapping of internal calls for Manual and Auto reset events
26438         * threads.c : Added the implementation of internal calls for events
26439         * threads.h : Added prototypes of internal calls for events
26440         
26441 2002-01-21  Radek Doulik  <rodo@ximian.com>
26442
26443         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
26444
26445 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
26446
26447         * class.c (mono_class_init): set min_align to 1 (instead of 0)
26448         (mono_class_value_size): use min_align
26449
26450 2002-01-20  Dick Porter  <dick@ximian.com>
26451
26452         * threads.h:
26453         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
26454         so it compiles on w32.
26455
26456 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
26457
26458         * metadata.c (mono_type_stack_size): impl.
26459
26460         * class.c (mono_class_get_field): impl. memberref token
26461
26462 2002-01-16 Veronica De Santis <veron78@@interfree.it>
26463
26464         * icall.h : Added the internal calls mapping for CreateMutex_internal
26465                     and ReleaseMutex_internal.
26466         * threads.h : Added the prototype of mutexes internal calls.
26467         * threads.c : Added the implementations of mutexes internal calls.
26468
26469 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26470
26471         * metaparse.h: removed unused file.
26472         * reflection.c, reflection.h: added stream_data_align () function 
26473         to align data in streams and keep stream aligned. Add support for
26474         exception support in method headers.
26475
26476 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
26477
26478         * unicode.c: make iconv_convert () return the number of bytess written
26479         in the output buffer.
26480
26481 2002-01-15  Dick Porter  <dick@ximian.com>
26482         * threads.c: Make the runtime's idea of infinite timeouts coincide
26483         with the class library's
26484
26485         Fix a particularly egregious bug in mono_thread_cleanup(). That
26486         code was so utterly bogus it must have been written on a Monday.
26487
26488 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
26489
26490         * reflection.h: add subtypes field to TypeBuilder.
26491         * reflection.c: encode constants for literal fields.
26492         Handle subtypes. Fix user string token (and add a zero byte)
26493         at the end.
26494         
26495 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
26496
26497         * class.c (mono_class_init): bug fix: assign slot numbers for
26498         abstract methods.
26499
26500 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26501
26502         * reflection.c: don't try to output a code RVA for abstract methods.
26503         Small fixes for method header format. Output parameter info to the
26504         ParamDef table. Save method overriding info to MethodImpl table.
26505         Fix property support. Allow typedef.extends to be a type in the
26506         building assembly.
26507         * verify.c: fix off-by-one error.
26508
26509 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
26510
26511         * class.c: fix mono_class_from_mono_type () for szarray types.
26512         Remove unused cache check in mono_class_from_type_spec().
26513         * icall.c: *type_from_name () functions handle simple arrays and byref.
26514         * reflection.c: handle byref and szarray types. Handle methods without
26515         body (gets P/Invoke compilation working). Handle types and fields in
26516         get_token ().
26517         * reflection.h: add rank to MonoTypeInfo.
26518
26519 2002-01-10  Dick Porter  <dick@ximian.com>
26520
26521         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
26522         internal calls
26523
26524 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26525
26526         * icall.c: initialize class in type_from_handle ().
26527         Loop also in parent classes for get_method ().
26528         * reflection.c: properly encode class and valuetype types.
26529         Start on encoding TypeBuilder types. Handle fieldrefs.
26530         Use correct length when registering a user string.
26531         Handle ConstructorBuilder and MonoMethod in get_token ().
26532         Make mono_type_get_object () aware of cached types.
26533         * object.c: back out change to mono_string_new ().
26534
26535 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
26536         * object.c: mono_string_new should return a NULL when the string 
26537         passed in is NULL -- not try to deference it.
26538         
26539 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
26540
26541         * icall.c: hack to make IsSubType work for TypeBuilders.
26542         * reflection.c: emit constructors before methods.
26543         Retrieve param names in mono_param_get_objects().
26544
26545 2002/01/05  Nick Drochak  <ndrochak@gol.com>
26546
26547         * Makefile.am: fix list of headers and sources so automake 1.5
26548         doesn't complain. Removed \# at end of list.
26549
26550 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26551
26552         * reflection.c: get token for a method ref. Set return type of
26553         constructor to void.
26554         * loader.c: debug message.
26555         * class.c: typo fix.
26556
26557 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
26558
26559         * icall.c: fix array init with rank > 1. FindMembers
26560         loops in parent class as well.
26561         * image.c: do not insert nested types in name cache.
26562         * reflection.c: warning fix.
26563         * reflection.h: add override method (for interface impl).
26564
26565 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
26566
26567         * metadata.c: fix customattr decoding.
26568
26569 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
26570
26571         * rawbuffer.cs: Added native Win32 implementation, avoids using
26572         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
26573
26574 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
26575
26576         * class.c: make the low-level routines handle the cache.
26577
26578 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
26579
26580         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
26581
26582 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
26583
26584         * class.c: fix mono_array_element_size() for objects.
26585         * class.h, class.c: add properties to MonoClass and load them
26586         at init time.
26587         * icall.c: check with isinst() when assigning a value to an array
26588         instead of requiring the classes to match exactly.
26589         Implemented icall for System.Type::GetType().
26590         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
26591         enums. Handle bindingflags when looking for methods and fields.
26592         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
26593         and mono_metadata_methods_from_property().
26594         * reflection.h, reflection.c: added structures for propreties,
26595         parameters and enums. Implemented mono_property_get_object() and
26596         mono_param_get_objects().
26597
26598 2001-12-18  Dick Porter  <dick@ximian.com>
26599
26600         * file-io.c: Use mono_string_to_utf16() instead of
26601         mono_string_chars()
26602
26603         * object.c: Added mono_string_to_utf16(), which copies the non
26604         NULL-terminated MonoString into a new double-null-terminated
26605         buffer.
26606
26607 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
26608
26609         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
26610
26611 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
26612
26613         * file-io.c: raise exceptions if handle is invalid.
26614
26615 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
26616
26617         * assembly.c: yet another check for mscorlib.
26618         * class.c, class.h: load nesting info for classes.
26619         * icall.c: many new functions to support the Reflection classes.
26620         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
26621         * reflection.h, reflection.c: mono_image_create_token(),
26622         mono_assembly_get_object(), mono_type_get_object(),
26623         mono_method_get_object(), mono_field_get_object(): methods to return
26624         objects that parallel the C representation of assemblies, types,
26625         methods, fields.
26626
26627 2001-12-11  Dick Porter  <dick@ximian.com>
26628
26629         * icall.c:
26630         * file-io.c: Internal calls for file IO.
26631
26632 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
26633
26634         * tabledefs.h: missing FileAttributes.
26635         * verify.h, verify.c: use is_valid_string () to simplify and check for
26636         valid strings more correctly. Fix warnings and speeling.
26637         Check more tables: Filed, File, ModuleRef, StandAloneSig.
26638         Check code: branches, maxstack, method calls.
26639
26640 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
26641
26642         * object.c (mono_object_allocate): removed static, so that the jit
26643         can allocate value types.
26644
26645         * icall.c (ves_icall_System_DateTime_GetNow): impl.
26646
26647 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26648
26649         * class.c: init enum types right away and register the
26650         token->MonoClass map in mono_class_create_from_typedef ().
26651         * verify.h, verify.c: first cut of the verifier.
26652         * pedump.c: add --verify switch to verify metadata tables.
26653         * tabledefs.h: add some missing enums.
26654
26655 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
26656
26657         * class.c (mono_install_runtime_class_init): impl.
26658         (mono_class_init): renamed mono_class_metadata_init to
26659         mono_class_init, also removed the metadata_inited flag
26660
26661         * object.c (mono_object_isinst): use faster algorithm
26662
26663 2001-11-30  Radek Doulik  <rodo@ximian.com>
26664
26665         * mono-endian.h: reverted last change
26666         added function prototypes
26667
26668         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
26669         add mono-endian.c back
26670
26671         * mono-endian.c: returned back, as Paolo pointed out, it's needed
26672         for unaligned access, I've mistaked it with endianess. I am
26673         sorry.
26674         (mono_read16): fix reverted endianess
26675         (mono_read64): ditto
26676         (mono_read32): ditto
26677
26678 2001-11-30  Dick Porter  <dick@ximian.com>
26679
26680         * exception.c: Implement mono_exception_from_name()
26681
26682 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26683
26684         * metadata.h, metadata.c: remove params_size and locals_size and their
26685         calculation from the metadata code: they are only usefult to the
26686         interp.
26687
26688 2001-11-29  Radek Doulik  <rodo@ximian.com>
26689
26690         * object.c (mono_ldstr): swap bytes here, it's probably not the
26691         best place, but works for me now, I'll redo it once I know mono
26692         better, also note that I add PROT_WRITE and don't reset back, also
26693         note that it's only affects big endians, so x86 should be OK
26694
26695         * mono-endian.h (read16): use just glib macros for both endians
26696
26697         * mono-endian.c: removed as glib macros are used in in
26698         mono-endian.h so we don't need to care about endianess for read
26699         macros as glib does that for us already
26700
26701 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
26702
26703         * class.h, class.h: take minimum alignment into consideration so
26704         that the fields of a class remain aligned also when in an array.
26705
26706 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26707
26708         * loader.h, loader.c: add mono_method_get_param_names().
26709         * class.c: 0-init class fields.
26710
26711 2001-11-26  Dick Porter  <dick@ximian.com>
26712
26713         * icall.c:
26714         * threads-types.h:
26715         * threads.c: New file that handles System.Threading on all platforms
26716
26717         * object.c: 
26718         * object.h: Remove the synchronisation struct from MonoObject,
26719         replace it with a pointer that gets initialised on demand
26720
26721         * Makefile.am: Replace all the system-specific threading code with
26722         a single file that uses the new wrapper library
26723
26724 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
26725
26726         * class.c, class.h: add mono_install_trampoline() so that the runtime
26727         can register a function to create a trampoline: removes the ugly
26728         requirement that a runtime needed to export arch_create_jit_trampoline.
26729         * object.h, object.c: added mono_install_handler() so that the runtime
26730         can install an handler for exceptions generated in C code (with
26731         mono_raise_exception()). Added C struct for System.Delegate.
26732         * pedump.c: removed arch_create_jit_trampoline.
26733         * reflection.c: some cleanups to allow registering user strings and
26734         later getting a token for methodrefs and fieldrefs before the assembly
26735         is built.
26736         * row-indexes.h: updates and fixes from the new ECMA specs.
26737
26738 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
26739
26740         * class.h, class.c: add enum_basetype field to MonoClass.
26741         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
26742         to get index in the constant table reated to a field, param or
26743         property.
26744         * reflection.h, reflection.c: handle constructors. Set public-key and
26745         version number of the built assembly to 0.
26746         * row-indexes.h: update from new ECMA spec.
26747
26748 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26749
26750         * class.h, class.c: add a max_interface_id to MonoClass.
26751         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
26752         since it's used to do that. Added mono_type_type_from_obj().
26753         Make GetType() return NULL instead of segfaulting if the type was not
26754         found. Handle simple arrays in assQualifiedName.
26755         * object.h: add a struct to represent an Exception.
26756         * reflection.c: output call convention in method signature.
26757         Add code to support P/Invoke methods and fixed offsets for fields.
26758
26759 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
26760
26761         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
26762         the value.
26763         * icall.c: use mono_array_addr instead of array->vector: fixes the
26764         reflection image writing.
26765         * reflection.c: init call convention byte to 0 in method signature.
26766         Encode the property signature. Don't output property-related methods
26767         twice. Really process the properties for a type (don't cast a field to
26768         a property, my mom always told me that).
26769         Fix 64 bit issues in pointer alignment in a different and more
26770         readable way.
26771
26772 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
26773
26774         * loader.h: Removed type class from MonoDefaults, added monotype
26775
26776         * loader.c: Loaded MonoType, removed loading of Type
26777
26778         * icall.c (my_mono_new_object): Now returns a System.MonoType,
26779         and fills in System.Type._impl with a RuntimeTypeHandle rather
26780         than the actual MonoClass *
26781
26782         (ves_icall_type_from_handle): change from type_class to
26783         monotype_class
26784
26785         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
26786         implemented
26787
26788         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
26789         implemented
26790
26791         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
26792
26793         (ves_icall_System_Reflection_Assembly_GetType): implemented
26794
26795         (ves_icall_System_MonoType_assQualifiedName): implemented
26796
26797         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
26798
26799 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
26800
26801         * assembly.c (mono_assembly_open): Implement a cache for the
26802         assemblies. 
26803
26804         (mono_assembly_close): only destroy the assembly when the last
26805         reference is gone.
26806         
26807 2001-11-09  Dick Porter  <dick@ximian.com>
26808
26809         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
26810
26811 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
26812
26813         * class.c (mono_class_metadata_init): bug fix: compute the right slot
26814
26815 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26816
26817         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
26818         from Martin Weindel.
26819         * object.h: add mono_string_chars ().
26820
26821 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
26822
26823         * reflection.c (build_compressed_metadata): Eliminates warnings
26824         and uses 64-bit clean code.
26825
26826         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
26827         (mono_type_equal): Change signature to eliminate warnings.
26828
26829 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26830
26831         * icall.c, loader.c: remove the internalcall array constructors.
26832         Changes to match the new MonoArray structure.
26833         * object.h, object.c: an array object doesn't allocate an extra
26834         vector. Add mono_array_new_full () to create jagged arrays easily.
26835
26836 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26837
26838         * metadata.h, metadata.c: add mono_metadata_field_info () to
26839         retreive all the info about a field from vairous tables.
26840         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
26841         * class.h, class.c: augment MonoClassField with more info.
26842         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
26843         policy and load a field's RVA if needed.
26844
26845 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
26846
26847         * class.c (mono_class_metadata_init): create a trampoline for all
26848         virtual functions instead of actually compiling them.
26849
26850 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
26851
26852         * class.h, class.c: include name in MonoClassField.
26853         * class.c: fix fundamental type of System.Object and System.String.
26854         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
26855         tokens in ldtoken.
26856         * icall.c: remove internalcalls for the Reflection stuff that is now
26857         done in C# code.
26858         * loader.c: mono_field_from_memberref () implementation.
26859         * mono-endian.c: thinko (s/struct/union/g).
26860         * object.c, object.h: make the mono_string_* prototypes actually use
26861         MonoString instead of MonoObject.
26862         * reflection.c, reflection.h: updates for changes in the reflection
26863         code in corlib: we use C structures that map to the actual C# classes.
26864         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
26865         fat method header if needed and use the info from the ILGenerator for
26866         methods. Handle fields in types. Misc fixes.
26867
26868 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
26869
26870         * class.c (mono_class_metadata_init): bug fix: always allocate
26871         space for static class data
26872
26873 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
26874
26875         * class.c (mono_compute_relative_numbering): use relative
26876         numbering to support fast runtime type checks.
26877
26878 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
26879
26880         * class.c (mono_class_create_from_typeref): added debugging output
26881         to print class name when MonoDummy is returned instead of real class
26882
26883 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
26884
26885         * class.c (mono_class_metadata_init): interface offset table now
26886         contains pointers into the vtable - this is more efficient for the jit
26887
26888 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
26889
26890         * class.c (mono_class_metadata_init): use a temporary vtable (the
26891         old algorithm only worked for the interpreter, but not for the jit)
26892
26893 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
26894
26895         * loader.c (method_from_memberref): use mono_class_get to get the
26896         class of an array instead of using System.Array directly.
26897         (mono_get_method): also add MEMBERREF methods to the method cache
26898         which usefull for arrays.
26899
26900 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
26901
26902         * pedump.c (arch_compile_method): added to compute vtable entry
26903
26904         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
26905         number of interfaces.
26906         
26907         * class.h: merged MonoArrayClass into MonoClass
26908
26909         * class.c (mono_class_create_from_typedef): compute the vtable size and
26910         allocate space to include the vtable inside MonoClass
26911         (mono_class_metadata_init): initialize the vtable
26912
26913 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
26914
26915         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
26916         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
26917         * image.c: endian fixes by Laurent Rioux.
26918         * object.h, object.c: rename MonoStringObject to MonoString and
26919         MonoArrayObject to MonoArray. Change some function names to conform to
26920         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
26921         guint16* as first argument, so don't use char*.
26922         Provide macros to do the interesting things on arrays in a portable way.
26923         * threads-pthread.c: updates for the API changes and #include <sched.h>
26924         (required for sched_yield()).
26925         * icall.c: updates for the API changes above.
26926         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
26927         platforms that need them.
26928
26929 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26930
26931         * class.c: set the correct type for all the fundamental
26932         type when loading the class.
26933
26934 2001-10-05  Dick Porter  <dick@ximian.com>
26935
26936         * threads-pthread.c (pthread_mutex_timedlock): Simple
26937         compatibility version for C libraries that lack this call.
26938
26939 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26940
26941         * class.c: MonoTypes stored in MonoClass are stored as
26942         fundamental MonoTypes when the class represents a
26943         fundamental type (System.Int32, ...).
26944         The TypeHandle return by ldtoken is a MonoType*.
26945         * icall.c: ves_icall_get_data_chunk () write out all the
26946         PE/COFF stuff. Implement ves_icall_define_method (),
26947         ves_icall_set_method_body (), ves_icall_type_from_handle ().
26948         * image.c: properly skip unknown streams.
26949         * loader.h, loader.c: add type_class to mono_defaults.
26950         * metadata.c, metadata.h: export compute_size () as
26951         mono_metadata_compute_size () with a better interface.
26952         Typo and C&P fixes.
26953         * pedump.c: don't try to print the entry point RVA if there is no entry point.
26954         * reflection.c, reflection.h: many cleanups, fixes, output method
26955         signatures and headers, typedef and typeref info, compress the metadata
26956         tables, output all the heap streams, cli header etc.
26957         * row-indexes.h: typo fixes.
26958
26959 2001-10-04  Dick Porter  <dick@ximian.com>
26960
26961         * object.h: Add a synchronisation mutex struct to MonoObject
26962
26963         * object.c (mono_new_object): Initialise the object
26964         synchronisation mutexes
26965
26966         * icall.c: System.Threading.Monitor internal calls
26967         
26968         * threads-pthread.h:
26969         * threads-pthread.c: System.Threading.Monitor internal calls
26970
26971         * threads-types.h: New file, includes the system-specific thread
26972         structures
26973         
26974         * threads-pthread-types.h:
26975         * threads-pthread-types.c: New files, handle pthread-specific
26976         synchronisation types
26977
26978         * threads-dummy-types.h: 
26979         * threads-dummy-types.c: New files of dummy support for
26980         thread-specific types
26981
26982         * metadata.c:
26983         * image.c:
26984         * pedump.c: include mono-endian.h not endian.h
26985         
26986         * Makefile.am: More threads files.
26987         Name mono-endian.h not endian.h
26988
26989 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
26990
26991         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
26992         stuff and implement a few more bits.
26993         * icall.c: a field needs to be dereferenced twice. Do not use the same
26994         name for two variables in the same scope.
26995         * image.c, image.h: cleanups.
26996
26997 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
26998
26999         * class.c (mono_class_metadata_init): bug fix: compute the right size
27000
27001 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
27002
27003         * icall.c: implemented some of the Reflection internalcalls.
27004         * image.c, image.h: start writing out the PE/COFF image.
27005         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
27006         that does the reverse than decode_blob_size ().
27007         * object.c: use mono_metadata_encode_value (). Move here
27008         temporary implementation of mono_string_to_utf8 ().
27009         * rawbuffer.c: make malloc_map static.
27010
27011 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27012
27013         * metadata.c: fix type comparison for arrays.
27014         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
27015         Added a couple of new classes to monodefaults.
27016         * icall.c: added a couple of Reflection-related internalcalls.
27017         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
27018         Added a byval_arg MonoType to MonoClass.
27019
27020 2001-09-28  Dick Porter  <dick@ximian.com>
27021
27022         * icall.c:
27023         * threads-pthread.h: 
27024         * threads-pthread.c: Implemented internal calls for
27025         LocalDataStoreSlot operations.  Applied mutexes around all shared
27026         data.  Reworked the thread creation and Start() operations to
27027         avoid a race condition.
27028         
27029         * threads-dummy.h:
27030         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
27031
27032 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
27033
27034         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
27035
27036 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
27037
27038         * class.c, loader.c: warn and return NULL instead of erroring out.
27039         * icall.c: added System.AppDomain::getCurDomain().
27040         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
27041
27042 2001-09-25  Dick Porter  <dick@ximian.com>
27043
27044         * threads-pthread.h:
27045         * threads-pthread.c: Implemented timed thread joining and added
27046         System.Threading.Thread::Join_internal internal call
27047
27048         * icall.c: Added System.Threading.Thread::Join_internal internal call
27049
27050         * threads-dummy.h:
27051         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
27052
27053 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
27054
27055         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
27056         mono_string_intern () to implement the semantics of the ldstr opcode
27057         and the interning of System.Strings.
27058         * icall.c: provide hooks to make String::IsIntern and String::Intern
27059         internalcalls.
27060
27061 2001-09-23  Dick Porter  <dick@ximian.com>
27062
27063         * threads-dummy.c: 
27064         * threads-dummy.h: New files of dummy threading routines
27065
27066         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
27067         support code based on system specifics
27068
27069         Rename PTHREAD_LIBS to THREAD_LIBS
27070         
27071 2001-09-23  Dick Porter  <dick@ximian.com>
27072
27073         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
27074         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
27075         internal calls.
27076         (mono_thread_init): Set up a Thread object instance to return when
27077         the main thread calls Thread.CurrentThread
27078         (mono_thread_cleanup): Wait for all subthreads to exit
27079
27080         * icall.c: New internal calls for System.Threading.Thread::Sleep
27081         (including Schedule) and CurrentThread
27082
27083         * threads.h: New file, to insulate thread-specific stuff from the
27084         rest of the code
27085
27086 2001-09-21  Dick Porter  <dick@ximian.com>
27087
27088         * threads-pthread.h: 
27089         * threads-pthread.c: New file, for handling pthreads-style
27090         threading support.  Start() now starts a new thread and executes
27091         the ThreadStart delegate instance.
27092
27093         * icall.c: Added the internalcall for
27094         System.Threading.Thread::Start_internal
27095
27096         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
27097
27098 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
27099
27100         * loader.c: work around the different signatures for delegates
27101         constructors csc generates in compiled code vs the ones compiled in mscorlib.
27102
27103 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27104
27105         * class.h, class.c: add mono_class_get_field_from_name ().
27106         * *: Fix C comments and other ANSI C issues.
27107
27108 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
27109
27110         * endian.h, assembly.c: fix some endianness issues.
27111
27112 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
27113
27114         * loader.h, load.c: add delegate_class to mono_defaults.
27115         Handle runtime provided methods in mono_get_method ().
27116
27117 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
27118
27119         * loader.c (mono_get_method): use pinvoke for internal call
27120
27121         * icall.c: use pinvoke for internal call
27122
27123         * loader.c (method_from_memberref): set the method name
27124
27125 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
27126
27127         * metadata.c: help the compiler generate better code for
27128         mono_class_from_mono_type ().
27129
27130 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
27131
27132         * class.c (mono_class_metadata_init): delayed computing of the
27133         class size to mono_class_metadata_init ()
27134
27135 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
27136
27137         * class.c, class.h: add an interfaces member to MonoClass.
27138         * image.c, image.h: add assembly_name field to MonoImage
27139         from the assembly table.
27140         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
27141
27142 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27143
27144         * class.c: Handle Array in mono_class_from_mono_type ().
27145         * metadata.c, pedump.c: some endian fixes.
27146
27147 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
27148
27149         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
27150         * metadata.c: fix small problem introduced with the latest commit.
27151
27152 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
27153
27154         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
27155         We don't need a MonoMetadata pointer anymore to compare signatures in
27156         mono_metadata_signature_equal (), update callers.
27157         Reduced memory usage an number of allocations for MonoMethodHeader and
27158         MonoMethodSignature.
27159
27160 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
27161
27162         * metadata.c: added compare for szarray.
27163
27164 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
27165
27166         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
27167         and add a couple more types to it and mono_defaults. Give an hint on
27168         classes that need implementing in our corlib and are referenced
27169         in mscorlib.
27170
27171 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
27172
27173         * class.h, class.c: keep track if a class is also an Enum.
27174         * loader.c: Implement a couple more types for use in libffi
27175         marshalling. Gives better diagnostics when failing to dlopen
27176         a library. Set method->klass for P/Invoke methods, too.
27177
27178 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
27179
27180         * class.c, class.h: add a MonoType this_arg to MonoClass that
27181         represents a pointer to an object of the class' type that
27182         can be used by the interpreter and later the type cache.
27183         Add best guess alignment info for valuetype objects.
27184
27185 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
27186
27187         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
27188         into MonoType: one less level of indirection and allocation and
27189         simplifies quite a bit of code. Added cache for MonoTypes that are
27190         used frequently, so that we don't need to allocate them all the time.
27191
27192 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
27193
27194         * class.c (mono_class_create_from_typedef): System.Enum is also a
27195         value type, although it does not derive from System.ValueType
27196         (maybe a bug in the ms compiler?)
27197
27198         * metadata.c (mono_type_size): return the right size for value types
27199
27200         * loader.c (mono_get_method): only initialize method header if not abstract
27201
27202         * class.c (mono_class_from_mono_type): use mono_default values. 
27203
27204 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
27205
27206         * *: use MonoClass pointers instead of <type_tokens>
27207         
27208         * class.h: new flag: metadata_inited.
27209
27210         * class.c (mono_class_metadata_init): impl.
27211         (mono_class_instance_size): impl.
27212         (mono_class_data_size): impl.
27213
27214 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27215
27216         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
27217         MonoClass now has the name and name_space fields. 
27218         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
27219         mono_get_method () takes and optional MonoClass as argument.
27220         Removed mono_typedef_from_name() and added mono_class_token_from_name()
27221         instead that takes advantage of a map from class names to typedef
27222         tokens in MonoImage.
27223
27224 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
27225
27226         * metadata.c: zero is not a valid alignment boundary.
27227         Merge MONO_TYPE_VOID in default decoding code.
27228
27229 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
27230
27231         * image.h: merged MonoMetadata into MonoImage
27232
27233         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
27234         identify the type of elements.
27235
27236 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
27237
27238         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
27239         * cil-coff.h: split MonoMSDOSHeader and add size info.
27240         * image.c: add some consistency checks.
27241         * metadata.c: fix row size computation: one programmer
27242         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
27243         add explanation for the locator routine.
27244         Fix decoding of size in method header.
27245         
27246 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
27247
27248         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
27249         (g_concat_dir_and_file): Bring g_concat_dir_and_file
27250         function from gnome-libs.  This uses the right path separator
27251         based on the OS, and also works around a bug in some systems where
27252         a double slash is not allowed. 
27253         (default_assembly_name_resolver): Use g_concat_dir_and_file
27254         (mono_assembly_open): ditto.
27255
27256 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
27257
27258         * metadata.c (mono_metadata_signature_equal): impl.
27259
27260         * *: void is now a realy MonoType (instead of using NULL)
27261         
27262         * metadata.c (do_mono_metadata_parse_type): use
27263         mono_metadata_parse_type to parse void value.
27264
27265 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
27266
27267         * metadata.c, metadata.h: in the signature and method header store
27268         only the space required for holding the loca vars and incoming arguments.
27269
27270 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
27271
27272         * metadata.c (do_mono_metadata_parse_type): treat void like any
27273         other type (instead of assigning NULL);
27274
27275 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
27276
27277         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
27278
27279 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
27280
27281         * image.c (do_mono_image_open): added a cache for arrays.
27282
27283 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27284
27285         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
27286         decode a single column from a row in a metadata table and changes
27287         to take advantage of it in the typedef locator (gives a nice speed up).
27288         Store offset info for function params.
27289
27290 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
27291
27292         * image.h (MONO_IMAGE_IS_CORLIB): removed 
27293
27294 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
27295
27296         * assembly.c: how could mono_assembly_close () had ever worked?
27297         * metadata.c, metadata.h: provide offset info for local vars.
27298         Implement mono_type_size () to take care of alignment as well
27299         as size (it was mono_field_type_size in cli/class.c before).
27300
27301 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
27302
27303         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
27304
27305         * assembly.h (CORLIB_NAME): set to corlib.dll
27306
27307         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
27308
27309 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27310
27311         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
27312         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
27313         tokentype.h: massive namespace cleanup.
27314
27315 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27316
27317         * metadata.h, metadata.c: decode exception clauses when parsing method header.
27318
27319 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
27320
27321         * metadata.c (mono_metadata_free_type): added check for type !=
27322         NULL (void) before calling mono_metadata_free_type()
27323
27324 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
27325
27326         * metadata.h, row_indexes.h: added header with enumerations to use
27327         to index in the columns from tables in metadata and to decode coded
27328         tokens: we should start using this instead of embedding magic numbers
27329         all over the code.
27330
27331 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
27332
27333         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
27334         Move metadata_t info from cli_image_info_t to MonoImage, where
27335         it's easily accessible. Changed all the uses accordingly.
27336         Added the method and class caches to MonoImage.
27337         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
27338         and mono_metadata_decode_value () signature to be more consistent
27339         with the other parse functions (and simplify code). Taken advantage
27340         of zero-length array allocation with GCC. Removed reduntant (and
27341         wrong) MonoFieldType struct and use MonoParam instead. Changed
27342         mono_metadata_parse_field_type () to use common code for parsing.
27343         Added mono_metadata_typedef_from_field () and
27344         mono_metadata_typedef_from_method () to lookup a typedef index from a
27345         field or method token.
27346         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
27347
27348 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
27349
27350         * metadata.c (mono_metadata_parse_field_type): Implement. 
27351         (do_mono_metadata_parse_type): Split engine from
27352         mono_metadata_parse_type, so that we can create smaller structures
27353         for things that just have one pointer to the MonoType (look at
27354         the MonoFieldType)
27355
27356 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
27357
27358         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
27359         as Jan Gray found out, it is incorrect. 
27360
27361 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
27362
27363         * assembly.c: Implement asssembly loading.  This loads an image
27364         and loads all the referenced assemblies.  Come to think of it, we
27365         could always do lazy loading of the assemblies. 
27366
27367         * image.c (mono_image_open): Keep loaded images in a hashtable.
27368
27369         * image.h (MonoImage): Add reference count.
27370
27371 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
27372
27373         * assembly.c (mono_assembly_open): Keep track of the file name in
27374         case the assembly has no ASSEMBLY table.
27375
27376         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
27377         from get.c here.
27378
27379 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
27380
27381         * metadata.c, metadata.h: decode local vars in method header
27382         parse function. Change callers accordingly.
27383
27384 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
27385
27386         * metadata.h, cil-coff.h: protect against multiple inclusion.
27387         Added some new structures to hold information decoded from metadata:
27388         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
27389         and relevant decoding/free functions.
27390         * metadata.c: implement decoding functions. Add warning for out of bounds
27391         index in mono_metadata_locate(). Implement mono_get_method () to retreive
27392         all the info about a method signature and invocation. Remove check on
27393         uninitialized local var in parse_mh() and fix memory leak.
27394
27395 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
27396
27397         * metadata.h: More macros.
27398
27399         * tokentype.h: New file.
27400
27401 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
27402
27403         * assembly.c: added a consistency check and initialize
27404         some structures with g_new0().
27405         * metadata.c: fixed a couple more bugs in table size computation
27406         and add other checks for out-of bound access to metadata.
27407
27408 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
27409
27410         * metatada.c: fix bugs computing table sizes. Spew a
27411         warning when index in string heap is out of bounds.
27412
27413 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
27414
27415         * metadata.h: Add a couple of macros to manipulate tokens. 
27416
27417 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27418
27419         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
27420         cli_section_tables).
27421
27422 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
27423
27424         * metadata.c (mono_metadata_user_string): New function, provides
27425         access to the UserString heap. 
27426
27427 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
27428
27429         * metadata.c: Add inline documentation.
27430
27431 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
27432
27433         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
27434         files. 
27435
27436 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
27437
27438         * typeattr.h: New file, TypeAttribute flags. 
27439
27440 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
27441
27442         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
27443         mono_assembly_ensure_section): Section loading code.
27444         (load_section_tables): Load the sections.
27445
27446         * mono/metadata/metadata.c (mono_metadata_locate_token,
27447         mono_metadata_locate): Functions to locate the information
27448         definition given a token or a table and an index.
27449         (mono_metadata_compute_table_bases): New.
27450         (compute_size): New function to compute the sizes of the various
27451         tables.
27452
27453         * mono/metadata/metadata.h: Finish listing the different index
27454         types. 
27455
27456         * mono/metadata/pedump.c: Improve to dump new information.
27457
27458 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
27459
27460         * mono/metadata/metadata.c: Entered all the tables matching
27461         Beta2. 
27462
27463         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
27464
27465
27466