2008-06-17 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * reflection.c (mono_custom_attrs_from_property): Fix support for
4         retriveving cattrs of dynamic inflated generic types.
5
6         * reflection.c (mono_custom_attrs_from_event): Same.
7
8         * reflection.c (mono_custom_attrs_from_field): Same;
9
10         * reflection.c (typebuilder_setup_events): Same cattrs of events.
11
12         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
13         Moved to metadata.c.
14
15         * metadata.c: New functions to retrive the equivalent field, event
16         of property from the generic type definition.
17
18         * metadata-internals.h: Added new functions from metadata.c.
19
20 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
21
22         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
23         to cached in a mempool is used.
24
25         * metadata.c (free_generic_class): In some situations field generic_info type
26         is not properly dup'ed and leads to double free'ing.
27
28         Fixes #400643.
29
30 2008-06-17  Mark Probst  <mark.probst@gmail.com>
31
32         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
33         this arguments (will be needed later for generic methods).
34         Collect stats.
35
36 2008-06-17  Mark Probst  <mark.probst@gmail.com>
37
38         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
39         Create a static RGCTX invoke wrapper for methods which require it.
40
41 2008-06-17  Mark Probst  <mark.probst@gmail.com>
42
43         * object.c, class-internals.h: New function for checking whether
44         an individual field is special static.
45
46 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
47
48         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
49         linear search since the table is sorted.
50
51         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
52         Fixes #324180.
53
54 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
55
56         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
57         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
58
59         * gc.c (mono_domain_finalize): Allow an infinite timeout.
60
61         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
62         
63         * threads.c (mono_thread_request_interruption): Get rid of locking, use
64         InterlockedCompareExchange to query and modify 
65         thread->interruption_requested.
66
67         * object-internals.h (struct _MonoThread): Change interruption_requested
68         to a gint32 so it can be modified by atomic operations. Add 
69         'critical_region_level' from the managed side, change small_id to a guint32,
70         add new set of 'unused' fields.
71
72         * appdomain.c: Bump corlib version.
73
74 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
75
76         * class.c (mono_class_from_name): Search modules as well. Fixes
77         #322332.
78
79 2008-06-13  Mark Probst  <mark.probst@gmail.com>
80
81         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
82         templates.  Templates are generalized with an additional type_argc
83         argument.  RGCTX templates have type_argc==0, MRGCTX templates
84         have type_argc>0.
85
86         * domain-internals.h, domain.c: New hash table for looking up
87         MRGCTXs.
88
89         * metadata.c, metadata-internals.h: Rename hash and equal
90         functions for MonoGenericInst's and make them public.
91
92         * class-internals.h: New data structures for the MRGCTX.  Macros
93         for distinguishing slots in the RGCTX and the MRGCTX.
94
95 2008-06-13  Mark Probst  <mark.probst@gmail.com>
96
97         * object.c (mono_method_get_imt_slot): Put the same methods of
98         different instantiations of the same generic interface in the same
99         IMT slots, to make generic sharing simpler.
100
101 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
102
103         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
104
105         * metadata.c (mono_metadata_field_info_with_mempool): Added.
106         This function works just like mono_metadata_field_info, but
107         accept a mempool as argument to be used allocating memory.
108
109         * marshal.c (mono_marshal_load_type_info): Use new function
110         to load marshal data into image mempool.
111
112 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
113
114         * class.c (mono_class_inflate_generic_type_with_mempool):
115         This function allows to inflate a generic type using
116         a mempool.
117
118         * class.c (inflate_generic_type): Take a mempool as argument
119         and use it to do type dup'ing.
120
121         * class.c (mono_class_setup_fields): Field type for generic
122         generic classes are allocated from the image mempool.
123
124         * metadata.c (free_generic_class): Inflated field type is
125         now allocated in the image mempool.
126
127 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
128
129         * threads.c (thread_cleanup): Free MonoThread::name.
130
131 2008-06-12  Marek Habersack  <mhabersack@novell.com>
132
133         * appdomain.c (ensure_directory_exists): avoid unnecessary
134         mkdir(2) calls when the shadow directory already exists.
135         (mono_make_shadow_copy): copy also satellite assemblies from the
136         private bin directories.
137
138 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
139
140         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
141         
142         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
143         a page boundary. Fixes #396219.
144
145 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
146
147         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
148         due to double-checked locking.
149
150 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
151
152         * assembly.c (build_assembly_name): Release memory on failure.
153
154         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
155
156 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
157
158         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
159         memory on failure.
160
161 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
162
163         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
164         memory on failure.
165
166 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
167
168         * loader.c (field_from_memberref): Check if field signature type is equal
169         to the non-inflated type of the field. Fixes #398980.
170
171 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
172
173         * assembly.c (mono_assembly_load_from_full): Call 
174         mono_assembly_load_friends () outside the assemblies lock, since it can
175         acquire the loader lock. Fixes #323696.
176
177         * reflection.c (resolve_object): Inflate the inst with the context for
178         FieldOnTypeBuilderInst. Fixes #399010.
179
180 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * reflection.c (mono_image_get_field_on_inst_token): Don't
183         inflate the field to encode it's signature. If it's a
184         VAR or MVAR it should stay that way in the signature.
185         Fixes #399047.
186
187 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
188
189         * reflection.c (resolve_object): Release memory of inflated types.
190
191 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * loader.c (mono_method_get_signature_full): Remove assert about
194         loading a methodspec to a generic method. We have such methods, such as
195         System.Threading.Interlocked::CompareExchange<T>.
196         This assert was removed since it crashes the verifier when it checks
197         methods calling CompareExchange<T>.
198
199 2008-06-10  Marek Safar  <marek.safar@gmail.com>
200
201         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
202         of Type array and not MonoType.
203
204 2008-06-10  Marek Habersack  <mhabersack@novell.com>
205
206         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
207         <lupus@ximian.com>
208
209 2008-06-10  Martin Baulig  <martin@ximian.com>
210
211         * debug-mono-symfile.h
212         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
213         changes to the file format, but we were generating incorrect
214         source file indices in the line number table due to a bug, which
215         made backtraces report an incorrect source file.
216
217 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
218
219         * mono-debug.c: Moved mono_debug_free_method_jit_info from
220         mini/debug-mini.c to here.
221
222         * mono-debug.c (il_offset_from_address): Free memory from find_method.
223
224         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
225         use it to release structs returned by mono_debug_find_method.
226
227 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
228
229         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
230         since it needs to set method->slot for all interface methods.
231
232 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
233
234         * class-internals.h: Forgot to add.
235
236 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
237
238         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
239
240         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
241         Lookup the custom attributes from property_hash.
242
243         * reflection.c (mono_save_custom_attrs): Save the custom attributes
244         in property_hash. Allocate all data using the image mempool.
245
246         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
247         for dynamic_custom_attrs to checks if the image is dynamic.
248
249 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
250
251         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
252         assemblies array.
253         
254         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
255         runtime functions while holding the domain assemblies lock.
256
257 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
258
259         * verify.c: Reapplied the last bit of the reverted changes.
260
261 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * verify.c: Reapplied more of the reverted changes.
264
265 2008-06-09  Martin Baulig  <martin@ximian.com>
266
267         * debug-mono-symfile.c (load_symfile): Check the major version
268         first; if it's wrong, don't print the minor version in the error message.
269
270 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
271
272         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
273         lock instead of the domain lock to avoid deadlocks, since the thread might
274         already hold the loader lock.
275
276         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
277         (mono_thread_attach): Ditto.
278
279         * monitor.c: Use a TLS variable for holding the current thread id instead
280         of calling pthread_self ().
281         (mono_monitor_init_tls): New internal function to initialize the TLS
282         variable.
283         (mono_monitor_try_enter_internal): Put the owner == id check after the
284         owner == 0 check.
285
286         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
287         missed optimizations when using gcc-4.3.
288
289 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
290
291         * reflection.c (mono_dynamic_image_free): Free the memory
292         used by MonoGenericParam in MonoDynamicImage::gen_param.
293
294         * reflection.c (mono_reflection_setup_generic_class): Allocate
295         container from mempool.
296
297         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
298         container from mempool.
299
300 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
301
302         * threads.c (mono_set_pending_exception): New internal function to set the
303         pending exception of the current thread.
304         (mono_thread_get_and_clear_pending_exception): Check for 
305         thread->pending_exception as well.
306
307         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
308
309         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
310         it can trigger a collection.
311
312 2008-06-06  Martin Baulig  <martin@ximian.com>
313
314         Merged the `debugger-kahalo' branch.
315
316         * mono-debug.h
317         (MONO_DEBUGGER_VERSION): Bumped to 72.
318
319         * debug-mono-symfile.h
320         (MonoSymbolFileMethodIndexEntry): Removed.
321         (MonoSymbolFileMethodEntry): New public typedef.
322         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
323         (MonoSymbolFileSourceEntry): Remove everything except `index' and
324         `data_offset'.
325         (MonoSymbolFileMethodEntry): Removed.
326         (MonoSymbolFileLexicalBlockEntry): Removed.
327         (MonoSymbolFileLineNumberEntry): Removed.
328         (MonoDebugLexicalBlockEntry): Removed.
329         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
330         removed `num_il_offsets' and `il_offsets'.
331         (MonoSymbolFile): Replace `version' with `major_version' and
332         `minor_version'.
333         (MONO_SYMBOL_FILE_VERSION): Replace with
334         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
335         `MONO_SYMBOL_FILE_MINOR_VERSION'.
336
337         * debug-mono-symfile.c
338         (mono_debug_symfile_lookup_location): Add support for the new line
339         number table format.
340
341 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * metadata.c (free_generic_class): Release the inflated
344         MonoClass of dynamic generic classes if it's not a generic
345         type definition.
346
347 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
348
349         * verify.c: Reapplied more of the reverted changes.
350
351 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * reflection.c (lookup_custom_attr): Clean the cached flag or
354         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
355         for SRE types.
356
357 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
358
359         * verify.c: Reapplied a small part of the reverted changes.
360
361 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
362
363         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
364
365         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
366         previously in managed code.
367         (mono_monitor_exit): Ditto.
368         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
369
370         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
371         the managed definition.
372
373 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
376
377 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
378
379         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
380         
381         * monitor.c: Add some micro optimizations.
382
383         * icall.c (type_from_typename): Handle 'bool'.
384
385 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
386
387         * verify.c: Implement constructor verification per P III 1.8.1.4.
388         Fixes #396716.
389
390 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
391
392         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
393         holding the assemblies lock here too.
394
395 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * verify.c: Kill stack_top function.
398
399 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
400
401         * verify.c: Kill stack_get function.
402
403 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
404
405         * verify.c (mono_method_verify): Last change broke the build. Fixed.
406
407 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
410         more reliable.
411
412         * verify.c (mono_method_verify): Inflate params and locals to avoid
413         mismatch when checking for compatibility.
414
415 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
416
417         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
418         Length prefix should be size in bytes. Fix bug #339530.
419         
420         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
421         Length prefix should be size in bytes. Fix bug #339530.
422
423         Code is contributed under MIT/X11 license.
424
425 2008-06-05  Bill Holmes <billholmes54@gmail.com>
426
427         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
428
429         Contributed under MIT/X11 license.
430
431 2008-06-05  Martin Baulig  <martin@ximian.com>
432
433         * mono-debug-debugger.c
434         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
435
436 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
437
438         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
439         while holding the assemblies lock to prevent deadlocks. Handle the case
440         where the search hook returns NULL but the assembly was still loaded.
441         Fixes #323696.
442
443         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
444         modify domain state.
445
446 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
447
448         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
449         * Makefile.am (pedump_LDADD): Post-process object files and
450         add dtrace-generated object file, if necessary.
451
452         Code is contributed under MIT/X11 license.
453
454 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
455
456         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
457
458 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
461
462 2008-06-04  Mark Probst  <mark.probst@gmail.com>
463
464         * threads.c: Try to free everything from the delayed free table
465         when shutting down threads, and set the variable to NULL after the
466         table is freed so that calling
467         mono_thread_hazardous_try_free_all() when shutting down the root
468         domain doesn't crash.
469
470 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
473         the caller if resulting type was inflated.
474
475         * class.c (mono_class_create_from_typespec): Free the MonoType if it
476         was inflated.
477
478         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
479
480
481 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
482
483         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
484         class library tests.
485
486         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
487         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
488         #396989.
489
490 2008-06-04  Mark Probst  <mark.probst@gmail.com>
491
492         * domain.c, domain-internals.h: The JIT infos are now freed by the
493         JIT info table code.  They are freed immediately if there only a
494         single JIT info table in circulation.  If there is more, the free
495         is delayed via a queue.
496
497         * threads.c, threads-types.h: New hazard pointer function for
498         freeing all freeable delayed items in one sitting.
499
500 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
503
504         * reflection.c (typebuilder_setup_properties): Same.
505
506         * reflection.c (typebuilder_setup_events): Same.
507
508 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
509
510         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
511         and use it for allocating memory.
512
513         * reflection.c (mono_marshal_spec_from_builder): Same.
514
515         * reflection.c: Change code to use new signatures.
516
517         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
518
519 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
520
521         * decimal.c (rescale128): Put back one line which was accidently commented
522         out.
523         
524         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
525         to cause crashes.
526
527 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
528
529         * reflection.c (mono_reflection_generic_class_initialize): Name must
530         be always malloc'ed so we can free it later on. Do this for field, property
531         and event.
532
533         * metadata.c (free_generic_class): Free field, property and event names.
534
535 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
536
537         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
538         instead of g_memdup.
539
540         * reflection.c (typebuilder_setup_fields): Same.
541
542 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
543
544         * decimal.c (rescale128): Optimize this function a bit more.
545
546 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * metadata.c (free_generic_class): Release some memory from
549         SRE generic classes.
550
551 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * reflection.c (mono_image_get_generic_field_token): No reference
554         to name is kept, free it.
555
556         * reflection.c (mono_reflection_generic_class_initialize): Free
557         more memory of the inflated field.
558
559 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
560
561         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
562         code.
563
564 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
565
566         * reflection.c (mono_dynamic_image_free): Release memory used by
567         MonoDynamicImage::array_methods elements.
568
569         * reflection.c (assembly_add_win32_resources): Release memory after
570         encoding.
571
572 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
573
574         * decimal.c (log2_32): Use an optimized version for this function too.
575         
576         * decimal.c (log2_64): Fix this on 32 bit machines.
577
578 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * class.c (mono_dup_array_type): Implement allocation using a mempool.
581
582         * class.c (mono_metadata_signature_deep_dup): Same.
583
584         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
585         a mempool.
586
587         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
588
589         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
590
591         * metadata-internals.h: Added mono_metadata_signature_dup_full.
592
593         * class-internals.h: Update signatures to take a MonoMemPool.
594
595 2008-06-02  Dick Porter  <dick@ximian.com>
596
597         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
598         * icall-def.h: Add
599         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
600         FormatMessage API to get the error text.  Fixes bug 321827.
601
602 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
603
604         * decimal.c: Add some micro optimizations to make decimal operations faster.
605
606 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
607
608         * reflection.c (method_encode_clauses): Take a mempool
609         as parameter and use it to allocate the clause array.
610
611         * reflection.c (mono_image_get_field_on_inst_token): Free
612         the inflated type after encoding it.
613
614         * reflection.c (mono_dynamic_image_free): Free each element
615         of MonoDynamicImage::gen_params.
616
617         * reflection.c (reflection_methodbuilder_to_mono_method):
618         Allocate the generic param array from the mempool.
619         Allocate signature params from the mempool.
620
621         * reflection.c (mono_reflection_generic_class_initialize):
622         Free inflated fields after been used.
623
624 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
625
626         * icall.c: Reapply the memory leak fixes as they no
627         longer make mono crash.
628
629 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
630
631         * reflection.c (mono_type_get_object): Don't store the suplied
632         MonoType with type_hash. A caller which pass a type that
633         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
634         might end with a pointer to freed memory.
635         The solution is to use byval_arg or this_arg from the associated
636         MonoClass of the supplied type.
637
638 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
639
640         * icall.c: Revert the rest of the last change as it breaks the build too.
641
642 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * icall.c: Revert a leak fix as it's breaking the build.
645
646 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
649
650 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
651
652         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
653
654 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
655
656         * icall.c: Fix some memory leaks.
657
658 2008-05-29  Dick Porter  <dick@ximian.com>
659
660         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
661         async socket operations from the pending list when a socket
662         closes.  Leaving it until the threadpool services the event
663         exposes a race condition when a socket descriptor is reused.
664         Fixes bug 377589.
665
666 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
667
668         * object.c: Fix negative index check for array alocation.
669
670 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * icall.c, marshal.c: Delegate wrappers should skip visibility.
673         This check is performed by the verifier for IL created delegates
674         and by Delegate::CreateDelegate for programatically created ones.
675         Fixes #372406.
676
677 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
678
679         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
680         Fix code to use mono_array_size_t instead of int.
681
682         Based on patch by Luis F. Ortiz.
683         Contributed under X11 license.
684         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
685
686 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
687
688         * icall.c: Added ves_icall_System_Array_GetLongLength and
689         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
690         arrays.
691
692         * icall.h: Export both new functions.
693
694         Based on patch by Luis F. Ortiz.
695         Contributed under X11 license.
696         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
697
698 2008-05-28  Martin Baulig  <martin@ximian.com>
699
700         The debugger now requires exactly r103463.
701
702         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
703         This version is not supported by the debugger, wait for 72.
704
705 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
706
707         * object.h: Changed array related functions to use
708         mono_array_size_t instead of guint32. Forgot to commit this file.
709
710         Patch by Luis F. Ortiz.
711         Contributed under X11 license.
712         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
713
714
715 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
716
717         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
718         don't define it. Use the number literal instead.
719
720 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
721
722         * icall.c: Changed array related functions to use
723         mono_array_size_t instead of guint32.
724
725         * icall.c (ves_icall_System_Array_GetLength): Check for length
726         overflow under MONO_BIG_ARRAYS.
727
728         Based on patch by Luis F. Ortiz.
729         Contributed under X11 license.
730         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
731
732 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
733
734         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
735
736         Based on patch by Luis F. Ortiz.
737         Contributed under X11 license.
738         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
739
740 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
741
742         * object.c, object.h: Changed array related functions to use
743         mono_array_size_t instead of guint32.
744
745         Patch by Luis F. Ortiz.
746         Contributed under X11 license.
747         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
748
749 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
750
751         * object.h: Introduced mono_array_size_t typedef. This must be used
752         in all places an array length is expected. This is 64bits wide if
753         MONO_BIG_ARRAYS is enabled.
754
755         Patch by Luis F. Ortiz.
756         Contributed under X11 license.
757         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
758
759 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
760
761         * security-manager.c class.c: Set the class exception info by calling
762         mono_class_set_failure ().
763
764         * class.c (mono_class_get_exception_data): New accessor function.
765         (mono_class_set_failure): Store exception_data in the property hash.
766
767         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
768         the struct as a property.
769
770         * loader.c (mono_get_method_full): Store the lookup result for method
771         tokens in method_cache, the others in methodref_cache to decrease the memory
772         usage of hash tables.
773
774         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
775         (mono_image_init): method_cache is lazy inited now.
776
777         * metadata-internals.h (struct _MonoImage): Change method_cache to
778         a MonoValueHashTable, add a separate methodref_cache.
779
780 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
781
782         * number-formatter.h: Fix tables to avoid arithemtic overflow in
783           Double.ToString as exposed by Bug #383531.
784
785 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
786
787         * number-formatter.h: Make some tables static.
788
789         * class.c (mono_method_set_generic_container): New accessor function.
790         (mono_method_get_generic_container): Ditto.
791
792         * class-internals.h (struct _MonoMethod): Remove rarely used 
793         'generic_container' field, store it in the property hash instead. Add 
794         'is_generic' boolean field instead.
795
796         * image.c (mono_image_init): Initialize property_hash.
797         (mono_image_close): Destroy property_hash.
798
799         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
800         hold rarely used fields of runtime structures belonging to this image.
801
802         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
803         to get/set method->generic_container.
804
805         * loader.c (mono_get_method_from_token): Avoid loading the method header for
806         generic methods.
807
808 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
809
810         * class.c (mono_class_inflate_generic_method_full): Don't increase
811         mono_stats.inflated_method_count for methods found in the cache.
812
813         * threads.c (mono_thread_request_interruption): Add a comment about 
814         QueueUserAPC ().
815
816 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
817
818         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
819         interface_offsets_packed table.
820         
821         * class.c (mono_class_init): Remove some dead code.
822
823         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
824         mono_class_setup_vtable () when CAS is active to detect security problems.
825
826 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
827
828         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
829
830         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
831         parameters as it's irrelevant for delegate checking.
832
833 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
834
835         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
836
837         * class.c (mono_class_init): Control the creation of a generic vtable using
838         a global which is true by default, but set to false by the runtime startup code.
839         
840         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
841         Disabled for now since it breaks the embedding API.
842         Move the setup of class->methods for arrays to mono_class_setup_methods ().
843         (mono_class_setup_methods): Add a memory barrier.
844
845         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
846         when mono_class_init () doesn't compute the generic vtable.
847         
848 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
849         * profiler.c: Added mono_profiler_install_statistical_call_chain,
850         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
851         to support call chains (backtrace) in the stat profiler.
852         * profiler.c, profiler-private.h: Likewise.
853
854 2008-05-22  Mark Probst  <mark.probst@gmail.com>
855
856         * generic-sharing.c: Init generic class when a method of it is
857         requested via a runtime generic context.
858
859 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
860
861         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
862
863         * reflection.c (mono_type_get_object): Add a FIXME.
864
865         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
866
867         * class.c (mono_class_get_method_by_index): New helper function, returning an
868         entry in the class->methods array.
869
870 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
871
872         * class.c (mono_class_init): Only do the array optimization for szarrays. 
873         Avoid creating a generic vtable for generic instances as well.
874         (mono_class_get_method_from_name_flags): Don't search in the metadata for
875         generic instances.
876
877 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
878
879         * loader.c (mono_get_method_constrained): Inflate the signature
880         with class context. Fix #325283.
881
882 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
883
884         * object.c (mono_class_create_runtime_vtable): Add a comment.
885
886         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
887         where needed.
888         (setup_interface_offsets): Handle the case when this is called twice for arrays.
889         (mono_class_setup_vtable_general): Add an assert.
890         (mono_class_init): Avoid creating a generic vtable for arrays.
891
892         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
893         here, let mono_class_init () do that.
894
895         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
896         interfaces in mscorlib.
897
898         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
899         interfaces. Add some comments.
900         (mono_class_init): Call mono_class_setup_methods () here since it is no
901         longer called by mono_class_setup_vtable ().
902
903         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
904         not set in class->vtable.
905         (mono_class_create_runtime_vtable): Reenable the disabled code.
906
907         * object.c (mono_class_create_runtime_vtable): Disable the last change for
908         now as it causes some test failures.
909
910         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
911         if using the vtable trampoline. Also remove some strange code which put the
912         generic methods themselves into the vtable slots. Remove the AOT init_vtable
913         stuff as it is no longer needed.
914
915 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
916
917         * pedump.c: Give make --verify all option check code as well.
918         Using --verify code won't check for metadata now.
919
920 2008-05-19  Martin Baulig  <martin@ximian.com>
921
922         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
923
924         * mono-debug.c
925         (_mono_debug_using_mono_debugger): New global variable; it's set
926         directly by the debugger, so mono_debug_using_mono_debugger() also
927         works after attaching.
928
929 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * object.c (mono_class_create_runtime_vtable): Use memory barriers
932         as we do double checked locking on MonoClass::runtime_info and
933         MonoClassRuntimeInfo::domain_vtables.
934
935 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
936
937         * debug-helpers.c (print_field_value): Fix a warning.
938
939 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
940
941         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
942         set in the AOT case.
943
944 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
945
946         * class.c (mono_class_setup_vtable_general): Use memory barriers
947         as we do double checked locking on MonoClass::vtable.
948
949 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
950
951         * reflection.c (resolve_object): Inflate only if the generic context
952         is not null. Fixes #389886.
953
954 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
955
956         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
957         instead of g_free.
958
959         Code is contributed under MIT/X11 license.
960
961 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * class.c: Revert unrelated change.
964
965 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
966
967         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
968         a generic instantiation, use mono_class_from_mono_type instead of playing
969         with MonoType directly.
970
971 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
972
973         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
974         checks must ignore generic instantiations, so mono_class_has_parent is not
975         suitable. Fixes #390128.
976
977 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
978
979         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
980         it to avoid registering tokens during metadata generation. Fixes #390023.
981
982 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
983
984         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
985         consistent.
986
987         Contributed under MIT/X11 license.
988
989 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
990
991         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
992         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
993         to fixup the EXE image.
994         (mono_cleanup): Use mono_close_exe_image.
995         (mono_close_exe_image): New function.
996         * image.c: Include "marshal.h".
997         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
998         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
999         counting when the image is loaded outside of mono_image_open_full. Set status
1000         based on GetLastError.
1001         * coree.c: Include required headers. Add init_from_coree.
1002         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
1003         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
1004         (_CorExeMain): Set init_from_coree.
1005         (CorExitProcess): Only call ExitProcess for now.
1006         (CorBindToRuntimeEx): New stub implementation.
1007         (CorBindToRuntime): New function.
1008         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
1009         (MonoFixupExe): ILONLY executables require no fixups.
1010         (mono_set_act_ctx): New function to set activation context.
1011         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
1012         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
1013         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
1014         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
1015         as MONO_INTERNAL.
1016         * domain-internals.h: Add mono_close_exe_image.
1017
1018         Contributed under MIT/X11 license.
1019
1020 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1021
1022         * metadata.c (mono_metadata_compute_size): Correctly calculate field
1023         size for generic param and event tables. Fixes #388977.
1024
1025 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * loader.c (mono_method_signature): Use memory barriers because of the double
1028         checked locking pattern.
1029
1030         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
1031         aborting or aborted as well. Fixes #376391.
1032         
1033         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
1034         existing runtime state in the Suspend handler during shutdown.
1035
1036 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
1037
1038         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
1039
1040         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
1041         which are starting up or shutting down.
1042
1043         * threads.c (mono_threads_set_shutting_down): Don't return a value since
1044         this function never returns if the runtime is already shutting down.
1045
1046         * icall.c (ves_icall_System_Environment_Exit): Update after 
1047         mono_threads_set_shutting_down () signature change.
1048         
1049 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
1050
1051         * class.c: Added can_access_instantiation to verify if the instantiation
1052         is visible. Fix access check for nested types as they returned TRUE
1053         before doing type and generic instantiation visibility checks.
1054
1055 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1056
1057         * reflection.c (mono_reflection_create_generic_class): The created type
1058         must have a different container from its TypeBuilder. Otherwise they
1059         will end sharing generic arguments, which is wrong.
1060
1061         Due to the sharing, making a generic instance of the created type using
1062         the TypeBuider generic arguments resulted in the generic type definition
1063         been returned, which is wrong as well.
1064
1065         As a bonus the code was leaking the type_params array. This memory should
1066         be allocated from the image mempool.
1067
1068         This fixes bug #354047.
1069
1070 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
1073         to here         as they are now used in assembly.c new code.
1074         Added a skipverification flag to MonoAssembly.
1075         New internal function mono_assembly_has_skip_verification.
1076
1077         * assembly.c: New function mono_assembly_has_skip_verification. It checks
1078         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
1079         part of #387274.
1080
1081 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
1084         needed. Fixes #387034.
1085
1086         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
1087
1088 2008-05-06  Miguel de Icaza  <miguel@novell.com>
1089
1090         * assembly.c (mono_assembly_load_reference): Prevent crash while
1091         disassembling Silverlight 2.0 executables while we still do not
1092         have GACed libraries.
1093
1094 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * reflection.c: Special case generic type definitions as well. Fixes #383444.
1097
1098 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
1101         of the dynamic case. Fixes #387404.
1102
1103 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         *verify.c (mono_verifier_is_class_full_trust): If under
1106         verify_all and the verifier mode was not set, only
1107         gac and corlib types are fulltrust. This makes --verify-all
1108         usable to detect unverifiable code, which is the expected
1109         use case.
1110
1111 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1112
1113         * verify.h: Ops, commited the header with debug
1114         enabled.
1115
1116 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * verify.c (merge_stack): Use the new value on unverifiable
1119         stack merges.
1120
1121         * verify.c (verify_type_compatibility_full): Comparison
1122         of nullable types can't use mono_class_is_assignable_from.
1123
1124         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
1125         that makes all verification errors be reported.
1126
1127         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
1128         mono_method_verify.
1129
1130 2008-05-05  Robert Jordan  <robertj@gmx.net>
1131
1132         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
1133         support for value types. See #386415.
1134
1135         * object.c: comments.
1136
1137         Code is contributed under MIT/X11 license.
1138
1139 2008-05-05  Martin Baulig  <martin@ximian.com>
1140
1141         * debug-mono-symfile.h
1142         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
1143         for old pre-terrania symbol files.
1144
1145 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1146
1147         * mono-config.c: Add ppc64 architecture.
1148
1149         Code is contributed under MIT/X11 license.
1150
1151 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1152
1153         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
1154           PPC64 uses function descriptors as well.
1155
1156         Code is contributed under MIT/X11 license.
1157
1158 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * object.c (compute_class_bitmap): Ignore literal static fields.
1161
1162         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
1163         var has an invalid format.
1164         (describe_ptr): Add some sanity checks for the vtable.
1165         (add_nursery_frag): Clear unused nursery fragments.
1166         (major_collection): Clear all remaining nursery fragments.
1167
1168 2008-05-03  Robert Jordan  <robertj@gmx.net>
1169
1170         * image.c, metadata-internals.h: add thunk_invoke_cache.
1171
1172         * marshal.c, marshal.h: implement
1173         mono_marshal_get_thunk_invoke_wrapper ().
1174
1175         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
1176
1177         Code is contributed under MIT/X11 license.
1178
1179 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1180
1181         * verify.c (do_leave): Empty the stack.
1182
1183 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * class.c (mono_class_is_assignable_from): Variance
1186         doesn't work between reference and value types. For example,
1187         given type C<T+>, C<int32> is not assignable to C<object>.
1188         Break the argument checking loop on first error. 
1189
1190 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
1191
1192         * icall.c : base64_to_byte_array() needs some more strict
1193           check for sequence of '=' characters. Patch by Santa
1194           Marta (http://deee.g.hatena.ne.jp/santamarta).
1195
1196           Contributed under MIT/X11 license.
1197           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
1198
1199 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
1200
1201         * domain.c: Disable LoadLibrary support to fix Win32 build.
1202
1203         Code is contributed under MIT/X11 license.
1204
1205 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
1206
1207         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
1208         to help with cache behaviour.
1209
1210 2008-05-01  Miguel de Icaza  <miguel@novell.com>
1211
1212         * appdomain.c (mono_domain_from_appdomain): Add new accessor
1213         method. 
1214
1215 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
1218
1219 2008-05-01  Dick Porter  <dick@ximian.com>
1220
1221         * process.c (process_get_fileversion): Only pass 16 bits of
1222         language ID to VerLanguageName.  Fixes bug 381204.
1223
1224 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * verify.c (mono_method_verify): Fix the comparison
1227         operator for code bounds check.
1228
1229 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * verify.c (mono_method_verify): Check the bounds of
1232         all access of the code array.
1233
1234 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
1235
1236         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
1237
1238 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
1239
1240         * image.c (mono_image_strong_name_position): Fix return value when the rva is
1241         not valid.
1242
1243 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
1244
1245         * loader.c (mono_get_method_from_token, mono_method_signature): Add
1246         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
1247         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
1248         fixup main EXE images when using mono.exe for mixed-mode assembly support.
1249         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
1250         mono_runtime_load.
1251         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
1252         runtime initialization from metadata.
1253         * assembly.c: Remove obsolete ceGetModuleFileNameA.
1254         (mono_set_rootdir): Use mono_get_module_file_name.
1255         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
1256         handles.
1257         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
1258         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
1259         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
1260         MonoCLIImageInfo. Add support for module handles.
1261         (load_cli_header): Update mono_cli_rva_image_map signature.
1262         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
1263         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
1264         (mono_image_rva_map): Add support for module handles.
1265         (mono_image_ensure_section_idx): Add support for module handles.
1266         (mono_image_close): Add support for module handles.
1267         (do_load_header): Add support for module handles.
1268         (mono_image_open_from_module_handle): New function for internal use.
1269         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
1270         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
1271         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
1272         handles.
1273         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
1274         * image.h: Add mono_image_fixup_vtable.
1275         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
1276         support.
1277         * coree.h: New file.
1278         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
1279         unsupported native code.
1280         (mono_marshal_set_callconv_from_modopt): New function splitted from
1281         mono_marshal_get_managed_wrapper.
1282         (mono_marshal_get_managed_wrapper): Use
1283         mono_marshal_set_callconv_from_modopt.
1284         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
1285         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
1286         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
1287         that results in a deadlock when the runtime is loaded in _CorDllMain.
1288         * Makefile.am: Add coree.c and coree.h.
1289
1290         Contributed under MIT/X11 license.
1291
1292 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1293
1294         * generic-sharing.c: Search for type arguments in array element
1295         types as well.
1296
1297 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1298
1299         * class-internals.h, generic-sharing.c: New, small runtime generic context.
1300
1301         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
1302
1303         * object.c: Don't setup the RGCTX when the vtable is created,
1304         because we're setting it up lazily now.
1305
1306 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
1309         64 bit support.
1310
1311 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1312
1313         * verify.c (verify_class_for_overlapping_reference_fields): 
1314         If class is under fulltrust allow reference types to overllap
1315         if they have the same RVA.
1316
1317 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1318
1319         * pedump.c: Added new flag valid-only, that makes the verifier
1320         behaves just like --security=validil. It won't fail type load
1321         due to unverifiable restrictions.
1322
1323 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1324
1325         * class-internals.h (struct MonoMethod): Added a verification_success
1326         field to cache verifier executions. Reduced MonoMethod:slot size by
1327         one bit.
1328
1329 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
1332         instead of a 'vt' argument to save an indirection and to allow these to be used
1333         for valuetypes.
1334         (scan_vtype): New helper function to scan an area using a gc descriptor.
1335         (mono_gc_wbarrier_value_copy): Implement this.
1336         (handle_remset): Add support for REMSET_VTYPE.
1337         (find_in_remset_loc): Ditto.
1338         (mono_gc_base_init): Allow some debugging options to be controlled through the
1339         use of the MONO_GC_DEBUG env variable.
1340         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
1341         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
1342
1343 2008-04-23  Martin Baulig  <martin@ximian.com>
1344
1345         * domain.c (mono_domain_create): Move the call to
1346         mono_debug_domain_create() down, after allocating the domain id.
1347
1348 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         verify.c (verify_class_for_overlapping_reference_fields): Skip
1351         static fields while verifying for overlapping fields as they
1352         don't matter at all.
1353
1354 2008-04-23  Marek Habersack  <mhabersack@novell.com>
1355
1356         * domain-internals.h: added a declaration of
1357         mono_make_shadow_copy.
1358
1359         * assembly.c (mono_assembly_open_full): shadow copying of
1360         assemblies moved to here, so that all the assemblies within the
1361         application domain's private binary directories can be
1362         processed. Fixes bug #380546
1363
1364         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
1365         mono_make_shadow_copy and made non-static. The decision whether
1366         to shadow-copy an assembly is made based on its location - it's
1367         copied if it's in one of the private application domain binary
1368         directories and its different to the target file in the shadow
1369         directory. Fixes bug #380546
1370
1371 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
1374
1375         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
1376         types.
1377
1378         * reflection.c (mono_image_create_token): Handle 
1379         Method/ConstructorOnTypeBuilderInst.
1380         (resolve_object): Ditto.
1381         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
1382         so it can be called from resolve_object. Also handle the case when the inflated
1383         class already has its methods setup.
1384
1385 2008-04-21  Martin Baulig  <martin@ximian.com>
1386
1387         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
1388
1389 2008-04-20  Geoff Norton  <gnorton@novell.com>
1390
1391         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
1392         pointer dereference.
1393
1394 2008-04-15  Marek Habersack  <mhabersack@novell.com>
1395
1396         * appdomain.c (try_load_from): if IOMAP is in effect, call the
1397         portability API to look up the assembly file. Fixes behavior in
1398         situations when the application has a bin/ directory, but the
1399         assembly search patch refers to Bin/ (and thus the requested file
1400         name is Bin/SomeLibrary.dll). Fixes bug #379888
1401
1402 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1403
1404         verify.c (mono_type_is_generic_argument): Extracted this check
1405         from a dozen places to here.
1406
1407         verify.c: Fixed all issues related to boxing generic arguments
1408         and their constraints.
1409
1410 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1411
1412         verify.c (mono_class_interface_implements_interface): Fix win32 build.
1413
1414 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
1417         isn't finished yet. Fixes #363447.
1418
1419 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
1422         Fixes #346419.
1423
1424 2008-04-13  Jb Evain  <jbevain@novell.com>
1425
1426         * domain.c: update the 2.1 profile versions.
1427         Merged from the Moonlight 2 branch.
1428
1429 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
1432         mscorlibs for the non-refonly case as well.
1433
1434         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
1435         in mono_assembly_load_from_full (). Fixes #378924.
1436
1437 2008-04-11  Geoff Norton  <gnorton@novell.com>
1438
1439         * icall.c: The global extern environ doesn't exist on Mac.  We
1440         need to call NSGetEnviron instead.
1441
1442 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1443
1444         verify.c: Add generic method constraint verification.
1445
1446 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1447
1448         class.c (mono_class_inflate_generic_method_full): Add a long
1449         explanation to the is_mb_open hack. Remove the FIXME.
1450
1451 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1452
1453         * verify.c (mono_method_verify): Mark all unknown opcodes
1454         as invalid. Mark jmp as unverifiable.
1455
1456 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1457
1458         * verify.c: Add code to do type constraint verification on class instances.
1459
1460         * verify.c (mono_verifier_verify_class): Use the type constraint 
1461         verification code.
1462
1463 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * class.c (mono_class_get_field_default_value): Don't pass cindex
1466         as hint to mono_metadata_get_constant_index. The local is not initialized
1467         and should contain garbage most of the time. This could only work
1468         with a lot of luck.
1469
1470 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
1473
1474 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
1477
1478         * class.c (mono_class_from_generic_parameter): Save the token of the
1479         generic param in MonoClass::sizes.generic_param_token.
1480
1481         * reflection.c (mono_custom_attrs_from_class): If the class type is
1482         VAR or MVAR retrieve the attributes of the generic param.
1483
1484 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1485
1486         * class.c (mono_class_init): Do class verification if the verifier
1487         is enabled.
1488
1489 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1490
1491         * verify-internal.h: Added mono_verifier_verify_class.
1492
1493         * verify.c: Added mono_verifier_verify_class. It checks for
1494         classes with explicit layout that have overlapping reference fields.
1495
1496         * pedump.c: Init the verifier state prior to verification. Fixed
1497         command line arguments.
1498
1499 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * Makefile.am: Added verify-internals.h, hopefully fix the build.
1502
1503 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * verify-internals.h: Fix a warning.
1506
1507 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1508
1509         * verify-internals.h: New header with the verifier configuration
1510         extracted from mini.c.
1511
1512         * verify.c: Implemented the new functions exported by verify-internals.h.
1513
1514 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1515
1516         * verify.c: Add proper verification of ckfinite.
1517
1518 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1519
1520         * verify.c (do_conversion): Improved error message to something
1521         more meanfull.
1522
1523         * verify.c (check_is_valid_type_for_field_ops): Fix to work
1524         with primitive types.
1525
1526 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1527
1528         * verify.c: Added tail prefix checking. Marked icall
1529         as unverifible.
1530
1531 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1532
1533         * verify.c: Fix the detection of branches to the middle
1534         of an instruction.
1535
1536 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1537
1538         * verify.c: Implemented verification of volatile. and
1539         unaligned. prefix. Check if a type is valid after retrieving it.
1540
1541 2008-04-01  Dick Porter  <dick@ximian.com>
1542
1543         * process.c (process_get_fileversion): If there's no string block,
1544         set the file language to en_US.  Fixes the other new part of bug
1545         374600.
1546
1547 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * class.c: New functions mono_method_can_access_field_full and
1550         mono_method_can_access_method_full. They perform type visibility
1551         and type site check.
1552
1553         * class-internal.h: Added exported functions.
1554
1555         * verify.c: Use new functions to implement proper visibility checks.
1556
1557 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
1558
1559         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
1560
1561 2008-03-28  Dick Porter  <dick@ximian.com>
1562
1563         * process.c (process_get_fileversion): Use the first language ID
1564         we see, rather than insisting on an invariant language.  Fixes bug
1565         374600.
1566
1567 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
1570         the streams to fix reading of invalid memory later.
1571
1572         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
1573         to ease debugging.
1574
1575 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
1578         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
1579
1580 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
1581         * threads.h: Added MonoThreadManageCallback type and
1582         mono_thread_set_manage_callback prototype
1583         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
1584         (used to store the mono_thread_manage callback).
1585         * threads.c: Added mono_thread_set_manage_callback, and handle
1586         "MonoThread->manage_callback" in build_wait_tids.
1587
1588 2008-03-26  Dick Porter  <dick@ximian.com>
1589
1590         * process.c (process_get_fileversion): Set FileVersionInfo strings
1591         to Empty when the resource doesn't have the particular info.
1592         Fixes bug 355717.
1593
1594 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
1595
1596         * verify.c (mono_method_verify): Proper prefix validation.
1597
1598 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
1601         itself in a separate argument instead of throwing them. Fixes #373448.
1602
1603         * appdomain.c: Bump corlib version.
1604
1605 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1606
1607         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
1608
1609 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
1610
1611         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
1612         version macros.
1613
1614 2008-03-20  Mark Probst  <mark.probst@gmail.com>
1615
1616         * generic-sharing.c, class-internals.h: Code for putting
1617         reflection types into the runtime generic context.
1618
1619 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1620
1621         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
1622         Fixes #340662. 
1623
1624
1625 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * verify.c (VerifyContext): Added instruction prefix data to the struct.
1628
1629         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
1630
1631         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
1632
1633         * verify.c (do_cast): Let the result value keep the boxed status.
1634
1635         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
1636
1637 2008-03-17  Jb Evain  <jbevain@novell.com>
1638
1639         * reflection.c: when running on a 2.0 runtime, emit
1640         unconditionally the #~ header version as 2.0, and the
1641         CLI header version as 2.5, for symmetry's sake with csc.
1642
1643 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * class.c: Remove the unused cache_interface_offsets stuff.
1646
1647         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
1648         profiler.c: Fix warnings.
1649
1650 2008-03-16  Mark Probst  <mark.probst@gmail.com>
1651
1652         * generic-sharing.c, class-internals.h: Support for putting
1653         methods into the runtime generic context.
1654
1655 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * class.c (mono_class_setup_fields): Ignore calls made to this function for
1658         classes which are generic instances of not-yet finished typebuilders. Fixes
1659         #351172.
1660
1661         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
1662
1663 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
1666
1667         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
1668         field, replace it with a hash table in MonoDynamicImage.
1669
1670         * reflection.c (inflate_mono_method): Access the generic definition object from
1671         image->generic_def_objects instead of imethod->reflection_info.
1672
1673         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
1674
1675         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
1676         
1677         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
1678         function in reflection.c so it is easier to keep in sync with the dynamic image
1679         creation code.
1680
1681         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
1682         mono_image_close ().
1683
1684 2008-03-15  Mark Probst  <mark.probst@gmail.com>
1685
1686         * class.c (mono_class_generic_sharing_enabled): Disable generic
1687         sharing for all architectures except AMD64 and x86 to fix build.
1688
1689 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1690
1691         * verify.c: Use the generic definition MonoGenericContext when available.
1692         Remove code for checking generics instance compatibility in favor of
1693         mono_class_is_assignable_from.
1694
1695 2008-03-14  Mark Probst  <mark.probst@gmail.com>
1696
1697         * marshal.c, marshal.h, metadata-internals.h, image.c,
1698         wrapper-types.h: New wrapper for invoking a shared static method
1699         without having to pass the runtime generic context argument.
1700
1701 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1702
1703         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
1704
1705 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
1708         
1709         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
1710         create a token from a FieldOnTypeBuilderInst.
1711         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
1712         (resolve_object): Ditto.
1713
1714         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
1715         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
1716
1717 2008-03-14  Martin Baulig  <martin@ximian.com>
1718
1719         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
1720
1721         * debug-mono-symfile.h
1722         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
1723         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
1724
1725 2008-03-10  Martin Baulig  <martin@ximian.com>
1726
1727         * debug-mono-symfile.h
1728         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
1729         `lexical_block_table_offset'.
1730         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
1731         `lexical_blocks'.
1732         (MonoSymbolFile): Added `version'.
1733
1734         * mono-debug.h
1735         (MonoDebugLexicalBlockEntry): Removed.
1736         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
1737         `lexical_blocks'.
1738
1739         * mono-debug.c (mono_debug_add_method): Don't compute lexical
1740         blocks here; the debugger now does this internally.
1741
1742 2008-02-27  Martin Baulig  <martin@ximian.com>
1743
1744         * object.c (mono_runtime_exec_main): Call
1745         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
1746         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
1747
1748 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1749
1750         * verify.c (verify_type_compatibility_full): Allow native int to be converted
1751         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
1752
1753 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1754
1755         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
1756         ldftn with a virtual method.
1757
1758 2008-03-13  Geoff Norton  <gnorton@novell.com>
1759
1760         * decimal.c:  Only include memory.h if the platform has it.
1761
1762 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
1763
1764         * assembly.c, class.c, metadata-internals.h: make sure public key
1765         tokesns are compared in a case-insensitive way. Also, all
1766         the lookups in the GAC use a lowercase public key token
1767         (gaacutil already does the lowercasing on install). Fixes
1768         bug #369541.
1769
1770 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
1773         and return value.
1774
1775 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
1776
1777         * image.c: when someone loads a mscorlib from a file, return the
1778         currently loaded mscorlib (fixes bug #369253).
1779
1780 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1781
1782         * class.c: handle types with no parents by forcing them to have
1783         System.Object as a parent and marking them as broken (this currently
1784         allows the first part of bug #369173 to work as well, likely because
1785         we don't check for typeload exceptions everywhere yet).
1786
1787 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
1788
1789         * class.c: more complete check that types belong to corlib
1790         (fixes second part of bug #369173).
1791
1792 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
1793
1794         * generic-sharing.c:  Including glib.h for the MSVC builds to define
1795           "inline" to "__inline" before including mono-membar.h.
1796           
1797         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
1798           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
1799           MSVC builds.
1800
1801         Contributed under MIT/X11 license.
1802
1803 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1804
1805         * verify.c (do_invoke_method): Remove return type validation.
1806
1807         * verify.c (do_ret): Do return type validation at return site instead of
1808         call site.
1809
1810 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1811
1812         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
1813
1814         * verify.c: Some todos cleaned and improved a few error messages.
1815
1816 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
1819
1820 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
1823         system types correctly.
1824
1825         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
1826         function.
1827
1828 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * assembly.c (build_assembly_name): Fix a warning.
1831
1832 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
1833
1834         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
1835         the called function takes an object type argument. Fixes storing or
1836         valuetypes across remoting as well as reducing memory usage.
1837         * image.c, metadata-internals.h: remove now unused ldfld_remote and
1838         stfld_remote wrapper caches.
1839
1840 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
1843         is not found.
1844
1845         * reflection.c (mono_image_register_token): New helper function to save
1846         a token->object mapping.        
1847
1848         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
1849         managed code.
1850
1851         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
1852         one dimension arrays. Fixes #367670.
1853         (mono_reflection_get_type_internal): Ditto.
1854
1855 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
1856
1857         * marshal.c: mono_load_remote_field_new() always returns object.
1858         so use the proper signature (fixes bug #366445).
1859
1860 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1861         
1862         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
1863         add an 'inline_failure' flag instead.
1864
1865 2008-03-04  Mark Probst  <mark.probst@gmail.com>
1866
1867         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
1868         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
1869         contains the location of "this", used for exception handling.
1870
1871 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
1874         their size on all platforms for perf reasons.
1875
1876 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
1879         object-internal.h
1880
1881         * object-internal.h: Same.
1882
1883 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1884
1885         * reflection.h: Fix the build I just broke.
1886
1887 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1888
1889         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
1890         Test if a token is valid, this remove explicit usage of 
1891         MonoDynamicImage::tokens from the verifier code.
1892
1893         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
1894
1895         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
1896         instead of direct access to MonoDynamicImage::tokens.
1897
1898 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1899
1900         * verify.c (token_bounds_check): Fix the build I just broke.
1901
1902 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1903
1904         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
1905
1906         * verify.c (verifier_load_method): Fixed the errors message.
1907
1908         * verify.c (mono_method_verify): Fixed a debug message.
1909
1910 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
1911
1912         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
1913         mono-perfcounters.h, class-internals.h: support for predefined
1914         writable counters, query of categories and counters, bugfixes.
1915
1916 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1917
1918         * verify.c (do_refanytype): Verify the refanytype opcode.
1919
1920         * verify.c (mono_method_verify): Use do_refanytype.
1921
1922 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1923
1924         * verify.c (do_mkrefany): Verify the mkrefany opcode.
1925
1926         * verify.c (mono_method_verify): Use do_mkrefany.
1927
1928 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
1929
1930         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
1931         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
1932         implementation.
1933
1934 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
1937         the type load exception.
1938
1939 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1940
1941         * verify.c: Added a few FIXME for method signatures
1942
1943         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
1944         of mono_method_get_signature and get vararg call working. Removed unused
1945         checks for return value.
1946
1947         * verify.c (do_refanyval): Verify the refanyval opcode.
1948
1949         * verify.c (mono_method_verify): Implemented verification of arglist and
1950         use do_refanyval.
1951
1952 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
1955         vtypes to marshal.c.
1956
1957         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
1958         it works for AOT as well.
1959
1960 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1961
1962         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
1963         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
1964         the system time is adjusted.
1965
1966 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
1967
1968         * icall.c, icall-def.h: use the new time functions (fixes the
1969         non-monotonic behaviour of TickCount).
1970
1971 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
1974         it breaks the build.
1975         
1976         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
1977         cattr is not finished yet.
1978
1979 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * verify.c: Proper token validation for field, method and type.
1982
1983 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1984
1985         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
1986
1987         * loader.c (method_from_memberref): Generate type load error instead of method missing
1988         if the type is not found.
1989
1990 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
1993         some of the conversions caused the generation of a marshal directive exception.
1994
1995 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
1996
1997         verify.c: Report which exception should be thrown by the JIT.
1998         Added a lot of FIXME notes.
1999
2000 2008-02-22  Mark Probst  <mark.probst@gmail.com>
2001
2002         * generic-sharing.c: Runtime generic context slots are not
2003         instantiated on init anymore.  Instead, provide function to do the
2004         instantiating on demand.
2005
2006         * class-internals.h: Added vtable to runtime generic context.
2007         Macros for encoding direct and indirect slot offsets in one
2008         guint32.
2009
2010 2008-02-21  Mark Probst  <mark.probst@gmail.com>
2011
2012         * object.c, generic-sharing.c: Moved some generic sharing code
2013         from object.c to generic-sharing.c.
2014
2015         * generic-sharing.c: Added support for extensible runtime generic
2016         context.
2017
2018         * metadata-internals.h: Two new hash tables in MonoImage for
2019         extensible runtime generic context support.
2020
2021         * domain.c: Unregister generic vtables upon domain unloading.
2022
2023         * image.c: Destroy new hash tables upon image unloading.
2024
2025         * metadata.c: Unregister generic subclasses upon image unloading.
2026
2027         * class-internals.h: New data structure for runtime generic
2028         context template.  New fields in the runtime generic context for
2029         extensible part.
2030
2031         * Makefile.am: Added generic-sharing.c.
2032
2033 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2034
2035         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
2036         there is a pending loader exception, raise it.
2037
2038         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
2039         same.
2040
2041         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
2042         same.
2043
2044         Fixes #363450.
2045
2046 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
2049
2050         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
2051         
2052         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
2053         ref-only requests for compatibility with MS.
2054
2055 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2056
2057         * reflection.c (mono_custom_attrs_from_method): Don't silently
2058         return an empty list for generic method instances.
2059         (mono_custom_attrs_from_param): Likewise.
2060
2061 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
2062             Raja R Harinath  <harinath@hurrynot.org>
2063
2064         Fix #354757
2065         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
2066         * class.c (mono_class_inflate_generic_method_full): Initialize it
2067         when a fully-open method is instantiated.
2068         * metadata.c (inflated_method_equal, inflated_method_hash): Update
2069         to new field.
2070         * reflection.c (inflate_mono_method): Don't create a temporary context.
2071
2072 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2073
2074         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
2075         Compute correct value, to prepare for imethod->reflection_info going away.
2076
2077 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
2080
2081 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2082
2083         * verify.c: Implement skip visibility flag.
2084
2085 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2086
2087         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
2088         which contains an extra field to tell the kind of exception that should be thrown.
2089
2090         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
2091
2092 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
2093
2094         * loader.c (mono_method_get_param_names): Initialize 'klass' after
2095         'method' is updated.
2096
2097 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * class.c (mono_class_layout_fields): Set class->min_align for classes using
2100         explicit layout as well. Fixes #360375.
2101
2102 2008-02-11  Geoff Norton  <gnorton@novell.com>
2103
2104         * loader.c: Guard and dereference against inflated generic methods
2105
2106 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
2107
2108         * class.c: Include Retargetable spec in assembly name.
2109         * assembly.c: Always include PublicKeyToken spec in assembly name
2110         (with value "null" if assembly is not signed), and include
2111         Retargetable spec.
2112         * icall-def.h: Added icall for Assembly.get_fullname.
2113         * icall.c: Added icall returning the fullname of an assembly.
2114
2115 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * class.c (mono_class_setup_vtable_general): Add a missing call to
2118         mono_class_setup_methods () which is needed in the AOT case.
2119
2120 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
2121
2122         * verify.c (mono_type_get_stack_name): Added. Return the name for the
2123         stack type of the given MonoType.
2124
2125         * verify.c (verify_type_compatibility_full): Handle the void type.
2126
2127         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
2128         way stack merging works.
2129
2130         * verify.c (store_local): Improved verification message.
2131
2132         * verify.c (do_branch_op): If the merging is invalid, the method
2133         is unverifiable and not invalid. Improved error message.
2134
2135         * verify.c (merge_stacks): Properly merge a boxed valuetype and
2136         a reference type diferent than System.Object. Improved error
2137         message.
2138
2139 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
2140
2141         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
2142
2143         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
2144         type of an enum even if the argument is byref.
2145
2146         * verify.c: Replace all explicit uses of enumtype and enum_basetype
2147         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
2148
2149         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
2150
2151         *verify.c (verify_type_compatibility_full): Make enum types
2152         compatible with their base types.
2153
2154         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
2155         types are compatible for the special case of a boxed valuetype and
2156         System.Object.
2157
2158         * verify.c (verify_stack_type_compatibility): The function
2159         is_compatible_boxed_valuetype was extracted from here.
2160
2161         * verify.c (push_arg): Only set ctx->has_this_store if the method
2162         is not static.
2163
2164         * verify.c (do_ldelem): Fixed a typo in an error message and added
2165         strict check for mixing int32 and native int as the array type
2166         and ldelem type.
2167
2168         * verify.c (merge_stacks): Consider boxed valuetypes in the
2169         compatibility checks.
2170
2171 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
2172         * profiler.h: (MonoGCEvent): Added start-stop the world events.
2173
2174 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2175         *class.c: use_new_interface_vtable_code: renamed the env var to have
2176         a "MONO_" prefix, and fix the logic to enable it by default.
2177
2178 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2179         *class.c:
2180         mono_class_setup_vtable_general: rewrote the way in which interface
2181         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
2182         makes the code more maintainable.
2183         For now the old code is still there, and can be activated setting
2184         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
2185
2186 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
2187
2188         * verify.c: guarded some debug functions around and #ifdef.
2189
2190         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
2191
2192 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
2193
2194         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
2195         changes for now since they seem to break too many things.
2196
2197 2008-02-05  Mark Probst  <mark.probst@gmail.com>
2198
2199         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
2200         mono_marshal_find_nonzero_bit_offset): Added macro and function
2201         for finding the byte- and bit-offset of a bitfield within a
2202         struct.
2203
2204 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
2207         (mono_marshal_get_struct_to_ptr): Ditto.
2208
2209         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
2210         cctor_signature.
2211
2212 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
2215         between methods for non-corlib types.
2216
2217 2008-02-02  Geoff Norton  <gnorton@novell.com>
2218
2219         * loader.c (mono_method_get_param_names): Populate the parameter name for 
2220         generic parameters as well. (Fixes #342536)
2221
2222 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
2225
2226         * verify.c (do_invoke_method): Fix for calling with byref structs.
2227
2228         * verify.c (do_cast): push a boxed value type based on the type token and not
2229         the type of stack.
2230
2231 2008-01-31  William Holmes  <billholmes54@gmail.com>
2232
2233         * process.c (process_module_string_read): Check the size returned form 
2234           VerQueryValue to avoid out of memory exception. 
2235
2236 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
2239         Handle properly modules which are not in the moduleref table. Fixes
2240         #356938.
2241
2242 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
2245         the dynamic case which is now in managed code.
2246         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
2247
2248         * marshal.c (mono_string_to_bstr): Fix a warning.
2249         (init_com_provider_ms): Ditto.
2250
2251         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
2252
2253         * exception.c (mono_get_exception_out_of_memory): New helper function.
2254
2255 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
2256
2257         * marshal.c: Add support for BSTR marshalling
2258         using other COM systems.
2259
2260         Code is contributed under MIT/X11 license.
2261
2262 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2263
2264         * object.c (mono_runtime_invoke_array): reverted previous
2265         commit as it breaks the build.
2266
2267 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         * object.c (mono_runtime_invoke_array): Verify arguments for
2270         invalid types. Fixes #348522.
2271
2272 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2273
2274         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
2275         non-final virtual calls using call. 
2276
2277         * verify.c (do_invoke): fixed some TODOs.
2278
2279         * verify.c (push_arg): set has_this_store for "ldarga 0".
2280
2281 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
2284         which belong to an inflated class. Fixes #356531.
2285
2286 2008-01-26  Robert Jordan  <robertj@gmx.net>
2287
2288         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
2289         which resort to FindFirstFile when a certain error condition
2290         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
2291         Code is contributed under MIT/X11 license.
2292
2293 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
2294
2295         * marshal.c (emit_marshal_string): Fix out string marshalling
2296         to use specified encoding. Fixes #323900.
2297
2298         Code is contributed under MIT/X11 license.
2299
2300 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
2301
2302         * class.c (mono_class_inflate_generic_method_full): Don't modify
2303         iresult->context after cache check.
2304
2305 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * class.c (mono_class_inflate_generic_method_full): Change the
2308         struct assignments to memcpy for better visibility and add some comments.
2309
2310 2008-01-23  Dick Porter  <dick@ximian.com>
2311
2312         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
2313         procedure, and make it work on windows.
2314
2315 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
2318         a MonoReflectionTypeBuilder since it is always of that type.
2319
2320         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
2321
2322         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
2323
2324         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
2325         
2326         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
2327
2328         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
2329
2330         * reflection.c (mono_reflection_create_runtime_class): Remove already created
2331         instantiations from the type cache.
2332
2333 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2334
2335         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
2336
2337         * verify.c (do_unbox_value): push a controled mutability managed pointer.
2338
2339 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2340
2341         * verify.c (do_ldstr): added, verifies if the #US token is valid.
2342
2343         * verify.c (mono_method_verify): removed old TODO
2344
2345 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2346
2347         * verify.c (do_newobj): add visibility check.
2348
2349 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2350
2351         * verify.c (do_load_function_ptr): add visibility check.
2352
2353 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
2354         *class.c:
2355         mono_generic_class_get_class: hook profiler events.
2356         mono_field_get_offset: added to support heap-shot in the new profiler.
2357         *class.h: exported mono_field_get_offset.
2358         * reflection.c:
2359         mono_reflection_setup_internal_class: hook profiler events.
2360
2361 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
2364         argument here too and use it to avoid checking for pending exceptions if 
2365         possible.
2366
2367 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
2368
2369         * assembly.c (build_assembly_name): add arg for passing the assembly
2370         flags. Do not consider a PublicKey with value "null" valid.
2371         (mono_assembly_name_parse_full): added boolean argument that will be
2372         set if the assembly name contains a PublicKeyToken spec. Added support
2373         for the Retargetable spec for which only Yes or No are allowed as valid
2374         value. Consider assembly name invalid if Retargetable spec is set, but
2375         either version, culture or public key (token) are not specified.
2376         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
2377         with implementation in assembly.c.
2378         * icall.c (fill_reflection_assembly_name): also copy assembly flags
2379         from MonoAssemblyName.
2380         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
2381         introduced argument for mono_assembly_name_parse_full to know if the
2382         assembly name has a PublicKeyToken spec, and if it has instruct
2383         fill_reflection_assembly_name to use default value for keyToken (if
2384         PublicKeyToken is null).
2385
2386 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2387
2388         * verify.c (mono_method_verify): fixed ovf ops with
2389         float values. They are unverifiable now.
2390
2391 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2392
2393         * class.c (set_failure_from_loader_error): add BadImageException to the
2394         list of exceptions that can cause a type to fail to load.
2395
2396         * class.c (mono_class_get_exception_for_failure): same.
2397
2398 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * verify.c (in_any_exception_block): added, check if offset
2401         is part of any exception handling clause.
2402
2403         * verify.c (get_stack_type): added VAR and MVAR types.
2404
2405         * verify.c (do_stobj): better error messages.
2406
2407         * verify.c (do_cpobj): added, check cpobj.
2408
2409         * verify.c (do_initobj): added, check initobj.
2410
2411         * verify.c (do_sizeof): added, check sizeof.
2412
2413         * verify.c (do_localloc): added, check localloc.
2414
2415         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
2416
2417 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
2418
2419         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
2420         save_lmf/restore_lmf opcodes.
2421
2422         * threads.c (mono_threads_install_notify_pending_exc): New function to
2423         install a callback notifying the JIT there is a pending exception on a thread.
2424         (mono_thread_request_interruption): Call the new callback.
2425         (mono_thread_get_and_clear_pending_exception): New function to return the
2426         exception pending on a thread.
2427
2428         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
2429         to turn off checking for pending exceptions.
2430         (mono_marshal_get_native_wrapper): Ditto.
2431
2432 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2433
2434         * threads-types.h: Get rid of the unnecessary extern declarations.
2435
2436 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
2437
2438         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
2439         return field from parent class if not private.
2440         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
2441         returns fields from parent class if they are not private.
2442         (method_nonpublic): added function to determine if a given method
2443         should be considered non-public. Returns false for private methods
2444         on parent class, and internal methods from parent on the 1.0 profile.
2445         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
2446         use method_nonpublic function to determine whether method should be
2447         returned.
2448         (property_accessor_public): use newly introduced method_nonpublic
2449         function to determine whether accessor is non-public. 
2450         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
2451         event from parent class if not private. Only return static event if
2452         Static flag is set, and only return static event from parent class if
2453         FlattenHierarchy flag is set.
2454         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
2455         include non-private events from parent class.
2456
2457 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
2460         warning.
2461
2462 2008-01-16  Wade Berrier <wberrier@novell.com>
2463
2464         * security.c: Add assembly.h header to appease some warnings
2465
2466 2008-01-16  Dick Porter  <dick@ximian.com>
2467
2468         * process.c (process_module_string_read): Remove trailing null
2469         when saving string.
2470
2471 2008-01-16  Mark Probst  <mark.probst@gmail.com>
2472
2473         * class-internals.h: A new data structure describing the layout of
2474         a runtime generic context (MonoRuntimeGenericContextTemplate).
2475
2476         * metadata-internals.h: Added a hash table to MonoDomain that maps
2477         from open generic classes to their runtime generic context
2478         templates.
2479
2480         * object.c: Building of the runtime generic context, including
2481         proper handling of generic type arguments of superclasses.
2482         Building of the runtime generic context according to the template.
2483
2484 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
2485
2486         * class.c (mono_class_setup_fields): Set field.count for generic instances.
2487         Fixes #350856.
2488
2489         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
2490         mono_portability_find_file (). Fixes #325466.
2491         (mono_image_get_public_key): Fix a warning.
2492
2493 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
2496         Fixes #353550.
2497         (mono_class_from_name_case): Ditto.
2498
2499 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
2500
2501         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
2502           common storage for the tables used in the System/NumberFormatter class.
2503
2504 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
2507
2508 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * verify.c (get_boxable_mono_type): check if the token is valid.
2511
2512         * verify.c (set_stack_value): changed to add an error if an
2513         invalid type is set on stack. Changed all callers due to signature change.
2514
2515         * verify.c (do_stobj): implement stobj validation.
2516
2517 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
2520         set container->is_method, it was set earlier.
2521
2522         * metadata.c (type_in_image): Handle MVARs which belong to not finished
2523         generic methods.
2524
2525         * reflection.c (mono_reflection_initialize_generic_parameter): Set
2526         is_method of the generic container to TRUE for methods.
2527
2528 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * metadata.c (type_in_image): Handle type parameters properly.
2531
2532         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
2533         memory ownership of this structure.
2534
2535 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * verify.c (get_boxable_mono_type): make typedref types been just
2538         unverifiable. check for void type.
2539
2540         * verify.c (do_unbox_any): added, verify opcode unbox.any.
2541
2542         * verify.c (do_load_function_ptr): accept method spec tokens.
2543
2544 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2545
2546         * marshal.c (mono_class_native_size): Always set *align even if this is called
2547         recursively.
2548
2549 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
2552         out-of-date.
2553
2554 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * verify.c: removed some old unused tables. A huge bunch of small fixes
2557         to things found while testing the verifier with mono basic.
2558
2559         * verify.c (dump_stack_value): dump null literal flag to.
2560
2561         * verify.c (verify_type_compatibility_full): fix comparison
2562         for types that have a generic super type.
2563
2564         * verify.c (verify_stack_type_compatibility): fix compatibility
2565         between null literals and reference types. fix compatibility between
2566         boxed valuetypes and object. fix corner case test for enums.
2567
2568         * verify.c (do_cmp_op): proper verification of cgt.un in case
2569         of reference types.
2570
2571         * verify.c (do_invoke_method): fix error message.
2572
2573         * verify.c (do_store_indirect
2574
2575         * verify.c (check_is_valid_type_for_field_ops): proper verification
2576         of managed pointers to valuetypes and boxed valuetypes. proper verification
2577         of null literals.
2578
2579         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
2580         allow token to be a reference type.
2581
2582         * verify.c (do_cast): proper handling of boxes valuetypes.
2583
2584         * verify.c (do_stelem): proper handling of storing a boxed valuetype
2585         in object[].
2586
2587         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
2588         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
2589         fixed the decoding of unbox_any
2590
2591 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
2594
2595 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * verify.c (do_newobj): do delegate verification.
2598
2599         * verify.c (verify_delegate_compatibility): perform delegate
2600         verification.
2601
2602         * verify.c (verify_ldftn_delegate): perform tests related to
2603         ldftn delegates.
2604
2605         * verify.c (mono_delegate_signature_equal): perform the
2606         slightly diferent signature comparison required by delegates.
2607
2608         * metadata.c (mono_metadata_type_equal_full): added and exported
2609         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
2610         allows signature only comparison.
2611
2612         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
2613         as MONO_INTERNAL.
2614
2615 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * verify.c: added a bunch of stack_slot_* functions to
2618         make access to stack slot type easier. This is required to
2619         allow optional flags, like null literal, boxed value and
2620         this pointer.
2621         All access paths to IlStackDesc::stype have been changed 
2622         to use these new funcions.
2623         Removed a bunch of unused functions and cleared all warnings.
2624         This patch introduces the usage of the this pointer and 
2625         boxed value flags.
2626
2627 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
2630
2631 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
2634         match managed version.
2635
2636         * appdomain.c: Bump corlib version.
2637         
2638         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
2639         argument.
2640
2641 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
2642
2643         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
2644         Set public key token to zero-length byte array if assembly is not
2645         strongnamed.
2646
2647 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2648
2649         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
2650         writing a vtype array elem.
2651
2652 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
2653
2654         * assembly.c (build_assembly_name): return FALSE if length of token is
2655         not 16 (if not "null").
2656         (mono_assembly_name_parse_full): return FALSE if value of version,
2657         culture, token or key is 0.
2658         * icall.c (fill_reflection_assembly_name): add boolean arguments to
2659         specify whether public key and public key token must be set to default
2660         value (zero-length byte array) if not available. Set versioncompat to
2661         SameMachine. If public key is available or the default is set, then
2662         set PublicKey flag.
2663         (ves_icall_System_Reflection_Assembly_FillName): if no public key
2664         is available, use empty byte array as default value. On the 2.0
2665         profile, use default value for public key token if not set.
2666         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
2667         profile, use default value for public key if not set. On the 2.0
2668         profile, use default value for public key token if not set.
2669         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
2670         default values for public key and public key token.
2671
2672 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
2675         field to keep it in synch with the managed object.
2676
2677         * marshal.c (emit_marshal_object): Add support for byref marshalling of
2678         delegates. Fixes #351520.
2679
2680         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
2681         contains defined memory.
2682         
2683         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
2684
2685         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
2686         
2687         * sgen-gc.c (check_consistency): New helper function to do a consistency check
2688         of the GC data structures.
2689
2690         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
2691
2692         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
2693         
2694         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
2695         barrier.
2696         (mono_array_clone_in_domain): Ditto.
2697         (mono_array_clone_in_domain): Ditto.
2698
2699         * threads.c (start_wrapper): Register the thread start argument as a GC root.
2700         (cache_culture): Use a write barrier.
2701
2702         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
2703         (ves_icall_get_property_info): Ditto.
2704
2705         * object.h (MONO_STRUCT_SETREF): New macro.
2706
2707         * class-internals.h (MonoStats): Add some GC statistics.
2708
2709         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
2710
2711 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
2712
2713         * exception.c (mono_exception_from_name_two_strings):
2714         Break from loop after method is found.
2715
2716 2008-01-04  Dick Porter  <dick@ximian.com>
2717
2718         * process.c (process_module_string_read): Rename variable to
2719         reflect correct usage, after fixing bug 345972.
2720
2721 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
2722
2723         * verify.c (mono_type_create_fnptr_from_mono_method): 
2724         created a MonoType function pointer instance to be used during
2725         verification. The verifier releases this memory at end.
2726
2727         * verify.c (mono_method_is_constructor): extracted repeated
2728         checks for constructor into a single class.
2729
2730         * verify.c (do_push_field): use new extracted method
2731         for constructor check.
2732
2733         * verify.c (do_newobj): same.
2734
2735         * verify.c (do_ldftn): renamed to do_load_function_ptr
2736         and make it verify ldvirtftn too.
2737
2738         * verify.c (mono_method_verify: proper verification
2739         of ldvirtftn. release created MonoMethod instances.
2740
2741 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2742
2743         * verify.c (token_bounds_check): added.
2744
2745         * verify.c (do_ldftn): added.
2746
2747         * verify.c (mono_method_verify): proper verificartion of ldftn.
2748
2749 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
2752         than the table row count. It's the resposibility of the caller to
2753         make the bounds check and raise the correct error.
2754
2755         * metadata.c (mono_metadata_decode_row_col): Same.
2756
2757         * loader.c (mono_get_method_from_token): perform bounds check
2758         on token for methoddef table.
2759
2760 2007-12-29  Miguel de Icaza  <miguel@novell.com>
2761
2762         * icall.c
2763         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
2764         assert into a negative result, the managed code already coped with
2765         that.
2766
2767         Some folks on Windows reported this error. 
2768
2769 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
2770
2771         * appdomain.c: Bump corlib version.
2772         * icall.c:
2773         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
2774         CultureInfo.CreateCulture to create CultureInfo for name.
2775         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
2776         create CultureInfo for name. Fixes bug #347174.
2777
2778 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2779
2780         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
2781         flags.
2782
2783         * verify.c (is_valid_branch_instruction): allow branching to the
2784         first instruction of the protected block.
2785
2786         * verify.c (is_valid_cmp_branch_instruction): same.
2787
2788         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
2789         avoid double initialization.
2790
2791         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
2792         detect which cases the eval stack should just be copied.
2793
2794         * verify.c (mono_method_verify): check if the eval stack
2795         is empty when entering a protected block.
2796
2797 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2798
2799         * verify.c: added is_clause_in_range, is_clause_inside_range,
2800         is_clause_nested and verify_clause_relationship. They perform
2801         the verifications stated in P1 12.4.2.7.
2802
2803         * verify.c (mono_method_verify): remove some unused variables,
2804         add the new exception clause checks, add instruction border
2805         checks for protected block start/end, improved some error 
2806         messages and fixed a bug in the way invalid instruction access
2807         is detected.
2808
2809 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
2812         from GC 7.0 if available.
2813
2814         * object.c: Remove an unused define.
2815         
2816         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
2817
2818         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
2819
2820         * null-gc.c (mono_gc_make_descr_for_array): Implement.
2821
2822         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
2823
2824         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
2825         to take the same arguments as the other make_descr functions.
2826
2827         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
2828
2829         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
2830         directly.
2831
2832         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
2833         mini.c.
2834
2835         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
2836         call to boehm-gc.c.
2837
2838         * boehm-gc.c (mono_gc_register_root): Fix a warning.
2839
2840         * null-gc.c (mono_gc_register_root): Fix a warning.
2841
2842         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
2843
2844         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
2845         (mono_gc_base_init): Call GC_init ().
2846
2847         * null-gc.c: Define mono_gc_register_root () as a no-op.
2848
2849         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
2850
2851 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
2852
2853         * verify.c: add prototype for merge_stacks at top
2854
2855         * verify.c (do_switch): added.
2856
2857         * verify.c (merge_stacks): on some cases the stack merging
2858         was not happening properly. Unequal stack sizes at merge
2859         points should be invalid.
2860
2861         * verify.c (mono_method_verify): added more debug info on stack state.
2862         verify switch properly.
2863
2864 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * method-builder.h: New file, moved the mono_mb_ declarations here from 
2867         marshal.h.
2868
2869         * boehm-gc.c marshal.c: Include method-builder.h.
2870
2871         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
2872
2873         * marshal.c: Remove some code which is now in method-builder.c.
2874
2875 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * method-builder.c: New file, extraction of the method builder functionality 
2878         from marshal.c.
2879
2880         * marshal.c: Move the mb functions into method-builder.c.
2881
2882         * marshal.h marshal.c: Export some mono_mb_... functions.
2883
2884         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
2885
2886         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
2887         the caller.
2888
2889         * class.c (mono_class_get_full): Check the token type in the dynamic case.
2890
2891         * loader.c (mono_field_from_token): Ditto.      
2892
2893         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
2894         type as well.
2895         
2896         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
2897         Fixes #342565.
2898
2899         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
2900         a helper function for setting it.
2901
2902         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
2903
2904         
2905         * assembly.c: Significally simplify code now that referenced assemblies are 
2906         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
2907
2908         * threads.h: Don't include  the internal threads-types.h header file. Fixes
2909         #349952.
2910
2911 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2912
2913         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
2914         instructions that were target of branches or are at protected block boundaries.
2915
2916         * verify.c (in_same_block): handle filter clauses.
2917
2918         * verify.c (is_valid_branch_instruction): added. checks the target of
2919         instructions br or brtrue/false.
2920
2921         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
2922         binary branch instructions such as beq and bge.
2923
2924         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
2925         and made it pin the instruction as been part of the exception block.
2926
2927         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
2928         of in_same_block.
2929
2930         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
2931         of in_same_block.
2932
2933         * verify.c (do_ret): ret from a protected block is unverifiable and
2934         not invalid.
2935
2936         * verify.c (do_static_branch): verify br and br.s instructions.
2937
2938         * verify.c (merge_stacks): add extra param to support detection
2939         of branches in the middle of instructions.
2940         
2941         * verify.c (mono_method_verify): verify branches and exception blocks
2942         that target the middle of instructions. Proper verification of br and br.s.
2943
2944 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
2947         skip_visibility field.
2948         (reflection_methodbuilder_from_dynamic_method): Ditto.
2949
2950         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
2951         registrations. Fixes #348193.
2952
2953         * threads.h: Move the internal mono_thread_get_pending_exception () to
2954         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
2955
2956 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
2957
2958         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
2959         icall registration. Fixes #348193.
2960
2961         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
2962         for corlib classes into object. Fixes #349621.
2963
2964 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
2965
2966         * icall.c (property_accessor_nonpublic): new function to determine
2967         whether an accessor allows a property to be considered non-public.
2968         Returns false for private accessor(s) from parent class, and internal
2969         accessor(s) from parent on 2.0 profile (and higher).
2970         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
2971         to determine whether property should be included if NonPublic flag
2972         is set. Fixes bug #349078.
2973
2974 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
2975
2976         * verify.c (init_stack_with_value): added.
2977
2978         * verify.c (mono_method_verify): extracted common
2979         code for exception initialization into init_stack_with_value.
2980
2981         * verify.c (mono_method_verify): initialize the exception
2982         for handler clauses as well.
2983
2984         * verify.c (mono_method_verify): fix the exception clause
2985         ordering rules, it should use handler end offset and not
2986         start offset.
2987
2988 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
2989
2990         * rawbuffer.c: remove useless warning.
2991
2992 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
2993
2994         * threads.h, threads-types.h: move functions to the correct header
2995         (fixes bug#349952).
2996
2997 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2998
2999         * verify.c (mono_method_verify): proper verification
3000         of exception handling clauses ranges and fallthru in
3001         and out of protected blocks.
3002
3003 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3004
3005         * verify.c (mono_method_verify): fixed compilation issue.
3006
3007 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * verify.c (mono_method_verify): a printf slipped in, changed
3010         to use verifier debug macro.
3011
3012 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
3013
3014         * verify.c (is_correct_leave): check for filter clauses.
3015
3016         * verify.c (do_filter): added.
3017
3018         * verify.c (mono_method_verify): property verification of leave.
3019
3020
3021 2007-12-18  Mark Probst  <mark.probst@gmail.com>
3022
3023         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
3024         Win32 build, until we figure out how to do the proper thing on
3025         Win32.
3026
3027 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
3030         by the previous patch.
3031         
3032         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
3033         the assembly resolve handler for refonly assemblies.
3034
3035 2007-12-17  Mark Probst  <mark.probst@gmail.com>
3036
3037         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
3038         Make sure only one thread is allowed to commence shutdown, and
3039         don't allow new threads to be started once shutdown is in
3040         progress.
3041
3042 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3043
3044         * verify.c (is_correct_endfilter): added.
3045
3046         * verify.c (is_unverifiable_endfilter): added.
3047
3048         * verify.c (do_endfilter): added.
3049
3050         * verify.c (mono_method_verify): property verification of endfilter
3051         and fixed a corner case or endfinally.
3052
3053 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
3054
3055         * verify.h: new flags to support fail fast of unverifiable code and
3056         do non-strict verification. Non-strict verification is required to
3057         have MS runtime compatibility. There are a huge amount of unverifiable
3058         code that it accepts as verifiable. The strict mode verifies the code
3059         as the specs says.
3060         Non-strict mode will be required in cases where code needs to be
3061         accepted as verifiable but fails under strict mode.
3062
3063         * pedump.c: added support to fail fast and non-strict verification.
3064
3065         * verify.c: added support for both fail fast and non-strict verification.
3066
3067 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * verify.c (is_correct_endfinally): added.
3070
3071         * verify.c (mono_method_verify): property verification of endfinally.
3072
3073 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3074
3075         * verify.c (in_any_block): check for filter clauses.
3076
3077         * verify.c (is_correct_rethrow): added.
3078
3079         * verify.c (mono_method_verify): property verification of rethrow.
3080
3081         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
3082
3083 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3084
3085         * verify.c (do_throw): added.
3086
3087         * verify.c (mono_method_verify): property verification of throw
3088
3089 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
3092         assemblies. Fixes #346425.
3093
3094 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
3097         FieldBuilders.
3098
3099         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
3100
3101         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
3102         prevent asserts when this is called with a token which might not be valid.
3103
3104         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
3105         lookup_dynamic_token_class with valid_token == FALSE.
3106
3107         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
3108
3109         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
3110
3111         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3112         
3113 2007-12-10  Mark Probst  <mark.probst@gmail.com>
3114
3115         * gc.c: Don't delay threadpool thread finalization unless Mono is
3116         shutting down.
3117
3118 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
3119
3120         * threads.c: turn an assert into a non-fatal warning.
3121
3122 2007-12-09  Robert Jordan  <robertj@gmx.net>
3123
3124         * icall.c (GetVirtualMethod): Add missing argument validation.
3125
3126 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3127
3128         * verify.c (do_cast): added.
3129
3130         * verify.c (mono_method_verify): property verification of castclass and isinst.
3131
3132
3133 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3134
3135         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
3136
3137         * verify.c (do_stelem): added.
3138
3139         * verify.c (mono_method_verify): property verification of stelem.X.
3140
3141 2007-12-07  Mark Probst  <mark.probst@gmail.com>
3142
3143         * class.c, class-internals.h: Introduce an environment variable
3144         (MONO_GENERIC_SHARING) through which the extent of generic code
3145         sharing can be controlled (share all classes, share only corlib
3146         classes, or share nothing).
3147
3148         * object.c: Only create runtime generic context for classes for
3149         which sharing is enabled.
3150
3151 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3152
3153         * verify.c (do_ldelem): refactor it to work with ldelem.any.
3154
3155         * verify.c (mono_method_verify): property verification of ldelem.any.
3156
3157 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3158
3159         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
3160         added ldelem.X opcodes.
3161
3162         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
3163
3164         * verify.c: proper verification of ldelem.X 
3165
3166 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
3167
3168         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
3169
3170 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * verify.c (mono_method_verify): null literal requires special handling,
3173         the value pushed on stack need to be flagged as so.
3174
3175         * verify.c (do_ldelema): Verify ldelema properly.
3176
3177 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3178
3179         * verify.c: Verify ldlen properly.
3180
3181 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
3184         to the target object's type. Fixes #346160.
3185
3186 2007-12-05  Dick Porter  <dick@ximian.com>
3187
3188         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
3189         Solaris needs the same workaround as BSD-derived systems.  Fixes
3190         bug 323524, patch by Burkhard Linke
3191         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
3192
3193 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
3194
3195         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
3196         handle to use when error dialog is shown; otherwise, update mask
3197         to show no error dialog when an error occurs.
3198
3199 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
3200
3201         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
3202
3203         * class.c (mono_class_get_field_default_value): New helper function to initialize
3204         field->def_type and field->data.
3205
3206 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
3209         the general one.
3210
3211         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
3212
3213         * marshal.c: Avoid depending on delegate->method_info being set.
3214
3215         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
3216         
3217         * object.c (mono_delegate_ctor): Set delegate->method.
3218
3219         * object-internals.h (struct _MonoDelegate): Add 'method' field.
3220
3221         * appdomain.c: Bump corlib version.
3222
3223 2007-11-27  Raja R Harinath  <harinath@gmail.com>
3224
3225         * metadata.c (mono_generic_inst_equal_full): Short-circuit
3226         equality check if we're comparing canonicalized MonoGenericInsts.
3227
3228 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
3229
3230         * class.c (generic_array_methods): Call mono_class_setup_methods () before
3231         accessing class->methods.
3232
3233 2007-11-22  Dick Porter  <dick@ximian.com>
3234
3235         * threads.c: Ensure that the synch_cs is set before trying to use
3236         it.
3237
3238 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
3239
3240         * profiler.c: r89126 broke the statistial profiler, unbreak.
3241
3242 2007-11-22  Martin Baulig  <martin@ximian.com>
3243
3244         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
3245
3246         * mono-debug.c
3247         (mono_debug_debugger_version): Bump to 3.
3248         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
3249         -> mono_debugger_class_initialized().
3250
3251         * mono-debug-debugger.c
3252         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
3253
3254         * class.c
3255         (mono_debugger_start_class_init_func): Removed.
3256         (mono_debugger_class_loaded_methods_func): Added.
3257         (mono_class_setup_methods): Call it here.
3258
3259 2007-11-22  Martin Baulig  <martin@ximian.com>
3260
3261         * mono-debug.c
3262         (mono_debug_add_delegate_trampoline): New public method.
3263         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
3264
3265         * mono-debug.h
3266         (MonoSymbolTable): Added `global_data_table'.
3267         (MonoDebuggerTypeKind): Removed.
3268
3269 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
3272         these methods.
3273
3274         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3275         
3276 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
3277
3278         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
3279
3280 2007-11-20  Martin Baulig  <martin@ximian.com>
3281
3282         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
3283
3284         * mono-debug-debugger.c
3285         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
3286         (mono_debugger_remove_breakpoint): Likewise.
3287         (mono_debugger_check_breakpoints): Likewise.
3288         (mono_debugger_register_class_init_callback): New public method.
3289         (mono_debugger_remove_class_init_callback): Likewise.
3290         (mono_debugger_add_type): Likewise.
3291
3292         * mono-debug-debugger.h
3293         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
3294
3295 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
3296
3297         * class.c: more interface implementations needed for the
3298         array enumerator (fixes bug #341112).
3299
3300 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
3301
3302         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
3303         fix ParamName of ArgumentNullExceptions.
3304
3305 2007-11-17  Miguel de Icaza  <miguel@novell.com>
3306
3307         * reflection.c (mono_reflection_encode_sighelper): Generate the
3308         modopts and modreqs.   I have a useless test that crashes monodis,
3309         but that shows the code working.
3310
3311 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
3312
3313         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
3314         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
3315
3316 2007-11-15  Dick Porter  <dick@ximian.com>
3317
3318         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
3319         When joining a thread, it's the thread that's calling Join that
3320         gets WaitSleepJoin state not the target.  Fixes the standalone
3321         test case in bug 334740, and hopefully the whole bug too.
3322
3323 2007-11-15  Dick Porter  <dick@ximian.com>
3324
3325         * process.c: Read file version info from the files pointed at by
3326         process modules, not the current process.  Fixes bug 315969.
3327
3328         Use windows typedef names in some places to fix warnings on the
3329         windows build.
3330
3331 2007-11-15  Mark Probst  <mark.probst@gmail.com>
3332
3333         * image.c, metadata-internals.h: Added a generic_class_cache hash
3334         to MonoImage for looking up generic classes when sharing generics.
3335
3336 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
3337
3338         * sgen-gc.c: warning cleanups.
3339
3340 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
3343         inherited properties.
3344
3345 2007-11-14  Mark Probst  <mark.probst@gmail.com>
3346
3347         * object.c, class-internals.h: Added more information to the
3348         runtime generic context.
3349
3350 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
3353         instead of just the target method. Generalize the abstract method handling to
3354         handle any non-static method.
3355
3356         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3357         mono_marshal_get_delegate_invoke () signature change.
3358
3359 2007-11-13  Mark Probst  <mark.probst@gmail.com>
3360
3361         * class.c, class-internals.h: Made
3362         mono_type_get_basic_type_from_generic () public.  Fixed member
3363         access check for shared generics.
3364
3365         * loader.c: Don't insert field into field cache if it's part of a
3366         non-inflated generic class.
3367
3368         * domain.c, domain-internals.h: The generic sharing context is now
3369         part of the jit info data structure.  Added two accessor
3370         functions.
3371
3372 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
3375         the array Get/Set/Address methods, since the JIT inlines them.
3376
3377         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
3378
3379         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
3380         (mono_image_init): Initialize runtime_invoke_direct_cache.      
3381
3382         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3383         mono_marshal_get_delegate_invoke signature change.
3384
3385         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
3386         an additional argument. Add support for invoking abstract methods.
3387
3388         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
3389
3390         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
3391
3392 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3393
3394         * class.c: Do field layout for open generic classes as well.
3395
3396 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3397
3398         * gc.c, gc-internal.h: Don't finalize threadpool threads with
3399         other objects, because the threadpool is still around.  Put them
3400         in a list instead and after finalizing all other objects in the
3401         root domain shut down the thread pool and then finalize the
3402         threads.  Fixes bug #337383.
3403
3404         * threads.c, thread-types.h: New mono_thread_create_internal()
3405         function for marking a thread with the threadpool flag before it
3406         started.  Set synch_cs to NULL after freeing it.
3407
3408         * threadpool.c: Mark threadpool threads before they start.
3409
3410 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
3411
3412         * reflection.h, reflection.c: don't export random functions
3413         and lazy load dbnull and missing objects.
3414
3415 2007-11-07  Jonathan Chambers <joncham@gmail.com>
3416
3417         * class.c: Initialize COM types if COM interfaces
3418         are present (not just COM classes).
3419         
3420         Code is contributed under MIT/X11 license.
3421
3422 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3423         * reflection.c:
3424         create_dynamic_mono_image: hook module profiler events (dynamic case).
3425         mono_image_basic_init: hook assembly profiler events (dynamic case).
3426
3427 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3428         * profiler.c:
3429         simple_appdomain_unload: completely terminate the profiler
3430         instead of only processing the statistical samples.
3431         simple_shutdown: make sure this is really called exactly once,
3432         even in multithreaded applications, and always listen to
3433         appdomain events.
3434         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
3435         here, the "[un]load" functions will do it.
3436         Fixes bugs #333791 and #325261.
3437
3438 2007-11-07  Geoff Norton  <gnorton@novell.com>
3439
3440         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
3441         rather than depend on __APPLE__.
3442
3443 2007-11-07  Mark Probst  <mark.probst@gmail.com>
3444
3445         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
3446
3447 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
3448
3449         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
3450         UTF16 MonoString. Fix the crash from bug #335488
3451
3452 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
3453
3454         * marshal.c: Correct (for non-Win32 OS) length != size in 
3455         mono_string_from_bstr. Fix #339530.
3456
3457 2007-11-06  Geoff Norton  <gnorton@novell.com>
3458
3459         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
3460         to succeed
3461
3462 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
3463
3464         * process.c: Added run-time GetProcessId API detection for Windows.
3465
3466 2007-11-04  Miguel de Icaza  <miguel@novell.com>
3467
3468         * reflection.c  (mono_param_get_objects): If a parameter has the
3469         attribute [System.Runtime.InteropServices.Optional] we should
3470         set the DefaultValue of the ParameterInfo to be
3471         System.Reflection.Missing instead of DBNull.
3472
3473         See bug #339013.
3474
3475         (mono_get_reflection_missing_object): New method,
3476         returns the System.Reflection.Missing.Value singleton instance.
3477
3478 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
3479
3480         * culture-info-table.h : regenerated.
3481
3482 2007-11-02  Jonathan Chambers <joncham@gmail.com>
3483
3484         * icall.c: Use GetEnvironmentStrings on windows
3485         so we are using the same environment block as 
3486         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
3487         #333740.
3488         
3489         Code is contributed under MIT/X11 license.
3490
3491 2007-10-31  Martin Baulig  <martin@ximian.com>
3492
3493         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
3494
3495         * mono-debug-debugger.h
3496         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3497
3498 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
3501         classes.
3502
3503 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
3504
3505         * culture-info-table.h : regenerated.
3506
3507 2007-10-30  Robert Jordan  <robertj@gmx.net>
3508
3509         * icall-def.h, icall.c:
3510         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
3511
3512         Code is contributed under MIT/X11 license.
3513
3514 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * class.c (mono_class_setup_vtable): Find the inflated methods in the
3517         inflated class instead of inflating them again.
3518         
3519         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
3520         dynamic case.
3521
3522         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
3523         Call setup_supertypes () after klass->parent is set.
3524         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
3525
3526         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
3527         for inflated instances of not yet created dynamic generic classes.
3528         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
3529         times from inflated_method.
3530         (methodbuilder_to_mono_method): Ditto.
3531
3532 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
3533
3534         * gc.c: code cleanup and removed old untested option of not creating the
3535         finalizer thread.
3536
3537 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
3540         creating a jump trampoline for dynamic methods.
3541
3542 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
3543
3544         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
3545         generic TypeBuilders when called from another method of the same type (bug #335131).
3546
3547
3548 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
3551         doesn't seem to work perfectly.
3552         
3553         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
3554         called multiple times.
3555         (methodbuilder_to_mono_method): Ditto.
3556         (resolve_object): Inflate FieldBuilder's.
3557
3558 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3559
3560         * string-icalls.c, string-icalls.h, appdomain.c: patch from
3561         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
3562         RemoveEmptyEntries in the string.Split implementation (bug #322375).
3563
3564 2007-10-26  Dick Porter  <dick@ximian.com>
3565
3566         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
3567         Thread initialisation changes
3568
3569 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
3570
3571         * verify.c: fix compatibility check between arrays and System.Array
3572
3573 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
3576         too. Fixes #336999.
3577
3578 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * object.c (mono_value_box): Use typed allocation here.
3581
3582 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
3585         trampoline instead of compiling the method right away.
3586
3587         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
3588
3589 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
3592         related fields for dynamic classes. Fixes #334493.
3593
3594 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
3595
3596         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
3597         
3598         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
3599
3600         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
3601         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
3602
3603         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
3604
3605         * reflection.c (create_generic_typespec): Initialize klass->generic_container
3606         if needed.
3607         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
3608
3609 2007-10-18  Jonathan Chambers <joncham@gmail.com>
3610
3611         * marshal.c: Use correct key when removing item
3612         from ccw_hash.
3613         
3614         Code is contributed under MIT/X11 license.
3615
3616 2007-10-17  William Holmes  <billholmes54@gmail.com>
3617
3618         *marshal.c: Adding a case to marshal booleans to U1
3619
3620         Code is contributed under MIT/X11 license.
3621
3622 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
3623
3624         * class.c (mono_class_from_name): Search the modules compromising dynamic
3625         assemblies. Fixes #331601.
3626
3627 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
3628
3629         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
3630         exception if the type name contains an assembly component. Fixes #334203.
3631
3632         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
3633         modules inside dynamic assemblies. Fixes #334200.
3634         
3635         * reflection.c: Set image->public_key and image->public_key_length;
3636
3637         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
3638         fields.
3639
3640         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
3641         
3642 2007-10-16  Mark Probst  <mark.probst@gmail.com>
3643
3644         * metadata.c: Implemented correct comparing of generic classes.
3645         An inflated generic class can be equal to a non-inflated one if it
3646         is inflated with generic type variables as type arguments.  Fixes
3647         bug #333798.
3648
3649 2007-10-15  Dick Porter  <dick@ximian.com>
3650
3651         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
3652         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
3653         81646.
3654
3655         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
3656         instead of a monitor lock.  This means that monitor_try_enter and
3657         co can set the thread state safely.
3658         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
3659         thread_interrupt_requested, so interrupt actually works.
3660
3661         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
3662         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
3663         state accessor function
3664
3665 2007-10-15  Martin Baulig  <martin@ximian.com>
3666
3667         * mono-debug.h
3668         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
3669         the debugger with the current runtime.
3670
3671 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
3672
3673         * object.c, object-internals.h: added the ability to set a single
3674         trampoline for all the slots in a vtable.
3675
3676 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3677
3678         * marshal.c: deal with a possible race condition during multicast
3679         delegate invocation.
3680
3681 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3682
3683         * class.c: ensure value type methods don't have the synchronized
3684         flag set.
3685
3686 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
3687
3688         * string-icalls.c, string-icalls.h: reverted unapproved patch that
3689         breaks the build.
3690
3691 2007-10-11  Joel Reed  <joelwreed@comcast.com>
3692
3693         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
3694         to take an options parameter so that empty entries can be removed during
3695         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
3696
3697 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3698
3699         * marshal.c: make sure we don't store the signature from a dynamic
3700         method into the runtime invoke cache (bug #327189).
3701
3702 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3703
3704         * marshal.c: make sure the wrapper methods are properly initialized.
3705
3706 2007-10-11  Mark Probst  <mark.probst@gmail.com>
3707
3708         * metadata.c, metadata-internals.h: Generalized
3709         mono_type_stack_size() to mono_type_stack_size_internal() which
3710         takes an additional argument specifying whether it allows open
3711         types.
3712
3713 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * verify.c (do_invoke_method): handle typedbyref params
3716         correctly and check for unverifiable return values.
3717
3718         * verify.c (do_newobj): fix a warning.
3719
3720 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3721
3722         * verify.c: don't tread typedbyref as allways unverifable,
3723         so uses, like (ld/st)loc.0 are valid. verify for the cases
3724         that it matters, like boxing related operations.
3725
3726 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * verify.c: add verification of the newobj opcode. verification
3729         of delegate instantation still missing due ldftn and virldftn not
3730         pushing the function type on stack
3731
3732 2007-10-08  Mark Probst  <mark.probst@gmail.com>
3733
3734         * class-internals.h: Runtime generic context data structure
3735         definition.
3736
3737         * object.c: Initialization of runtime generic context at runtime
3738         vtable creation time.
3739
3740 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
3741         * class.c (mono_class_create_from_typedef,
3742         mono_class_from_generic_parameter, mono_ptr_class_get,
3743         mono_fnptr_class_get, mono_bounded_array_class_get)
3744         * domain.c (mono_domain_create, mono_domain_free)
3745         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
3746         * image.c (do_mono_image_load, mono_image_close):
3747         Hooked up load-unload profiler events.
3748
3749 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
3750
3751         * domain.c: track statistics about the actual amount of native code
3752         allocated.
3753
3754 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
3755
3756         * class.c: the valuetype enumerators don't have the additional
3757         supertypes interfaces.
3758
3759 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3760
3761         * class.c: need more interfaces setup for the IEnumerator<T>
3762         object created for arrays (tests/ienumerator-interfaces.2.cs).
3763
3764 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
3767
3768 2007-10-05  Alp Toker  <alp@atoker.com>
3769
3770         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
3771         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
3772         #315863.
3773
3774 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3775
3776         * verify.c (verify_type_compatibility_full): verification of
3777         compatibility improved, validates correctly non-strict checks between
3778         native int and I4 types different than (unsigned)int32.
3779
3780         * verify.c (do_store_indirect): added, do all verification of
3781         ldind.X opcodes. 
3782
3783         * verify.c (get_load_indirect_mono_type): renamed to
3784         get_indirect_op_mono_type, as it now returns the MonoType for 
3785         ldind.X and stind.X opcodes.
3786
3787 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * reflection.c: Fix the encoding of generic type definition for
3790         TypeBuilders.
3791
3792         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
3793         mono_image_typedef_or_ref but allows to specify if typespec lookups should
3794         be made. Typespec check is done prior to typeref cache lookup.
3795
3796         * reflection.c (mono_image_typedef_or_ref): now just delegate to
3797         mono_image_typedef_or_ref_full.
3798
3799         * reflection.c (encode_generic_class): encode the generic class
3800         directly instead of calling encode_type.
3801
3802         * reflection.c (encode_type): encode the generic type definition
3803         MonoClass as a generic instantiation.
3804
3805         * reflection.c (create_typespec): cache typespec tokens in
3806         the assembly->typespec cache. Don't create typespec for a generic
3807         instance MonoClass. Create typespec for the generic type defintion.
3808
3809         * reflection.c (create_generic_typespec): encode the generic
3810         class directly instead of calling encode_type.
3811
3812         * reflection.c (mono_image_create_token): encode the generic
3813         type definition not using a typespec for MonoType instances.
3814
3815
3816 2007-10-04  Raja R Harinath  <rharinath@novell.com>
3817
3818         Fix #328812
3819         * class.c (mono_image_init_name_cache): Don't return nested
3820         'protected internal' classes.
3821         (mono_class_from_name_case): Likewise.
3822
3823 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
3824
3825         * icall-def.h, icall.c : get_bundled_machine_config() is now the
3826           common function used by both DefaultConfig in System.dll and
3827           InternalConfigurationHost in System.Configuration.dll.
3828
3829 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3830
3831         * class.c: automatically add to vectors only a few essential explicit
3832         generic interfaces. The rest of the interfaces that arrays should
3833         provide are currently implicitly added (but still not lazily, see the
3834         design in the discussion of bug#325495 for the details of what is
3835         needed for that). Additionally, implicit interfaces are assigned the
3836         same vtable slot as the explicit interfaces (as they are compatible):
3837         this enables huge memory savings since we don't need to instantiate
3838         as many memthods and as large vtables anymore. Also, Since
3839         GetEnumerator<T> returns an instance of a type that is required to
3840         support a similarly large set of interfaces as arrays, we add
3841         implicit interfaces and interface offset sharing support to those
3842         types, too. This change adds all the required interfaces so that
3843         the anonarray.cs test case in the bug report works (we don't add
3844         all the interfaces to arrays of arrays 3-level deep and more because
3845         of the memory requirements explained in the bug and since they are much
3846         less common: the lazy-loading support will enabled them to work, too).
3847
3848 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3849
3850         * verify.c (merge_stacks): major clean up, all type compatibility
3851         checks are done by verify_type_compatibility. This fix my earlier lack
3852         of understanding of the CLR type system and merge_stacks no longer looks
3853         scary.
3854
3855         * verify.c: fixed some bad spelling.
3856
3857 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3858
3859         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
3860         a given stack slock.
3861         
3862         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
3863         verify_type_compatibility_full. This removed a near indentical function and fixed
3864         handling of Int32 and IntPtr across all opcodes.
3865
3866 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3867
3868         * class.c: only vectors have the additional generic interfaces.
3869
3870 2007-10-01  Jonathan Chambers <joncham@gmail.com>
3871
3872         * mono-config.c: Use g_strcasecmp instead of
3873         strcasecmp like everywhere else to fix
3874         compilation with MSVC.
3875         
3876         Code is contributed under MIT/X11 license.
3877
3878 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3879
3880         * object.c, object-internals.h: refactored the IMT code to enable
3881         building a single slot at a time and lazily creating the IMT trampolines
3882         and thunks.
3883
3884 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
3887
3888         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
3889         Fixes #328501.
3890         
3891 2007-09-29  Raja R Harinath  <harinath@gmail.com>
3892
3893         * loader.c (method_from_methodspec): Rearrange to avoid
3894         un-necessary exposition.  Don't assert out if the method's
3895         declaring type is a generic type definition.
3896
3897 2007-09-28  Martin Baulig  <martin@ximian.com>
3898
3899         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
3900
3901 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
3902
3903         * class-internals.h: optimize field layout of MonoClass to
3904         requires less cachelines at runtime and save a few bytes on 64 bit
3905         systems.
3906
3907 2007-09-28  Jb Evain  <jbevain@novell.com>
3908
3909         * reflection.c: when encoding type names in custom attributes,
3910         if the type is a closed generic type, its generic arguments
3911         have to be serialized as AssemblyQualifiedName, so that when
3912         they are deserialized, it's possible to re-create them properly.
3913         Fixes #329450.
3914
3915
3916 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
3917
3918         * object.c, class-internals.h: added delegate-creation counter.
3919
3920 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
3921
3922         * class.c: cleanup of the code that synthetizes interfaces for
3923         arrays in 2.0: saves quit a bit of corlib mempool memory.
3924         Code to fix bug #325495 ifdeffed out for now until the issues
3925         with memory usage and O(n^2) behaviour are fixed.
3926
3927 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3928
3929         * marshal.c: when possible, do not duplicate the name of the methods
3930         in the method builder and in the generated MonoMethod.
3931
3932 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3933         * verify.c: added support for type checking ldind_* opcodes.
3934
3935 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3936
3937         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
3938         which is used to distinguish the fully open instantiation of a TypeBuilder
3939         with the rest. This temporary hack is required to restore the property that
3940         the fully open instantiation is the same type of the generic type definition.
3941
3942         * class-internals.h (mono_generic_class_is_generic_type_definition):
3943         new function as part of the internal API.
3944
3945         * class.c (inflate_generic_type): return NULL when the generic inst is
3946         fully open. The fully open generic type is now the same as the generic type
3947         definition for non TypeBuilder types.
3948
3949         * class.c (mono_generic_class_get_class): removed assert since it is
3950         no longer valid, gklass->cached_class can point to the generic type definition.
3951
3952         * class.c (mono_generic_class_is_generic_type_definition): new.
3953
3954         * metadata.c (mono_generic_class_hash): added is_tb_open field
3955         to the hash calculation.
3956
3957         * metadata.c (free_generic_class): if the generic class is associated
3958         with the generic type definition, its field will come from the mempool and
3959         must not be freed.
3960
3961         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
3962         new, this function identifies the corner case of a TypeBuilder fully open
3963         instantiation.
3964
3965         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
3966         for lookup. Set gclass->cached_class to be the container class in case of
3967         the fully open instantiation of non TypeBuilder types.
3968
3969         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
3970         to compare generic classes.
3971
3972         * reflection.c (method_encode_methodspec): remove assert that
3973         no longer is valid.
3974
3975         * reflection.c (mono_reflection_generic_class_initialize): add
3976         an aditional assert to ensure the proper type is used.
3977
3978 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
3979
3980         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
3981         to enjoy it.
3982
3983 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3984
3985         * verify.c (push_arg): Fixed support for ldarga
3986         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
3987         MonoType used as first arg in case of instance calls.
3988
3989 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3990
3991         * verify.c: Support for verifying VAR and MVAR types, 
3992
3993 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * icall.c (ves_icall_get_property_info): Set the reflected type of the
3996         accessors correctly.
3997
3998 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
3999
4000         * threads.c: support OSX and other systems in
4001         mono_thread_get_stack_bounds (bug #328026).
4002
4003 2007-09-25  Martin Baulig  <martin@ximian.com>
4004
4005         * mono-debug.h
4006         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
4007
4008 2007-09-24  Martin Baulig  <martin@ximian.com>
4009
4010         * mono-debug.h
4011         (MonoDebugClassEntry): Moved the definition of this struct into
4012         mono-debug.c to make it private.
4013
4014         * mono-debug.c
4015         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
4016         type table per symbol file, we don't need to store the symfile id
4017         any longer.
4018
4019 2007-09-24  Martin Baulig  <martin@ximian.com>
4020
4021         Create one type table per symbol file, since a `MonoClass *' gets
4022         invalid when its image is unloaded.
4023
4024         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
4025         (MonoDebugHandle): Added `type_table'.
4026
4027 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4028
4029         * mempool.c, mempool.h: added mono_mempool_new_size () API
4030         to be able to specify a smaller initial size for the pool.
4031         Adjusted the code to slowly increase pool size before using
4032         the previous default size.
4033         * image.c: use a small initial size for image mempools.
4034
4035 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
4038         Fixes ##320990.
4039
4040         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
4041         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
4042
4043 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * metadata.c (mono_type_create_from_typespec): Remove an invalid
4046         free. Fixes #327438.
4047
4048 2007-09-21  Raja R Harinath  <harinath@gmail.com>
4049
4050         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
4051         generic instantiations, etc.
4052         <MONO_TYPE_ARRAY>: Likewise.
4053
4054 2007-09-21  Martin Baulig  <martin@ximian.com>
4055
4056         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
4057         these structs were never defined.
4058         (MonoDebugHandle): Removed the `_priv' field, it was never used.
4059
4060 2007-09-21  Martin Baulig  <martin@ximian.com>
4061
4062         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
4063
4064 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
4065
4066         * image.c: removed the guid hash tables: we can get the same info
4067         without the additional memory usage hit (partially fixes also bug #327052).
4068
4069 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4070
4071         * profiler.h, profiler-private.h, profiler.c: add a new profiler
4072         event to handle unloading methods. After the event is called, the
4073         corresponding MonoMethod* must be considered invalid.
4074         * loader.c (mono_free_method): call the new mono_profiler_method_free
4075         event.
4076
4077 2007-09-20  Mark Probst  <mark.probst@gmail.com>
4078
4079         * domain-internals.h: New flag in MonoJitInfo which marks shared
4080         generic methods.  New hash table (shared_generics_hash) in
4081         MonoDomain to keep track of shared generic methods.  Prototypes
4082         for functions to register and lookup shared generic methods.
4083
4084         * domain.c: Support for registering and looking up shared generic
4085         methods via a hash table (shared_generics_hash) in MonoDomain.
4086
4087         * class-internals.h: New exception to signal failure of shared
4088         compilation of a generic method.  New counters for generics
4089         sharing in MonoStats.
4090
4091 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
4092
4093         * image.c, metadata-internals.h: don't keep a file descriptor open
4094         for loaded assemblies (bug#325988).
4095
4096 2007-09-19  Raja R Harinath  <rharinath@novell.com>
4097
4098         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
4099         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
4100         use the corresponding datatypes.
4101         (type_in_image): Update to changes.
4102         (CleanForImageUserData): Simplify.
4103         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
4104         Avoid quadratic behaviour in handling the "stolen" list by
4105         separating the filter predicate out, and by prepending the stolen
4106         items rather than appending them.
4107         (steal_ginst_in_image): Likewise.
4108         (mono_metadata_clean_for_image): Update to changes.
4109
4110 2007-09-19  Martin Baulig  <martin@ximian.com>
4111
4112         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
4113
4114 2007-09-19  Martin Baulig  <martin@ximian.com>
4115
4116         * mono-debug.c (mono_debug_cleanup): Don't call
4117         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
4118
4119 2007-09-19  Raja R Harinath  <harinath@gmail.com>
4120
4121         Fix crash on 'make run-test' in mcs/errors
4122         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
4123         Avoid more potential allocations in mono_class_from_mono_type.
4124         (ginst_in_image): Update to changes.
4125         (gclass_in_image): Rearrange slightly.
4126
4127 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * class.c (mono_class_init): Move the code that sets up class->methods to 
4130         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
4131
4132         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
4133         canonical instance of an inflated generic signature.
4134         (mono_type_create_from_typespec): Remove an invalid free.
4135
4136         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
4137
4138 2007-09-18  Marek Habersack  <mhabersack@novell.com>
4139
4140         * domain-internals.h: added a declaration of the
4141         mono_assembly_load_full_nosearch internal function.
4142
4143         * assembly.c (mono_assembly_load_with_partial_name): use
4144         mono_try_assembly_resolve return value properly.
4145         (mono_assembly_load_full_nosearch): copied the function body from
4146         mono_assembly_load_full, without the code to invoke assembly
4147         search hooks.
4148         (mono_assembly_load_full): calls the above new function and if the
4149         assembly is not resolved, invokes the search hooks.
4150
4151         * appdomain.c (mono_runtime_init): restore the global postload
4152         assembly search handlers.
4153
4154 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4155
4156         * class.c (mono_class_init): Make sure class->methods and class->properties
4157         are never NULL in the generics case.
4158
4159         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
4160
4161 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * metadata.c (free_generic_class): Disable some code to fix the build.
4164
4165         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
4166
4167         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
4168         from the image mempool.
4169
4170         * metadata.c (free_generic_class): Free more data from the inflated class.
4171
4172         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
4173
4174         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
4175         mempool.
4176         (mono_type_create_from_typespec): Ditto.
4177
4178         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
4179         MonoImage to the caller.
4180         (mono_init_internal): Save the opened image in a global variable.
4181         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
4182
4183         * reflection.c (resolve_object): Fix a leak.
4184
4185         * metadata.c: Fix the freeing of data in the generics caches.
4186         
4187         * metadata.c (free_generic_inst): Comment this out to fix the build.
4188         (free_generic_class): Ditto.
4189
4190         * metadata.c: Free cached generic methods, instantinations and classes when
4191         they are removed from the caches.
4192         (mono_metadata_free_type): Free the type itself.
4193
4194         * class.c: Free the result of mono_class_inflate_generic_type () in a few
4195         places.
4196
4197 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4198
4199         * boehm-gc.c: restrict managed allocs to __thread supporting
4200         architectures.
4201
4202 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
4203
4204         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
4205         (mono_generic_class_get_class): Fix a leak.
4206
4207         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
4208         mono_metadata_free_type ().
4209         (mono_metadata_inflate_generic_inst): Fix a leak.
4210
4211 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * mono-debug.c (free_header_data): Fix a leak missed earlier.
4214
4215         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
4216         mempool.
4217
4218         * mono-debug.c (mono_debug_close_image): Fix call to 
4219         g_hash_table_remove ().
4220
4221 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4222
4223         * icall-def.h: redirect all the string ctor to the managed
4224         CreateString () methods.
4225         * string-icalls.c, string-icalls.h: removed dead code for string
4226         ctors and icalls.
4227
4228 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * mono-debug.c: Fix memory leaks.
4231
4232 2007-09-14  Jonathan Chambers <joncham@gmail.com>
4233
4234         * threads-types.h: Implement mono_hazard_pointer_set and 
4235         mono_hazard_pointer_clear macros using do/while(0) to fix
4236         compilation with MSVC.
4237         
4238         Code is contributed under MIT/X11 license.
4239
4240 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4241
4242         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
4243         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
4244
4245 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4246
4247         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
4248         icalls.
4249
4250 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4251
4252         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
4253         managed-code allocated as well.
4254
4255 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * class.c (mono_class_is_assignable_from): Add support for generic variance.
4258
4259 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4260
4261         * boehm-gc.c: fixed the build after the AOT changes.
4262
4263 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4264
4265         * wrapper-types.h: Add an ALLOC wrapper type.
4266
4267         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
4268         reference managed allocator methods.
4269
4270 2007-09-12  Marek Safar  <marek.safar@gmail.com>
4271
4272         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
4273         of Type array and not MonoType, a fix suggested by Hari.
4274         
4275 2007-09-12  Jonathan Chambers <joncham@gmail.com>
4276
4277         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
4278         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
4279         
4280         Code is contributed under MIT/X11 license.
4281
4282 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4283
4284         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
4285
4286 2007-09-12  Marek Habersack  <mhabersack@novell.com>
4287
4288         * image.c (do_mono_image_open): if assembly file fails to open and
4289         MONO_IOMAP is in effect, try to find the path in a
4290         case-insensitive way.
4291
4292         * appdomain.c (mono_runtime_init): do not install postload hooks -
4293         tests show that MS.NET doesn't use anything of that sort to
4294         trigger the AppDomain.AssemblyResolve event.
4295         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
4296         made non-static.
4297         (mono_runtime_init): init portability helpers here.
4298
4299         * assembly.c (mono_assembly_load_with_partial_name): if other   
4300         attempts fail, trigger the AppDomain.AssemblyResolve event handler
4301         to resolve the assembly.
4302
4303         * domain-internals.h: added mono_try_assembly_resolve and marked
4304         it as internal.
4305
4306 2007-09-11  Jb Evain  <jbevain@novell.com>
4307
4308         * object-internals.h (MonoReflectionDynamicMethod): add
4309         a `MonoReflectionType *owner` field. The owner is used
4310         * reflection.c:
4311         (mono_reflection_create_dynamic_method): use the owner of the dynamic
4312         method as the class declaring the dynamic method.
4313         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
4314         dynamic method to the declaring type of the methodbuilder.
4315
4316 2007-09-11  Mark Probst  <mark.probst@gmail.com>
4317
4318         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
4319         rules for calling methods via reflection.
4320
4321 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * reflection.c (resolve_object): Add support for MonoGenericClass. 
4324         Inflate MonoType's.
4325
4326 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
4327
4328         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
4329         provide a managed method that does fast allocations without needing
4330         a managed->unmanaged transition. Boehm GC implementation currently
4331         enabled for ptrfree objects on sane architectures.
4332
4333 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4334
4335         * marshal.c, marshal.h: exported a couple of useful functions and
4336         added mono_mb_get_label () to easily handle backward branches.
4337
4338 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
4341
4342 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4343
4344         * loader.c (find_method): Fixed the regression introduced while
4345         fixing bug #81466.
4346
4347 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
4348
4349         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
4350         well.
4351         
4352         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
4353         icall.c reflection.c: Pass a MonoGenericContext argument to 
4354         mono_lookup_dynamic_token ().
4355
4356         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
4357         #82744.
4358         
4359 2007-09-09  Robert Jordan  <robertj@gmx.net>
4360
4361         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
4362         for generic methods.
4363
4364         * object.c (mono_object_get_virtual_method): Handle generic methods.
4365         Fixes bug #78882.
4366
4367         Code is contributed under MIT/X11 license.
4368
4369 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4370
4371         * image.c: fix locking in mono_image_load_file_for_image ().
4372
4373 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
4374
4375         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
4376         used only as a cache: added an icall to fill it.
4377
4378 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
4379
4380         * reflection.h: exposed mono_reflection_free_type_info
4381         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
4382         since mono_reflection_bind_generic_parameters makes a copy of it.
4383         * reflection.c (free_type_info): subinfos should be freed.
4384         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
4385         made non static.
4386         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
4387         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
4388         this fixes #82695 and #81726.
4389    
4390
4391 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
4392
4393         * process.h, process.c:  added support for user profile/info in
4394           ProcessStartInfo. For now only Windows works.
4395
4396 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4397
4398         * metadata.c: consider the generic arguments when comparing
4399         signatures (bug #82614).
4400
4401 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4402
4403         * cil-coff.h, image.c: updated assembly loader to cope with the
4404         PE32+ 64 bit file format.
4405
4406 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4407
4408         * assembly.c, class.c, domain.c, loader.c: remove useless
4409         inclusion of cil-coff.h.
4410
4411 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
4412
4413         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
4414         if interface is marked with CoClassAttribute. 
4415    
4416         Code is contributed under MIT/X11 license.
4417
4418 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4419
4420         * sgen-gc.c: ensure no object from the to space is copied again or finalized
4421         if it's seen twice in major collections.
4422
4423 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4424
4425         * sgen-gc.c: big objects are not copied to the gray area, but they
4426         need to be considered for scanning, too, if they are brought alive
4427         by an object ready for finalizations or a survived one.
4428
4429 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4430
4431         * sgen-gc.c: properly account the number of disappearing links when
4432         they are nullified.
4433
4434 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4435
4436         * sgen-gc.c: share the code to scan the registered roots between the
4437         different types of collections.
4438
4439 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4440
4441         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
4442
4443 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4444
4445         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
4446         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
4447
4448 2007-08-28  Mark Probst  <mark.probst@gmail.com>
4449
4450         * security-manager.c (mono_security_manager_get_methods):
4451         LinkDemandSecurityException now has 2 arguments instead of 3.
4452
4453 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
4454
4455         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
4456         platforms which need it.
4457
4458 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4459
4460         * sgen-gc.c: unregister thread data structures with a pthread_key_t
4461         dtor.
4462
4463 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4464
4465         * threads.c: free the thread static data on thread exit.
4466
4467 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
4468
4469         * class.c: walk the hierarchy to find the generic definition for
4470         a class (fixes runtime part of bug #82498).
4471
4472 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
4475         ...
4476
4477         * image.c (mono_image_close): Here. Hopefully fixes #82510.
4478
4479 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4480
4481         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
4482
4483 2007-08-24  Robert Jordan  <robertj@gmx.net>
4484
4485         * appdomain.c: don't perform the ':'->';' substitution on Win32.
4486
4487 2007-08-24  Jb Evain  <jbevain@novell.com>
4488
4489         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
4490         for byref types.
4491
4492 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4493
4494         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
4495         #82286.
4496
4497 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4498
4499         * assembly.c: Fix a warning.
4500         
4501 2007-08-23  Marek Habersack  <mhabersack@novell.com>
4502
4503         * appdomain.c: parse the <runtime> section looking for the probing
4504         element with the 'privatePath' attribute, which sets additional
4505         directories in which the runtime should look for assemblies.
4506
4507 2007-08-23  Robert Jordan  <robertj@gmx.net>
4508
4509         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
4510         Fixes #82499.
4511
4512 2007-08-23  Martin Baulig  <martin@ximian.com>
4513
4514         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
4515         _mono_debug_init_corlib() and remove it from the header file.
4516
4517 2007-08-23  Martin Baulig  <martin@ximian.com>
4518
4519         * mono-debug-debugger.c
4520         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
4521         don't notify the debugger about it.
4522
4523         * mono-debug-debugger.h
4524         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
4525
4526 2007-08-23  Robert Jordan  <robertj@gmx.net>
4527
4528         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
4529         Code is contributed under MIT/X11 license.
4530
4531 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4532
4533         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
4534
4535 2007-08-22  Martin Baulig  <martin@ximian.com>
4536
4537         * mono-debug.c: Store debugging info on a per-domain basis and
4538         free it on domain unload.  Add support for unloading symbol files.
4539
4540         * mono-debug.h
4541         (MonoDebugList): New typedef.
4542         (MonoSymbolTable):
4543         - add `data_tables and `type_table'.
4544         - replace 'symbol_files' and `num_symbol_files' with a
4545           `MonoDebugList *'.
4546         (mono_debug_data_table): Removed.
4547         (mono_debug_list_add): New public function.
4548         (mono_debug_list_remove): New public function.
4549         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
4550         (mono_debug_init_2_memory): Renamed into
4551         mono_debug_open_image_from_memory().
4552         (mono_debug_close_image): New public function.
4553         (mono_debug_domain_create): Likewise.
4554         (mono_debug_domain_unload): Likewise.
4555         (MONO_DEBUGGER_VERSION): Bump to 60.
4556
4557         * mono-debug-debugger.h
4558         (MonoDebuggerEvent):
4559         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
4560         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
4561         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
4562         - rename `THREAD_CREATED' and `THREAD_EXITED' into
4563           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
4564         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
4565           meaning.
4566         (mono_debugger_add_symbol_file): Removed.
4567         (mono_debugger_add_type): Removed.
4568         (mono_debugger_lookup_type): Removed.
4569         (mono_debugger_lookup_assembly): Removed.
4570
4571         * domain.c
4572         (mono_domain_create): Call mono_debug_domain_create().
4573         (mono_init_internal): Call mono_debug_init_corlib().
4574
4575         * assembly.c
4576         (mono_assembly_close): Call mono_debug_close_image().
4577
4578 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
4579
4580         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
4581         mmap call.
4582
4583 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4584
4585         * sgen-gc.c: ensure section->pin_queue_end is initialized
4586         correctly when non pinning objects in the section have been found.
4587
4588 2007-08-22  Marek Habersack  <mhabersack@novell.com>
4589
4590         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
4591         containing a list of directories separated by ':'. MSDN docs say
4592         the directories should be separated with ';'. Part of a bugfix for
4593         bug #81446
4594
4595 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
4596
4597         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
4598         it should MonoType and not MonoClass.
4599
4600 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
4601
4602         * culture-info-table.h : regenerated.
4603
4604 2007-08-20  William Holmes  <billholmes54@gmail.com>
4605
4606         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
4607          to call ReplaceFile Kernel32 on windows or in io-layer.
4608         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
4609         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
4610          as an internal call.
4611
4612         Code is contributed under MIT/X11 license.
4613
4614 2007-08-20  Jb Evain  <jbevain@novell.com>
4615
4616         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
4617         and MONO_EXCEPTION_FIELD_ACCESS.
4618
4619         * debug-helpers.[c|h]: new mono_field_full_name function.
4620
4621 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4622
4623         * class.c: Removed class_security_level() and moved it to
4624         security-core-clr.c.
4625
4626         * security-core-clr.c, security-core-clr.h: class_security_level()
4627         is now public and renamed to mono_security_core_clr_class_level().
4628         It also looks for security attributes in the classes a class is
4629         nested in.
4630
4631 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4632
4633         * security-core-clr.c, security-core-clr.h: CoreCLR security
4634         utility functions.
4635
4636         * Makefile.am: Added security-core-clr.[ch].
4637
4638         * security-manager.c, security-manager.h: Functions and enum for
4639         setting and getting the security mode.
4640
4641         * class.c: CoreCLR security checks.
4642
4643 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4644
4645         * icall-def.h, process.c, process.h: implemented icall to get
4646         user/system processor times.
4647
4648 2007-08-17  Mark Probst  <mark.probst@gmail.com>
4649
4650         * domain.c, threads.c, class-internals.h, domain-internals.h: New
4651         reader-lock-free jit_info_table.
4652
4653 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
4656
4657         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
4658
4659         * object-internals.h (MonoException): Add missing _data member.
4660
4661 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4662
4663         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
4664         checking that only methods with matching qname or fqname are picked
4665         from implemented interfaces.
4666
4667 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4668
4669         * verify.c (do_newarr):added, do type verification of
4670         newarr ops, push the right value on the eval stack.
4671         * verify.c (mono_method_verify): use do_newarr
4672
4673
4674 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
4677         factored the common code into get_boxable_mono_type, which
4678         is now using mono_type_get_full, this fixed byref related tests.
4679
4680 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * class.c: added mono_type_get_full, this function has the same
4683         behavior of mono_class_get_full but the returned MonoType has
4684         all metadata of the associated token in case of a typespec token.
4685         * class.c: added mono_type_retrieve_from_typespec, used by 
4686         mono_type_get_full to retrieve the token type.
4687         * class.c (mono_class_create_from_typespec): changed to use
4688         mono_type_retrieve_from_typespec.
4689         * class.c (mono_ldtoken): changed to use mono_type_get_full
4690         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
4691         * class-internals.h: exported mono_type_get_full for internal use.
4692
4693 2007-08-16  Jb Evain  <jbevain@novell.com>
4694
4695         * domain.c (supported_runtimes): add entry for
4696         the 'moonlight' runtime version.
4697
4698 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * verify.c (mono_method_verify): small typo sliped in.  
4701
4702 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * verify.c (do_unbox_value): added, do type verification of
4705         unboxing ops
4706         * verify.c (mono_method_verify): use do_unbox_value
4707
4708
4709 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4710
4711         * verify.c (dump_stack_value): fixed typo, was printing string
4712         instead of object on stack.
4713         * verify.c (do_box_value): moved the byref check up as it leads
4714         to invalid code and should be done earlier.
4715         * verify.c: improved error messages for and ldobj
4716
4717 2007-08-15  William Holmes  <billholmes54@gmail.com>
4718
4719         * marshal.c (emit_marshal_custom): Omit the call to 
4720           marshal_native_to_managed when calling native to managed 
4721           and the argument is specified as an out argument.
4722
4723         Code is contributed under MIT/X11 license.
4724
4725 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * verify.c: fixed the type checks for generics, function pointers and vectors.
4728         Added type verification for ldobj and ldtoken. The verifier
4729         would segfault if header or signature of a method contained references
4730         to non-existant types.
4731
4732 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4733
4734         * marshal.c (cominterop_get_ccw): Patch from
4735         Bill Holmes to no walk up interface hierarchy. 
4736         All parent methods should be present in the interface for COM.
4737    
4738         Code is contributed under MIT/X11 license.
4739
4740 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4741
4742         * marshal.c (emit_marshal_com_interface): Patch from
4743         Bill Holmes to handle COM Interfaces as return values
4744         for native->managed calls.
4745    
4746         Code is contributed under MIT/X11 license.
4747
4748 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
4749
4750         * marshal.c (cominterop_get_idispatch_for_object): Implement
4751         for runtime callable wrappers.
4752    
4753         Code is contributed under MIT/X11 license.
4754
4755 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
4756
4757         * pedump.c (main): changed from mono_init to mono_init_from_assembly
4758         so 2.0 types are accessible
4759
4760
4761 2007-08-13  Miguel de Icaza  <miguel@novell.com>
4762
4763         * domain.c (mono_init_internal): Call mono_assembly_load_friends
4764         once we load mscorlib.   Due to the order in which we initialize,
4765         the mono_assembly_load_full routine that loads mscorlib did not
4766         load friends.   We now load it once we load the
4767         mono_defaults.internals_visible_class class. 
4768
4769         * assembly.c: Expose the mono_load_friend_assemblies method.
4770
4771 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
4772
4773         * verify.c: improved the handling of boxing, better
4774         type checking for unary ops and conversion. Fix bug
4775         regarding managed pointer compatibility checking
4776
4777 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
4780
4781         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
4782
4783 2007-08-09  Raja R Harinath  <rharinath@novell.com>
4784
4785         * reflection.c (dup_type): Remove.
4786         * class.c (dup_type): Remove.
4787         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
4788         instead of the dodgy 'dup_type'.
4789         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
4790         handle the case where 'dup_type' needed the second argument.
4791
4792 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * domain.c: Fix a warning.
4795
4796 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4797
4798         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
4799         checking that methods with the same fqname are not overridden
4800         with a method from an ancestor.
4801
4802 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * threads.c (free_thread_static_data_helper): Avoid a crash if
4805         thread->static_data is not yet set.
4806
4807 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
4808
4809         * marshal.c: Use correct image when emitting
4810         native wrapper for COM calls.
4811    
4812         Code is contributed under MIT/X11 license.
4813
4814 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
4815
4816         * icall-def.h, security.c, security.h :
4817           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
4818
4819 2007-08-07  Martin Baulig  <martin@ximian.com>
4820
4821         * mono-debug-debugger.h
4822         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
4823
4824         * domain.c (mono_domain_free): Call
4825         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
4826
4827 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4828
4829         * verify.c (check_underflow, check_overflow): error message now returns IL offset
4830         * verify.c (in_same_block): code should test if either offset is inside the clauses
4831         * verify.c (mono_method_verify): push the exception into the eval stack of exception
4832         and filter blocks
4833
4834 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * image.c (mono_image_close): Fix a leak.
4837
4838         * object.c (mono_runtime_invoke_array): Avoid using alloca.
4839
4840         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
4841
4842 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
4843
4844         * domain.c, threads.c, threads-types.h: fix memory retention issue
4845         with thread static variables not being cleared on domain unload.
4846         Reuse thread static slots after domain unload.
4847
4848 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
4851         nullable type.
4852
4853         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
4854         now done in mono_runtime_invoke_array.
4855
4856         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
4857         receiver is a nullable type.
4858
4859         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
4860         generic parameter.
4861
4862 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
4863
4864         * marshal.c: Implement COM Objects as return type for 
4865         managed->unmanaged calls. Added Release calls for COM Object
4866         out/return values in managed->unmanaged calls.
4867
4868         Code is contributed under MIT/X11 license.
4869
4870 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
4871
4872         * threads.h, threads-type.h: move the hazard pointer declarations
4873         to the private header.
4874
4875 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
4876
4877         * file-io.c, appdomain.c: memory leak fixes.
4878
4879 2007-08-02  Dick Porter  <dick@ximian.com>
4880
4881         * socket-io.c
4882         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
4883         SO_REUSEADDR setting into io-layer/sockets.c.
4884
4885 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
4888         from Object when called on a generic parameter. Fixes #82211.
4889
4890 2007-08-01  Dick Porter  <dick@ximian.com>
4891
4892         * file-io.c (convert_share): Test FileShare values bit-by-bit.
4893         Fixes bug 79250 yet again.
4894
4895 2007-07-30  Martin Baulig  <martin@ximian.com>
4896
4897         Merged the `debugger-dublin' branch.
4898
4899         * mono-debug.h
4900         (MonoDebugDataTable): New typedef.
4901         (MonoDebugMethodAddressList): New typedef.
4902         (MonoDebugWrapperData): Removed.
4903         (MonoDebugSymbolTable): Removed `current_data_table',
4904         `current_data_table_size', `current_data_table_offset'.
4905         (MonoDebugDataItemType): Moved into mono-debug.c.
4906         (MonoDebugMethodJitInfo): Remove `address'.
4907         (mono_debug_data_table): New global variable.
4908         (mono_debug_lookup_method_addresses): New public function.
4909         (mono_debug_find_method): Take a `MonoMethod *', not a
4910         `MonoDebugMethodInfo *'.
4911
4912         * mono-debug.c: Drop support for the old symbol tables.
4913
4914 2007-06-28  Martin Baulig  <martin@ximian.com>
4915
4916         * mono-debug.c (mono_debug_debugger_version): New public variable.
4917
4918 2007-07-31  William Holmes  <billholmes54@gmail.com>
4919
4920         * metadata.c Changed mono_type_create_from_typespec to not insert
4921           the type into the hash map until after
4922           do_mono_metadata_parse_type has completed.
4923         Fixes Bug #82194
4924         Code is contributed under MIT/X11 license.
4925
4926 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
4927
4928         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
4929         generic parameter. Fixes #82211.
4930
4931 2007-07-27  Jb Evain  <jbevain@novell.com>
4932
4933         * pedump.c (dump_metadata, dump_metadata_header): dump
4934         versions contained in the metadata header.
4935
4936 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4937
4938         * threads.c: register small_id_table with the GC.
4939
4940 2007-07-27  Mark Probst  <mark.probst@gmail.com>
4941
4942         * threads.c, threads.h, class-internals.h, object-internals.h:
4943         Hazard pointers, to be used by lock-free parallel algorithms.
4944
4945 2007-07-26  Dick Porter  <dick@ximian.com>
4946
4947         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
4948         routine on non-windows platforms, as I've not managed to think of
4949         a non-kludgy way of doing this.  Finishes off bug 78739.
4950
4951 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
4952
4953         * object.c: properly setup interface_bitmap in proxy vtables.
4954
4955 2007-07-25  Marek Habersack  <mhabersack@novell.com>
4956
4957         * appdomain.c (get_shadow_assembly_location): do not use TickCount
4958         to create unique shadow copy target directories, use the domain's
4959         serial number instead. Each domain gets a unique target directory
4960         that way.
4961
4962         * domain.c (mono_domain_create): added code to increment domain
4963         shadow copy serial number and cache the value in the current
4964         domain structure.
4965
4966         * domain-internals.h (struct _MonoDomain): added a new field -
4967         shadow_serial to hold the serial number used in generation of
4968         shadow-copy directories. This is to make sure that the directory
4969         name is unique for each and every domain created. We avoid a race
4970         condition with overriding assemblies already in use by other app
4971         domains.
4972
4973 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
4974
4975         * class.c (mono_bounded_array_class_get): fixed memory leak when 
4976         binding generic parameters.
4977
4978 2007-07-24  Raja R Harinath  <rharinath@novell.com>
4979
4980         * metadata.c (do_mono_metadata_parse_generic_class): Use
4981         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
4982         error.
4983
4984 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
4985
4986         * loader.c, class-internals.h, reflection.c: removed the per-method
4987         generics hashtable: we use the global one through the call of
4988         mono_class_inflate_generic_method ().
4989
4990 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4991
4992         * class.c, metadata.c, class-internals.h: introduce yet another
4993         generics global cache for inflated methods (fixes 98% of the perf
4994         issue in bug #81806).
4995
4996 2007-07-23  Raja R Harinath  <rharinath@novell.com>
4997
4998         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
4999         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
5000         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
5001         return a MonoGenericInst containing (a copy) of those types.
5002         (mono_metadata_inflate_generic_inst): Update to changes.
5003         (mono_metadata_parse_generic_inst): Likewise.
5004         (mono_get_shared_generic_inst): Likewise.
5005         * reflection.c (mono_class_bind_generic_parameters): Likewise.
5006         (mono_reflection_bind_generic_method_parameters): Likewise.
5007         * metadata-internals.h: Likewise.
5008         * icall.c (free_generic_context): Kill.
5009         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
5010
5011         * reflection.c (reflection_methodbuilder_to_mono_method): Use
5012         mono_metadata_type_dup.
5013         * marshal.c (mono_mb_create_method): Likewise.
5014
5015         * metadata.c (mono_metadata_type_dup): Rename from
5016         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
5017         MonoImage.  Handle a few more cases, esp. when no mempool is given.
5018         * marshal.c, metadata-internals.h: Update to changes.
5019
5020 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5021
5022         * class.c: fixed a small leak for array classes and removed warning.
5023
5024 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * loader.c (mono_method_get_param_token): Make this work on generic methods.
5027         Return 0x8000000 for return parameters. Fixes #82161.
5028
5029 2007-07-21  Marek Habersack  <grendello@gmail.com>
5030
5031         * appdomain.c (get_shadow_assembly_location): append the current
5032         ticks value to the path. Avoids overwriting the same assemblies by
5033         several threads at the same time.
5034
5035 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5036         and Raja R Harinath  <rharinath@novell.com>
5037
5038         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5039         Simplify slightly.
5040         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
5041         property for testing if a method is a generic method definition.
5042
5043 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5044
5045         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
5046
5047 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5048
5049         * verify.c: used function from private branch, reverted to the one in class.h 
5050
5051 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5052
5053         * verify.c: a typo slipped in and the code wont compile
5054
5055 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
5058         disabled box instruction as it is doing the wrong thing
5059         improved stack dump messages, now it is easier to debug type related issues
5060
5061
5062 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
5063
5064         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
5065
5066 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
5069         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
5070         grouped with class and valuetype. This change will simply 
5071         the code as it should be handled just like unmanaged pointers.
5072
5073 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5074
5075         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
5076
5077 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * verify.c: several stack merge issues fixed, reference comparisons now
5080         check the type size. strict type check now works correctly.
5081         added more uses of IS_MANAGED_POINTER macro.
5082         fixed issues pointed by running the test suite against .net.
5083         
5084
5085 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5086
5087         * class.c, loader.c, class-internals.h: Removed the
5088         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
5089         defines.
5090
5091         * icall.c: Better error checking in some internal reflection
5092         methods.
5093
5094 2007-07-18  William Holmes  <billholmes54@gmail.com>
5095
5096         * filewatcher.c : removed unused variable 'filename' in 
5097           ves_icall_System_IO_FSW_SupportsFSW
5098
5099 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
5100
5101         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
5102         obsolete, removed.
5103
5104 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
5107         
5108         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
5109
5110 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
5113         Implement generics support.
5114         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5115
5116         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
5117         type_args and method_args arguments.
5118         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
5119         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5120         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
5121
5122 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
5123
5124         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
5125           It adds a rootimage parameter to mono_reflection_get_type_internal,
5126           adds new function mono_reflection_get_type_with_rootimage and use
5127           the rootimage to resolve the types instead of the current image
5128
5129 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5130
5131         * culture-info-table.h: Forgot to update after r78304.
5132
5133 2007-07-13  Raja R Harinath  <rharinath@novell.com>
5134
5135         * class.c (mono_class_is_open_constructed_type)
5136         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
5137
5138 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
5139
5140         * class.c (mono_bounded_array_class_get):  method fails if used with
5141         an incomplete TypeBuilder enum (no basetype field), fixed it by 
5142         avoiding calculating the size for such array as it cannot be instantiated.
5143         Fix bug #82015
5144
5145 2007-07-12  Raja R Harinath  <rharinath@novell.com>
5146
5147         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
5148         field.
5149         * metadata.c, reflection.c: Update to changes.
5150
5151 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
5152
5153         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
5154         mono_class_is_valid_enum, they are used to valide a enum when loading.
5155         * reflection.c: used new functions to throw TypeLoadException when and
5156         invalid enum is build with TypeBuilder. Fixes #82018
5157   
5158 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5159
5160         * object.c: forgot commit of mono_class_setup_methods () to access
5161         iface->methods.
5162         * object-internals.h: added a few more handy fields to
5163         MonoIMTCheckItem.
5164
5165 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
5168         iface->methods.
5169
5170 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5171
5172         * class-internals.h, object-internals.h, object.c: IMT-based
5173         interface invocation core from Massimiliano Mantione
5174         (massi@ximian.com) with a reworked arch-specific interface,
5175         bsearch implementation and a few bugfixes and memory savings by me.
5176
5177 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
5178
5179         * class.c (mono_class_create_from_typedef): mono would segfault if 
5180         an enum did not have a __value field. It now throws a TypeLoadException
5181         for such cases. Fix bug #82022
5182
5183 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
5186
5187 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5188
5189         * class.c (mono_class_init): If a class is already inited but has
5190         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
5191
5192 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5193
5194         * class.c: Properly handle the case of an unimplemented interface
5195         method.  Fixes: 81673.
5196
5197 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5198
5199         * class-internals.h, object.c: cleanup patch from massi: use
5200         MonoVTable->interface_bitmap since the vtable interfaces offset array
5201         is going away.
5202
5203 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5204
5205         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
5206         GetMDStreamVersion icall instead.
5207
5208 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
5209
5210         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
5211         not use mono_dl_build_path() with a full library name: makes
5212         fallbacks to libgaim and libfam work.
5213
5214 2007-07-06  William Holmes  <billholmes54@gmail.com>
5215
5216         * assembly.c: Added a continue statement in probe_for_partial_name when
5217          parse_assembly_directory_name fails.  Fixes : 82002
5218
5219 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
5220
5221         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
5222         and added a verification  for TYPEDBYREF.
5223         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
5224         make native int interchangeable with int32 and some small cleanup and formating.
5225         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
5226         handle byref of byref.
5227         * verify.c (push_local): handle byref of byref.
5228         * verify.c (do_binop): invalid mix of values is unverifiable
5229         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
5230         added visibility checks
5231         * verify.c (field related method): added visibility checks
5232         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
5233
5234 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
5235
5236         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
5237         string.
5238
5239 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * profiler.c (mono_profiler_load): Fix an off-by-one error.
5242
5243         * marshal.c (emit_marshal_string): When returning a string from managed code,
5244         allways make a copy even for unicode strings. Fixes #81990.
5245
5246 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
5247
5248         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
5249         of byref generic inst types (bug #81997).
5250
5251 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
5252
5253         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
5254         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
5255
5256 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
5257
5258         * marshal.c (emit_marshal_string): Add support for unicode strings in
5259         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
5260
5261 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5262
5263         * verify.c: field load/store are now verified, missing only access checks now
5264
5265 2007-06-28  Martin Baulig  <martin@ximian.com>
5266
5267         * mono-debug.c (mono_debug_debugger_version): New public variable.
5268
5269 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
5270
5271         * locales.c: When constructing DateTimeFormat or NumberFormat for
5272         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
5273         MonoCultureInfo contructed from the current locale is always
5274         read-only and has UseUserOverride set to true. All MonoCultureInfo
5275         instances returned for GetCultures have both IsReadOnly and
5276         UseUserOverride set to true. Fixes part of bug #81930.
5277
5278 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
5279
5280        * icall-def.h: Update System.__ComObject icalls
5281        * marshal.c: Avoid managed transition (and object creation)
5282        when looking up COM interface in RCW.
5283        * marshal.h: Ditto.
5284        
5285        Code is contributed under MIT/X11 license.
5286
5287 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
5290         to avoid crashes during assembly unloading.
5291
5292 2007-06-22  Raja R Harinath  <rharinath@novell.com>
5293
5294         Fix MethodInfo.IsGenericMethodDefinition
5295         * reflection.c (mono_reflection_bind_generic_method_parameters):
5296         Rearrange code to ensure we always uses a generic method definition.
5297         * class.c (mono_class_inflate_generic_method_full): Set
5298         'generic_container' field only for generic method definitions.
5299         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5300         Use presense of 'generic_container' field as indication of being a
5301         generic method definition.
5302
5303 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
5304
5305         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5306
5307         * object-internals.h: Reflect changes in the layout of the managed Delegate
5308         class.
5309         
5310         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
5311         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
5312         runtime memory used by the dynamic method. Fixes #77146.
5313
5314 2007-06-21  Dick Porter  <dick@ximian.com>
5315
5316         * file-io.h: 
5317         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
5318         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
5319         81767.
5320
5321 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5322
5323         * reflection.c (method_encode_methodspec): Add a tripwire.
5324         * class.c (inflate_generic_type): The fully open generic type is
5325         not the same as the generic type definition.
5326
5327 2007-06-21  Martin Baulig  <martin@ximian.com>
5328
5329         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
5330
5331         * mono-debug-debugger.h
5332         (MonoDebuggerBreakpointInfo): Removed.
5333         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
5334         (mono_debugger_remove_breakpoint): Likewise.
5335         (mono_debugger_breakpoint_callback): Likewise.
5336         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
5337
5338 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5339
5340         * metadata.c (mono_metadata_lookup_generic_class): The fully open
5341         generic type is not the same as the generic type definition.
5342         * class.c (mono_generic_class_get_class): Likewise.
5343
5344 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
5345
5346         * icall.c: The second argument to 
5347         System.Reflection.MethodBase.GetMethodFromHandleInternalType
5348         is a MonoType not a MonoClass.
5349
5350 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5351
5352         * verify.c: support for function pointers in the verifier
5353
5354 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5355
5356         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
5357
5358 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
5359
5360         * assembly.c: removed Mono.Data.SqliteClient from the list of
5361         forward-compatible assemblies as it breaks the ABI (bug #81899).
5362
5363 2007-06-19  Raja R Harinath  <rharinath@novell.com>
5364
5365         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
5366         lookup/update with the loader lock.
5367         * reflection.c (mono_class_bind_generic_parameters): No need to
5368         protect mono_metadata_lookup_* with the loader lock.
5369         * class.c (inflate_generic_type): Likewise.
5370         
5371         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
5372         on a generic instantiated type.
5373
5374 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
5375
5376         *verify.c: produce meanfull error messages on verification error
5377         *verify.c: fixed some cases of verification errors reported as validation errors
5378         *pedump.c: fixed the error name array, now it shows validation errors properly
5379         *verify.h: fixed the contant that should be used for verification errors
5380
5381 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
5382
5383         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
5384         for bug #77596, 81858 and 80743 (generics data structures on domain
5385         unload).
5386
5387 2007-06-15  Raja R Harinath  <rharinath@novell.com>
5388
5389         Avoid allocating 'MonoGenericContext' on the heap.
5390         * class-internals (_MonoMethodInflated::context): Make field
5391         inline, not a pointer.
5392         * loader.c (method_from_methodspec): Allocate 'new_context' on the
5393         stack.  Use the context embedded within the inflated method as the
5394         hash key, rather than 'new_context'.
5395         * class.c (inflate_generic_context): Simplify.  Return a struct
5396         rather than allocating on the heap.
5397         (mono_class_inflate_generic_method_full): Update to changes.  Now,
5398         doesn't salt away a copy of the context -- simplifying the
5399         lifetime rules of a 'MonoGenericContext *'.
5400         (mono_method_get_context): Return pointer to embedded context.
5401         (setup_generic_array_ifaces): Allocate temporary context on stack.
5402         * reflection.c (inflate_mono_method): Likewise.
5403         (mono_reflection_bind_generic_method_parameters): Likewise.
5404         Use the context embedded within the inflated method as the hash key.
5405
5406         Avoid a source of allocation of 'MonoGenericContext'.
5407         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
5408         and 'cached_context' fields into embedded 'MonoGenericContext' field.
5409         * class.c: Update to changes.
5410         (mono_generic_class_get_context): Simplify drastically.  Now just
5411         returns a pointer to the field.
5412         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
5413         argument as a const pointer.
5414         (mono_metadata_generic_context_equal): Likewise.
5415         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
5416         Update to changes.
5417
5418 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
5419
5420         * verify.c improved the handling of brtrue/brfalse, factored out common code
5421
5422 2007-06-14  Raja R Harinath  <rharinath@novell.com>
5423
5424         Kill MonoGenericMethod.
5425         * class-internals.h (MonoGenericContext::method_inst): Rename from
5426         'gmethod' and convert to a MonoGenericInst.
5427         (MonoGenericMethod): Remove.
5428         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
5429         * loader.c (method_from_methodspec): Update to changes.  Use a
5430         MonoGenericContext as the key to the hashtable.
5431         * metadata.c (mono_metadata_generic_context_equal): Rename from 
5432         'mono_metadata_generic_method_equal' and take MonoGenericContext.
5433         (mono_metadata_generic_context_hash): Likewise from
5434         'mono_metadata_generic_method_hash'.  Change hash function.
5435         (mono_metadata_load_generic_params): Update to changes.
5436         (mono_get_shared_generic_method): Remove.
5437         * metadata-internals.h (mono_get_shared_generic_method): Remove.
5438         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
5439         (inflate_generic_context): Likewise.
5440         (mono_class_inflate_generic_method_full): Likewise.
5441         (setup_generic_array_ifaces): Likewise.
5442         (mono_class_create_from_typespec): Likewise.
5443         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
5444         (method_encode_methodspec): Update callsite.
5445         (reflection_methodbuilder_to_mono_method): Update to changes.
5446         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
5447         MonoGenericContext as the key to the hashtable.
5448         (inflate_mono_method): Update to changes.
5449
5450         * class-internals.h (MonoGenericMethod::container): Remove.
5451         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5452
5453 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
5454
5455         * profiler-private.h, profiler.c, profiler.h: added API to profile
5456         exception events.
5457
5458 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5459
5460         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
5461
5462 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5463
5464         * verify.c: method invocation is now validated, now we verify parameter types on stack.
5465         Fixed overflow and underflow not aborting the verification process.
5466
5467 2007-06-13  Mark Probst  <mark.probst@gmail.com>
5468
5469         * class-internals.h (MonoStats): Added stats entries for dynamic
5470         code allocations.
5471
5472 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * loader.c (mono_free_method): Free header->locals and header->clauses.
5475
5476         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
5477         dynamic case.
5478
5479         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
5480
5481         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
5482
5483 2007-06-12  Raja R Harinath  <rharinath@novell.com>
5484
5485         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
5486         the tables.
5487
5488 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5489
5490         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
5491
5492 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5493
5494         MonoGenericMethod on a diet
5495         * class-internals.h (_MonoMethodInflated::reflection_info): Move
5496         here ...
5497         (_MonoGenericMethod::reflection_info): ... from here.
5498         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
5499         Update to changes.
5500         * reflection.c (inflate_mono_method): Likewise.
5501         (mono_reflection_bind_generic_method_parameters): Likewise.
5502
5503 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5504
5505         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
5506         *verify.c: factored long ldarg forms to share code with short forms
5507
5508 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5509
5510         *verify.c: fixed code formating factored some duplicate code
5511         into a new function
5512
5513         *verify.h: fixed binary incompatibility introduced earlier
5514
5515         *pedump.c: fixed formating
5516
5517 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5518
5519         Fix assertion when disassembling Mono.C5.dll
5520         * loader.c (method_from_methodspec): Avoid inflating a method
5521         twice with the same context.  If the methodref is inflated, use
5522         the declaring method instead.
5523
5524         * class.c (mono_class_from_generic_parameter): Fix case similar to
5525         bug #81830 handled below, but for method containers.
5526
5527 2007-06-10  Raja R Harinath  <harinath@gmail.com>
5528
5529         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
5530         get_shared_generic_class.  Directly inflate the instance.
5531         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
5532         (inflate_generic_class): Delete.
5533         (get_shared_generic_class): Delete.  Move setting of
5534         'cached_class' and 'cached_context' ...
5535         * metadata.c (mono_metadata_lookup_generic_class): ... here.
5536
5537         * metadata.c (mono_metadata_lookup_generic_class): Change
5538         signature to take the components of a MonoGenericClass rather than
5539         an allocated MonoGenericClass.  Change semantics to be intern-like.
5540         * reflection.c (mono_class_bind_generic_parameters): Update to
5541         changes.  Make locking region tighter.
5542         * class.c (inflate_generic_class): Update to changes.
5543         (get_shared_generic_class): Likewise.
5544         * metadata-internals.h: Likewise.
5545
5546         * reflection.c (mono_class_bind_generic_parameters): Take and
5547         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
5548         (mono_reflection_bind_generic_parameters): Use
5549         'mono_class_bind_generic_parameters' rather than duplicate the code.
5550         * class.c (mono_bounded_array_class_get): Update to changes.
5551         * object-internals.h: Likewise.
5552
5553         * reflection.c (mono_class_bind_generic_parameters): Only support
5554         parameterizing generic type definitions.  Remove support for other
5555         open types.
5556
5557 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
5560
5561         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
5562         in the dynamic case.
5563
5564 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
5565
5566         * threads.c: When cleaning up thread, reset the Background bit.
5567         Fixes bug #81720.
5568
5569 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
5570
5571        * metadata.c: Move variable declarations to top of scope.
5572        * verify.c: Move variable declarations to top of scope.
5573
5574        Code is contributed under MIT/X11 license.
5575
5576 2007-06-08  Raja R Harinath  <rharinath@novell.com>
5577
5578         * reflection.c (mono_class_bind_generic_parameters): Replace
5579         open-coded loop with mono_metadata_inflate_generic_inst.
5580
5581         * class.c (get_shared_generic_class): Don't call
5582         mono_get_shared_generic_inst.  Use the container's own
5583         'class_inst'.
5584
5585         * metadata.c (mono_metadata_load_generic_params): Move
5586         initialization of 'context' field here from ...
5587         * class.c (mono_class_create_from_typedef): ... here, and ...
5588         * loader.c (mono_get_method_from_token): ... here.
5589
5590         * class.c (get_shared_generic_class): Rename from
5591         mono_get_shared_generic_class and make static.
5592         (mono_get_shared_generic_inst): Move to metadata.c.
5593         * loader.c (mono_get_shared_generic_method): Likewise.
5594         * class-internals.h, metadata-internals.h: Update to changes.
5595
5596         Fix #81830
5597         * class.c (mono_class_from_generic_parameter): Don't assume a
5598         generic container owner exists.  Generic containers from monodis
5599         don't have any.
5600
5601 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
5602
5603         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
5604         * verify.h: new typedefs to returns the non-verifiable status
5605         * verify.c: initial implementation of generics, stack merging and object compatibility check
5606
5607 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5608
5609         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5610         a MonoInternalHashTable again (fixed bug in internal hash table
5611         code).
5612
5613 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5614
5615         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5616         MonoInternalHashTable again (fixed bug in internal hash table
5617         code).
5618
5619 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5620
5621         * class.c, image.c, class-internals.h, domain.c,
5622         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
5623         changes.  Have to figure out what makes them break the SWF
5624         regression.
5625
5626 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5627
5628         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5629         a MonoInternalHashTable now.
5630
5631 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5632
5633         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5634         MonoInternalHashTable now.
5635
5636 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
5639         invoke_impl code.
5640
5641         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
5642
5643         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
5644         dependent trampoline.
5645
5646         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5647
5648         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
5649
5650 2007-05-29  Robert Jordan  <robertj@gmx.net>
5651
5652         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
5653
5654 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
5657
5658 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
5659
5660        * marshal.c: Fix interface lookup loops for
5661        cominterop_get_com_slot_for_method and 
5662        cominterop_get_method_interface. Only need to lookup
5663        if type is a class, else use interface type method is on.
5664
5665        Code is contributed under MIT/X11 license.
5666
5667 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
5668
5669         * reflection.c: HasSecurity can be present even if no specially 
5670         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
5671         SecurityAttribute). Fix CAS regression tests on buildbot.
5672
5673 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
5674
5675        * appdomain.c: Add configure checks for header files.
5676        * image.c: Add configure checks for header files.
5677        * file-io.c: Add configure checks for header files.
5678        * debug-mono-symfile.c: Add configure checks for header files.
5679        * threadpool.c: Add configure checks for header files.
5680        * console-io.c: Add configure checks for header files.
5681        * profiler.c: Add configure checks for header files.
5682        * rawbuffer.c: Add configure checks for header files.
5683        * icall.c: Add configure checks for header files.
5684        * rand.c: Add configure checks for header files.
5685        * socket-io.c: Add configure checks for header files.
5686
5687        Code is contributed under MIT/X11 license.
5688
5689 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * reflection.c (mono_custom_attrs_from_builders): Remove the 
5692         assertion as it breaks the build.
5693         
5694         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
5695
5696         * reflection.c (lookup_custom_attr): Make a copy here too.
5697
5698         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
5699         dynamic images.
5700
5701         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
5702         images.
5703
5704         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
5705         info.
5706
5707 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
5708
5709         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
5710         (load_cattr_value): Ditto.
5711
5712 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
5713
5714         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
5715
5716 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
5717
5718         * threads.c: In "start_wrapper", set apartment_state to MTA if
5719         apartment_state is Unknown and we're running on 2.0 profile or
5720         higher.
5721         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
5722         to main method, then set apartment_state to Unknown on 1.0 profile,
5723         and MTA on 2.0 profile.
5724
5725 2007-05-16  Jb Evain  <jb@nurv.fr>
5726
5727         * class-internals.h (MonoDefaults): Add an attribute_class and
5728           customattribute_data_class.
5729         * domain.c (mono_init_internal): Populate them.
5730         * reflection.c: Use them to remove duplicates. Make a vew
5731         MonoClass variables `static'.
5732
5733 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
5734
5735         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
5736         step in implementing IMT, so that all isinst checks now can go
5737         through the bitmap.
5738         This was needed because vtables for TransparentProxy need to look
5739         like the vtable of the "target" class, so they need to point to
5740         its interface bitmap directly.
5741
5742         * object.c: inside "mono_class_create_runtime_vtable" and
5743         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
5744
5745 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
5746
5747         * object-internals.h
5748           culture-info.h : added territory field in MonoCulture and
5749           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
5750         * locales.c : fill territory field above too.
5751         * culture-info-table.h : regenerated.
5752
5753 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
5754
5755         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
5756         Fixes #81599.
5757
5758 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
5759
5760         * object.c: Always initialize apartment, even if 
5761         there is no custom attributes on entry point.
5762         
5763         Code is contributed under MIT/X11 license.
5764
5765 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
5766
5767         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
5768         * metadata.c: If no encoding is set, check for unicode
5769         on class.
5770         
5771         Code is contributed under MIT/X11 license.
5772
5773 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5774
5775         * threads.c: Handle if mono_thread_current returns NULL 
5776         
5777         Code is contributed under MIT/X11 license.
5778
5779 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5780
5781         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
5782         in start_wrapper. Added mono_thread_init_apartment_state and
5783         mono_thread_cleanup_apartment_state.
5784         * object.c: Initialize thread apartment state on main thread
5785         by checking for STAThreadAttribute on entry point.
5786         * object-internals.h: Add apartment_state field to MonoThread.
5787         * threads-types.h: Add unmanaged definition of 
5788         System.Threading.ApartmentState, MonoThreadApartmentState.
5789         
5790         Code is contributed under MIT/X11 license.
5791         
5792 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
5793
5794         * class.c: Fix windows build.
5795         * class-internals.h: Fix windows build.
5796         
5797         Code is contributed under MIT/X11 license.
5798
5799 2007-05-08  Robert Jordan  <robertj@gmx.net>
5800
5801         * process.c (CreateProcess_internal):
5802         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
5803         .CreateNoWindow was specified. Fixes #81496.
5804
5805 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5806
5807         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
5808         step in implementing IMT, replaced it with two compact arrays
5809         (interfaces_packed and interface_offsets_packed) and a bitmap that
5810         is used for isinst checks (interface_bitmap).
5811
5812         * class.c: (compare_interface_ids): compare function to pass to
5813         bsearch when looking for an interface with a given id.
5814         (mono_class_interface_offset): reimplemented using bsearch on
5815         interfaces_packed, getting the offset from interface_offsets_packed.
5816         (print_implemented_interfaces): utility debugging function.
5817         (setup_interface_offsets): reworked to initialize interfaces_packed,
5818         interface_offsets_packed and interface_bitmap.
5819
5820         * object.c: replaced all accesses to "MonoClass.interface_offsets"
5821         with uses of interfaces_packed and interface_offsets_packed.
5822
5823 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5824
5825         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
5826         mono_class_interface_offset prototype to wrap all accesses to
5827         "MonoClass.interface_offsets".
5828
5829         * class.c: Implemented mono_class_interface_offset, and wrapped all
5830         accesses to "MonoClass.interface_offsets".
5831
5832         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
5833         "MonoClass.interface_offsets".
5834
5835 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5836
5837         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
5838         GetMethodFromHandle overloads (bug #78637).
5839
5840 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5841
5842         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
5843         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
5844
5845 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
5846
5847         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
5848         #81498.
5849
5850         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
5851         gracefully.
5852         (mono_custom_attrs_from_index): Ditto.
5853
5854         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
5855         Fixes #81501.
5856
5857 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
5860         is now allocated from a mempool.
5861
5862 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
5865         caller holds threads_lock, leading to deadlocks. Fixes #81476.
5866
5867 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
5870         mono_loader_clear_error () too late. Fixes #81463.
5871
5872 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
5873
5874         * culture-info-table.h : regenerated.
5875
5876 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
5879         is missing.
5880
5881 2007-04-25  Dick Porter  <dick@ximian.com>
5882
5883         * Makefile.am: Put the mingw enforced-optimisation back into the
5884         PLATFORM_WIN32 section.
5885
5886 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
5887
5888         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
5889         patch.
5890
5891         * image.c (mono_image_load_module): New API function to load a module reference.
5892
5893         * image.c (load_modules): Load modules lazily. Fixes #80812.
5894
5895         * class.c (mono_class_from_typeref): Use mono_image_load_module.
5896         
5897         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
5898
5899         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
5900         to mono_image_load_module_dynamic.
5901
5902 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
5903
5904         * marshal.c: Fix calling convention for CCW on non-windows
5905         platforms. STDCALL on windows, CDECL everywhere else to work 
5906         with XPCOM and MainWin COM.
5907         
5908         Code is contributed under MIT/X11 license.
5909
5910 2007-04-23  Martin Baulig  <martin@ximian.com>
5911
5912         Fix #80969.
5913
5914         * loader.c
5915         (method_from_memberref): Added `gboolean *used_context' argument.
5916         (mono_get_method_from_token): Likewise.
5917         (mono_get_method_full): Don't insert the method in the cache when
5918         `used_context' is true.
5919
5920 2007-04-23  Raja R Harinath  <rharinath@novell.com>
5921
5922         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
5923
5924         * reflection.c (mono_reflection_bind_generic_parameters): Don't
5925         create new MonoTypes for returned types.
5926         * class.c (mono_generic_class_get_class): Export mono-internal.
5927         * class-internals.h: Update to changes.
5928
5929 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
5930
5931         * threadpool.c, threadpool.h, icall-def.h: patch from
5932         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
5933
5934 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
5935
5936         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
5937         
5938         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
5939
5940         * threads.c (mono_thread_get_stack_bounds): New helper function.
5941
5942         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
5943         Correctly compute stack bounds when attaching. Fixes #81394.
5944
5945 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
5946
5947         * reflection.c: fix handling of doubles in custom attributes
5948         for the arm-fpa format (bug #81368).
5949
5950 2007-04-18  Raja R Harinath  <rharinath@novell.com>
5951
5952         * reflection.c (assembly_add_win32_resources): Mildly relax an
5953         bounds check to let the end pointer point just past the end of the
5954         allocated buffer.  (may fix #81384)
5955
5956 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5957
5958         * culture-info-table.h : regenerated.
5959
5960 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
5963         the thread is aborted early.
5964
5965 2007-04-05  Dick Porter  <dick@ximian.com>
5966
5967         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
5968         FindFirstFile()/FindNextFile() to find entries.  This lets the
5969         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
5970         81038.
5971
5972         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
5973         the parameters of
5974         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
5975
5976 2007-04-04  Martin Baulig  <martin@ximian.com>
5977
5978         * debug-helpers.c
5979         (mono_method_desc_full_match): Add support for nested classes.
5980
5981 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
5984
5985 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
5988         waiting for too many threads.
5989
5990 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
5991
5992         * environment.c: Fix return value check on uname so we can get the 
5993         executing version on Solaris operating systems.
5994
5995 2007-03-28  Jb Evain  <jbevain@gmail.com>
5996
5997         * class.c (mono_type_get_name_recurse): Complete the
5998         fix for the creation of assembly qualified names for
5999         pointer types. Fixes #81208.
6000
6001 2007-03-27  Dick Porter  <dick@ximian.com>
6002
6003         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
6004         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
6005         changed.
6006
6007         * threads.c
6008         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
6009         the value of ReleaseMutex().
6010
6011 2007-03-27  Dick Porter  <dick@ximian.com>
6012
6013         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
6014         in little-endian order, not network endian, so must be converted
6015         to host endian here.  Fixes bug 80593.
6016
6017 2007-03-22  Jb Evain  <jbevain@gmail.com>
6018
6019         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
6020         qualified names for pointer types. Fixes #81208.
6021
6022 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
6023
6024         * marshal.c: Add support for PreserveSigAttribute. 
6025         
6026         Code is contributed under MIT/X11 license.
6027
6028 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
6029
6030         * process.c: Fix endianness issues. Fixes #81126.
6031
6032         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
6033         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
6034
6035         * image.c (mono_image_lookup_resource): Make this work on big-endian
6036         machines.Change API contract so the caller needs to free the return value.
6037         
6038         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
6039         API change.
6040         
6041 2007-03-14  Martin Baulig  <martin@ximian.com>
6042
6043         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
6044         mono_type_get_desc() as well.
6045
6046 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
6047
6048         * icall.c:  Fix environ access in VS.  
6049         
6050 2007-03-13  Alp Toker  <alp@atoker.com>
6051
6052         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
6053         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
6054         #63841.
6055
6056 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
6057
6058         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
6059         circular references among dynamic methods. Fixes #81091.
6060
6061         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
6062
6063 2007-03-09  Martin Baulig  <martin@ximian.com>
6064
6065         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
6066
6067 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
6068
6069         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
6070         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
6071         
6072         Code is contributed under MIT/X11 license.
6073         
6074 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
6075
6076         * loader.c: Reapply patch for bug #79424.
6077
6078 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6079
6080         * metadata.c (mono_type_to_unmanaged): Only convert object to
6081         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
6082
6083 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
6084
6085         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
6086         (and incorrectly set) is_reference field from MonoGenericInst.
6087
6088 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6089
6090         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
6091         a little earlier.
6092
6093         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
6094
6095         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
6096
6097 2007-03-05  Miguel de Icaza  <miguel@novell.com>
6098
6099         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
6100         FileOptions.1 value to mean "temporary", map that to
6101         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
6102
6103         Fixes 80688
6104
6105 2007-03-03  Marek Habersack  <mhabersack@novell.com>
6106
6107         * appdomain.c: implement MS .Net style shadow copying. Copies of
6108         the assemblies are made in a subdirectory of the dynamic base
6109         directory, the assembly names are preserved.
6110         Copy .mdb and .config files along with the assemblies being shadowed.
6111
6112 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
6115         (emit_marshal_handleref): Ditto.
6116
6117         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
6118         on Visual C++. Fixes #80671.
6119
6120 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
6121
6122         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
6123         for clone operations.
6124
6125 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * marshal.c: Fix warnings.
6128
6129 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
6130
6131         * loader.c: allow case-insensitive matching of the dll name
6132         in dllmap handling when prefixed with "i:".
6133
6134 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
6135
6136         * threads.c: Fix #ifdef for dummy_apc function for VS.
6137
6138 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
6139
6140         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
6141
6142 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
6143         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
6144         giving precedence to the methods with a fully qualified name
6145         (InterfaceName.MethodName) when building the interface sections
6146         of the vtable.
6147
6148 2007-02-16  Dick Porter  <dick@ximian.com>
6149
6150         * threadpool.c (append_job): Fix fast-path array handling, so it's
6151         less likely the array will grow exponentially when the load is
6152         heavy.
6153
6154 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6155
6156         * metadata-internals.h, loader.c: fix dllmap lookup order
6157         for non-function maps, too, and prepare for fallback code.
6158
6159 2007-02-12  Robert Jordan  <robertj@gmx.net>
6160
6161         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
6162         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
6163         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
6164         GlobalFree. Fixes a part of bug #77075.
6165
6166 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
6167
6168         * loader.c: implemented typedef parent in field memberref.
6169
6170 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
6171
6172         * marshal.c: Fix warnings and remember to call Release on
6173         IUnknown of RCW.
6174         
6175         Code is contributed under MIT/X11 license.
6176
6177 2007-02-10  Miguel de Icaza  <miguel@novell.com>
6178
6179         * class-internals.h: Add MonoHandleRef definition, and
6180         handleref_class to mono_defaults. 
6181
6182         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
6183         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
6184
6185         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
6186         (do nothing on this stage)
6187         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
6188         (emit_marshal_handleref): New method, used for argument handling
6189         of HandleRefs. 
6190
6191 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
6192
6193         * class.c (mono_class_setup_parent): Lazily init com types.
6194         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
6195         init com types.
6196         * object.c (mono_remote_class_vtable): Lazily init com types.
6197         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
6198         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
6199         * domain-internals.h: Expose mono_init_com_types.
6200         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
6201         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
6202         Add support for COM Callable Wrapper marshalling.
6203         * marshal.h: Add icall definitions.
6204         * gc.c: Handle freeing of CCWs in finalizer code.
6205         
6206         Code is contributed under MIT/X11 license.
6207
6208 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
6209
6210         * reflection.c: changed all the signature encoding code to use
6211         a variable-sized buffer.
6212
6213 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6214
6215         * marshal.c: locking fixes: never take the loader lock
6216         or other runtime locks when holding the marshal lock
6217         (fixes bug#80664).
6218
6219 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
6220
6221         * marshal.c: make the delegate function pointer mapping
6222         work for the moving GC.
6223
6224 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
6225
6226         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
6227         for bug #80618.
6228
6229 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6230
6231         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
6232         gmodule.
6233
6234 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
6235
6236         * threadpool.c: made the code moving-GC safe.
6237
6238 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6239
6240         * assembly.c, boehm-gc.c, class-internals.h, class.c,
6241         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
6242         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
6243         warning cleanup.
6244         * reflection.c: warning cleanup, some threading and moving GC fixes.
6245
6246 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
6247
6248         * class.c, loader.c: create the needed Set/Get/Address array methods
6249         as well as the .ctors in mono_class_init (), fixes bug #80567.
6250
6251 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
6252
6253         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
6254         we doesn't decrease its alignment. Should fix the sparc build.
6255
6256 2007-01-24  Dick Porter  <dick@ximian.com>
6257
6258         * socket-io.c
6259         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
6260         Create the returned object if we need to ignore an unsupported
6261         socket option.  Fixes a segfault reported by Atsushi.
6262
6263 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6264
6265         * class.c, object.c: restrict GC-tracked fields to
6266         UIntPtr fields used inside corlib, so we provide better
6267         type info to the GC and also allow broken packing as in
6268         bug #80580.
6269
6270 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
6271
6272         * sgen-gc.c: removed duplicated function.
6273
6274 2007-01-19  Miguel de Icaza  <miguel@novell.com>
6275
6276         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
6277         value that means that the value is not supported, but that we
6278         should not return a failure, but instead report this as a
6279         successful operation.
6280
6281 2007-01-19  Raja R Harinath  <rharinath@novell.com>
6282
6283         Fix tests/bug79956.2.il
6284         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
6285         (mono_generic_class_get_class): If the generic definition in an
6286         enum, copy over other fields related to it.
6287
6288 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
6289
6290         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
6291         genericinst enums (bug #79215).
6292
6293 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
6294         * class.c: Fix bug 80307.
6295
6296 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
6297
6298         * image.c: if the file table is not present, try to load
6299         all the modules, since we don't have info about them
6300         having or not metadata (bug #80517).
6301         * assembly.c: allow mono_assembly_load_references () to
6302         work for netmodules.
6303
6304 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6305
6306         * image.c, metadata-internals.h, object.c: execute module
6307         cctors when running on the 2 runtime if present (bug #80487).
6308
6309 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6310
6311         * icall.c: optimized InitializeArray() on bigendian.
6312
6313 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
6314
6315         * icall.c: fix for the broken ARM FPA double format.
6316
6317 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
6318
6319         * icall.c: handle endian issues for r4 and r8 types, too, in
6320         the InitializeArray() icall.
6321
6322 2007-01-15  Miguel de Icaza  <miguel@novell.com>
6323
6324         * loader.c (mono_loader_error_prepare_exception): Clear the error
6325         once we have extracted the information from it, do this before we
6326         call into the JIT's class loading mechanisms.
6327
6328         * object.c (mono_class_create_runtime_vtable): Do not clear the
6329         loader error before calling mono_class_get_exception_for_failure
6330         as the loader error is needed inside
6331         mono_class_get_exception_for_failure to throw the error (thinko).
6332
6333         Fixes #80521
6334         
6335 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
6336
6337         * reflection.c: align fields rva data so it's faster to load at
6338         runtime.
6339
6340 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6341
6342         Prepare to simplify GenericMethod handling.
6343         * class-internals.h (mono_method_get_context): New accessor function.
6344         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
6345         rather than directly accessing '->context' field.
6346
6347         * class-internals.h (_MonoGenericParam.method): Move ...
6348         (_MonoGenericContainer): ... here.  Add into union with klass field.
6349         * class.c, icall.c, loader.c, metadata.c, reflection.c:
6350         Update to changes.
6351
6352 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
6353
6354         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
6355         the wrapper type enum and reduce relocations.
6356
6357 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6358
6359         * reflection.c (inflate_mono_method): Reuse method instantiation
6360         from the generic method, if available.
6361
6362 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6363
6364         * marshal.c (emit_marshal_variant): Fix conv_arg
6365         type in last commit, based on whether parameter is byref.
6366         
6367 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6368
6369         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
6370         marshalling.
6371         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
6372         MONO_TYPE_OBJECT back for VARIANT support.
6373
6374 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6375
6376         * marshal.c, marshal.h, icall-def.h: Implement 
6377         Marshal.ReAllocCoTaskMem.
6378
6379 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
6380
6381         * marshal.c: memory retention fixes: use the proper
6382         image cache for runtime_invoke method lookups.
6383
6384 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
6385
6386         * mempool.c: added code to help debug mempool allocations.
6387
6388 2007-01-11  Dick Porter  <dick@ximian.com>
6389
6390         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
6391         support (experimenting with faking it with IP_MTU_DISCOVER for
6392         systems that don't have IP_DONTFRAGMENT.)
6393         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
6394         icall.
6395
6396         * icall-def.h: new System.Net.Sockets.Disconnect icall.
6397
6398         * socket-io.h: Add new fields to MonoSocketAsyncResult
6399         corresponding to the new ones in Socket.cs.
6400
6401 2007-01-11  Raja R Harinath  <rharinath@novell.com>
6402
6403         Fix IronPython regression mentioned in #80249
6404         * metadata.c (do_mono_metadata_parse_generic_class): Clear
6405         'cached_context' field, since it may have been initialized as a
6406         side-effect of metadata parsing.
6407
6408         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
6409         (_MonoGenericClass.cached_class): Move here and rename from lone
6410         remaining field of ...
6411         (_MonoInflatedGenericClass): ... this.  Remove.
6412         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
6413         to changes.
6414
6415         Fix mcs/tests/test-128.cs regression.
6416         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
6417         2007-01-10 change below.
6418         [MONO_TYPE_OBJECT]: Recurse into array case.
6419
6420 2007-01-11  Raja R Harinath  <harinath@gmail.com>
6421
6422         * class-internals.h (mono_get_inflated_generic_class): Remove.
6423         * class.c (mono_get_inflated_generic_class): Remove.
6424         (mono_generic_class_get_class): Rename from
6425         mono_class_create_generic.
6426         (mono_class_from_mono_type) [GENERICINST]: Use it.
6427         * reflection.c, metadata.c: Update to changes.  Use
6428         'mono_class_from_mono_type'.
6429
6430 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
6431
6432         * reflection.c: use passed type when encoding an array element
6433         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
6434
6435 2007-01-09  Robert Jordan  <robertj@gmx.net>
6436
6437         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
6438         result arguments (someDelegate.EndInvoke (unrelatedAres)).
6439         Fixes bug #80392.
6440
6441 2007-01-09  Raja R Harinath  <rharinath@novell.com>
6442
6443         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
6444
6445         * object.c (set_value): Avoid aliasing between type->data.klass
6446         and type->data.generic_class.
6447
6448         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
6449
6450 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6451
6452         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
6453         between type->data.klass and type->data.generic_class.
6454
6455 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
6456
6457         * marshal.c: In MS.NET, StringBuilder objects are not copied by
6458         value in out parameters.
6459
6460 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6461
6462         Simplify invariant for MonoGenericClass::klass field.
6463         * class.c (mono_class_create_generic): Verify 'klass' is null.
6464         * metadata.c (do_mono_metadata_parse_generic_class): Don't
6465         initialize 'klass' field.
6466
6467 2007-01-05  Raja R Harinath  <rharinath@novell.com>
6468
6469         Ongoing work to avoid redundant data and simplify invariants.
6470         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
6471         'generic_class', and change type to a GenericInst.
6472         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
6473         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
6474
6475 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
6476
6477         * class.c : skip io-layer under PLATFORM_WIN32.
6478
6479 2007-01-03  Tor Lillqvist  <tml@novell.com>
6480
6481         Fix #80305: In a bundled executable, look in the bundled exe
6482         assembly to determine the runtime version. Add the possibility to
6483         bundle also the machine.config file.
6484         
6485         * assembly.c (mono_assembly_open_from_bundle): Make
6486         non-static. Allow being called even if we have no bundled
6487         assemblies, and return NULL right away in that case.
6488
6489         * domain-internals.h: Declare mono_assembly_open_from_bundle()
6490         here.
6491
6492         * domain.c (app_config_parse): Take an assembly exe file name as
6493         parameter instead of a config file name. Check for a bundled
6494         config file for that assembly by calling
6495         mono_config_string_for_assembly_file() (see below) before looking
6496         for one in the file system.
6497         (get_runtimes_from_exe): Corrsponding change to call of
6498         app_config_parse().
6499         (get_runtimes_from_exe): Check for bundled assembly exe file first
6500         by calling mono_assembly_open_from_bundle(). If no bundled
6501         assembly exe file is found, call mono_image_open() as before to
6502         look it up in the file system.
6503
6504         * mono-config.c: Add variable bundled_machinec_onfig.
6505         (mono_config_string_for_assembly_file): New function.
6506         (mono_config_for_assembly): Move code snippet that looks for a
6507         bundled assembly .config file into the above new function. Call
6508         it.
6509         (mono_register_machine_config, mono_get_machine_config): New
6510         functions to set and retrieve
6511
6512         * assembly.h: Declare mono_register_machine_config().
6513
6514         * mono-config.h: Declare mono_get_machine_config() and
6515         mono_config_string_for_assembly_file().
6516
6517         * icall.c: No declaration of environ necessary on Win32. It is
6518         declared (as a macro expanding to a function call) in stdlib.h.
6519         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
6520         New internal mono function. Returns the value of
6521         mono_get_machine_config() as a Mono string.
6522
6523         * icall-def.h: Add get_bundled_machine_config().
6524
6525 2007-01-04  Raja R Harinath  <rharinath@novell.com>
6526
6527         Remove redundant field
6528         * class-internals.h (_MonoGenericContext.container): Remove field.
6529         * loader.c (mono_method_get_signature_full): Don't parse a
6530         "container" for a signature parse when the signature is inflated
6531         immediately.
6532         (method_from_methodspec): Likewise, for a generic_inst.
6533         * class.c, metadata.c, reflection.c: Update to changes.
6534
6535 2006-01-04  Raja R Harinath  <rharinath@novell.com>
6536
6537         * class-internals.h (_MonoGenericClass): Rename 'context' field to
6538         'cached_context', and change semantics -- it starts off NULL, and
6539         is initialized on demand.
6540         * class.c (mono_generic_class_get_context): New accessor to
6541         replace 'context' field accesses.
6542         (mono_class_get_context): New helper.
6543         (*): Update to changes.
6544         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
6545
6546 2007-01-03  Miguel de Icaza  <miguel@novell.com>
6547
6548         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
6549         before the memcpy.   Fixes Marshal2 regression.
6550
6551 2007-01-02  Jb Evain  <jbevain@gmail.com>
6552
6553         * blob.h: add a MONO_TYPE_ENUM definition
6554         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
6555         fix the encoding of arrays of enums in custom attributes.
6556
6557         Fixes #79666.
6558
6559 2007-01-01  Miguel de Icaza  <miguel@novell.com>
6560
6561         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
6562         string is null terminated, but only cut the string short if it
6563         overflows the buffer.   
6564         
6565         (mono_string_to_byvalstr): Also fix this routine.   The code here
6566         was not properly terminating a string (it was only terminated
6567         because of the previous catch-all memset). 
6568
6569         I left the memset, because I do not know if applications expect
6570         the runtime to clear this region. 
6571
6572         Fixes #79944.
6573
6574         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6575         Clear the error before returning to unmanaged code to prevent the
6576         runtime from being confused later on (fixes  80420).
6577         (ves_icall_type_from_name): Always call mono_loader_clear_error
6578         after parsing a type that could have failed.
6579         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
6580
6581         * loader.c (mono_loader_clear_error): Fix indentation.
6582
6583 2006-12-28  Martin Baulig  <martin@ximian.com>
6584
6585         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
6586
6587 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
6588
6589         * reflection.c: patch from Rolf Bjarne Kvinge to fix
6590         getting a token for an EnumBuilder.
6591
6592 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
6593
6594         * reflection.c: be more careful in case resource generation
6595         fails to create the data array.
6596
6597 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
6598
6599         * sgen-gc.c: write barrier for clone and fix unregister handles.
6600
6601 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
6602
6603         * reflection.c: some fixes needed in the generics code for the moving GC.
6604
6605 2006-12-22  Robert Jordan  <robertj@gmx.net>
6606
6607         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
6608         account. Fixes bug #80299.
6609
6610 2006-12-21  Raja R Harinath  <rharinath@novell.com>
6611
6612         Fix WaitHandle usage in delegates.
6613         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
6614         * object.c (mono_wait_handle_new): Use the property set method to
6615         initialize the handle.
6616         (mono_wait_handle_get_handle): New.
6617         * threadpool.c (mono_async_invoke): Use it.
6618         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
6619         Likewise.
6620         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
6621
6622 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
6623
6624         * marshal.c (emit_marshal): Call emit_marshal_variant and
6625         emit_marshal_com_interface when applicable.
6626         (emit_marshal_variant, emit_marshal_com_interface): Add
6627         methods for this case and remove if's from emit_marshal_object.
6628         
6629 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
6630
6631         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
6632
6633 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
6634
6635         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
6636         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
6637         and GlobalFree on Windows. Remove FIXME.
6638
6639 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
6640
6641         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
6642         implementation for managed objects.
6643
6644 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
6645
6646         * object.c: implemented code to be used for checking
6647         that no reference field overlaps with non-references.
6648
6649 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6650
6651         * threadpool.c: fix queue code to be compatible with the
6652         moving GC.
6653
6654 2006-12-18  Miguel de Icaza  <miguel@novell.com>
6655
6656         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
6657         in structures by throwing ArgumentNullException.
6658
6659         (emit_marshal_safehandle): Also when they are null parameters.
6660
6661         (emit_marshal_safehandle): Add support for ref
6662         SafeHandles parameters
6663
6664 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
6665
6666         * profiler.c: updated to use the mono-dl API instead of
6667         gmodule.
6668
6669 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6670
6671         * profiler.c: updated to use the mono-dl dynamic loading
6672         API instead of gmodule.
6673
6674 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
6675
6676         * profiler.c: use readlink, older versions of glib don't have
6677         g_file_read_link ().
6678
6679 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6680
6681         * profiler.c: try to detect the path to mono if libc fails to provide
6682         a useful name (bug #80286).
6683
6684 2006-12-16  Raja R Harinath  <rharinath@novell.com>
6685
6686         Fix #80242
6687         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
6688         instance, use the generic type definition instead.
6689         (ves_icall_Type_GetNestedTypes): Likewise.
6690         * class.c (mono_class_create_generic): Always set the
6691         nested_classes of a generic instance to NULL, even if the generic
6692         type definition has nested types.
6693
6694 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
6695
6696         * marshal.c (mono_string_from_bstr): Revert previous Windows change
6697         and fix on Linux.
6698         
6699 2006-12-15  Miguel de Icaza  <miguel@novell.com>
6700
6701         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
6702         my arguments were in the wrong order.   I also fixed the Windows
6703         version which seems to have had the same issue.
6704
6705         (mono_free_bstr): On Unix, this is g_free.
6706         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
6707         conversions (for the tests in corlib to pass).
6708
6709 2006-12-14  Miguel de Icaza  <miguel@novell.com>
6710
6711         * marshal.c (emit_ptr_to_object_conv): For now, ignore
6712         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
6713         exception if a ref SafeHandle in a struct has changed).
6714         
6715         (emit_struct_conv): Do not perform layout checks for classes
6716         derived from SafeHandle, as those are specially handled. 
6717
6718         (emit_object_to_ptr_conv): Add support for
6719         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
6720
6721         (emit_marshal_safehandle): Implement conversion of return values
6722         of safehandles (MARSHAL_ACTION_CONV_RESULT).
6723         
6724         * threads.c: WaitHandle now is compiled with two different handles
6725         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
6726         for 2.0.
6727         
6728         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
6729         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
6730         these routines to cope with both kinds of fields.
6731
6732 2006-12-12  Miguel de Icaza  <miguel@novell.com>
6733
6734         * metadata.c (mono_type_to_unmanaged): Handle the case where
6735         type->data.klass is a SafeHandle, and in that case, return the
6736         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
6737         MONO_MARSHAL_CONV_SAFEHANDLE. 
6738
6739 2006-12-11  Miguel de Icaza  <miguel@novell.com>
6740
6741         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
6742         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
6743         calling emit_marshal_object.
6744
6745         (emit_marshal_safehandle): Implement marshalling of
6746         SafeHandle parameters (no ref support yet).
6747
6748         (MarshalAction): Document the defines as I implement
6749         them for SafeHandle.
6750
6751         (emit_marshal_object): indentation police.
6752
6753         * class-internals.h: Define MonoSafeHandle.
6754         Add safehandle_class to MonoDefaults type.
6755
6756         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
6757         list of classes to check for fields. 
6758
6759         * domain.c (mono_init_internal): Add SafeHandle to the list of
6760         mono_defaults loaded.
6761
6762 2006-12-15  Raja R Harinath  <rharinath@novell.com>
6763
6764         Fix #80253
6765         * reflection.c (mono_reflection_bind_generic_parameters): If the
6766         generic type definition is a type builder, ensure that it is fully
6767         initialized before instantiating it.  Kill some dead code.
6768
6769 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
6770
6771         * object.c: clear the loader_error () before loading
6772         more metadata stuff (bug #80258).
6773
6774 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
6775
6776         * icall.c, icall-defs.h: type modifiers icalls for
6777         parameters and properties.
6778
6779 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
6780
6781         * object.c, icall.c: fixed warnings.
6782
6783 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6784
6785         * marshal.c: fixed a couple of leaks and coding style in a few places.
6786
6787 2006-12-08  Dick Porter  <dick@ximian.com>
6788
6789         * process.c: Cope with NULL ProcessStartInfo arguments on windows
6790         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
6791         80173.
6792
6793 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
6794
6795         * process.c: ProcessStartInfo may have only filename set and
6796         arguments can be NULL.
6797
6798 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6799
6800         * icall.c: fix leak found by Robert Jordan.
6801
6802 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6803
6804         * marshal.c, marshal.h: generate managed method to access an element
6805         of a multi-dimensional array.
6806
6807 2006-11-30  Paolo Molaro (lupus@ximian.com)
6808
6809         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
6810
6811 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6812
6813         * icall.c: back out GetFields () fix until the serialization code is
6814         fixed to not depend on the incorrect behaviour.
6815
6816 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
6817
6818         * profiler.c: provide defaults if none are set.
6819
6820 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
6821
6822         * Makefile.am, attrdefs.h: new public header file with
6823         constants for attributes for use by embedders.
6824
6825 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
6826
6827         * icall.c: GetFields () fix for bug #80064.
6828
6829 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
6830
6831         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
6832         removed long unused icalls.
6833
6834 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
6835   
6836         * marshal.c: 
6837                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
6838                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
6839                 can be generated without a delegate class.
6840                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
6841         
6842         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
6843
6844 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6845
6846         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
6847         #80069.
6848
6849 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
6850
6851         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
6852         icall-def.h: added icalls needed by System.GC.
6853
6854 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
6855
6856         * loader.c: ensure the class in catch clauses is handled
6857         correctly for generics methods (fixes bug#79980).
6858
6859 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
6860
6861         * monitor.h, monitor.c: added mono_locks_dump () function
6862         to help debug deadlocks involving managed locks.
6863
6864 2006-11-13  Dick Porter  <dick@ximian.com>
6865
6866         * file-io.c (get_file_attributes): If the file is a symlink try
6867         and get the stat data for the target, but also add the
6868         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
6869         the specs for the windows symlink support, but will probably have
6870         to be reworked when I have test data from a vista machine.  Fixes
6871         bug 79887.
6872
6873 2006-11-13  Dick Porter  <dick@ximian.com>
6874
6875         * gc.c (mono_domain_finalize): 
6876         * marshal.c (mono_delegate_begin_invoke): 
6877         * threadpool.c (socket_io_init, mono_thread_pool_init)
6878         (mono_thread_pool_finish): 
6879         * monitor.c (mono_monitor_try_enter_internal): 
6880         * threads.c (mono_thread_resume, mono_thread_init)
6881         (mono_thread_suspend_all_other_threads)
6882         (mono_thread_execute_interruption): 
6883         * appdomain.c (mono_domain_unload): Check for NULL error returns
6884         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
6885         75733.
6886
6887 2006-11-11  Miguel de Icaza  <miguel@novell.com>
6888
6889         * process.c
6890         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
6891         Only close the handle if the value of the handle is not
6892         INVALID_HANDLE_VALUE.  This just makes the process a bit more
6893         robust.
6894
6895         Improvement for #75733, so that we do not run into this problem. 
6896
6897         
6898         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
6899         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
6900         internal variables.  Fixes #79462 
6901         
6902
6903 2006-11-09  Dick Porter  <dick@ximian.com>
6904
6905         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
6906         Use poll() not select().  Fixes bug 79397.
6907
6908 2006-11-09  Raja R Harinath  <rharinath@novell.com>
6909
6910         Fix #79872
6911         * assembly.c (mono_assembly_load_from_full): Check that the given
6912         image has an assembly manifest.
6913
6914 2006-11-09  Ankit Jain  <jankit@novell.com>
6915
6916         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
6917         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
6918         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
6919
6920 2006-11-07  Dick Porter  <dick@ximian.com>
6921
6922         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6923         Put the old resolver behaviour back for pre-2.0 profiles.
6924
6925 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
6926
6927         * threadpool.c: precise GC and locking fixes.
6928
6929 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
6930
6931         * class.c: don't load types that have an explicit unaligned
6932         managed reference. Provide better info in the TypeLoad exception.
6933         Part of the fix for bug #79744.
6934         * object.c: use the correct check for class type load issues.
6935
6936 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
6937
6938         * class.c: enforce alignment of fields with managed references
6939         even when Pack=1 is forced by the user (bug #77788).
6940
6941 2006-11-03  Dick Porter  <dick@ximian.com>
6942
6943         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6944         If the address reverse lookup fails, return it as the hostname
6945         anyway.  Fixes bug 79721.
6946
6947 2006-11-03  Dick Porter  <dick@ximian.com>
6948
6949         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
6950         Fix build on Windows.
6951
6952 2006-11-02  Dick Porter  <dick@ximian.com>
6953
6954         * icall-def.h: 
6955         * object-internals.h: 
6956         * exception.c (mono_get_exception_thread_interrupted): 
6957         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
6958         Fixes bug 74525.
6959
6960         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
6961         Check for pending Thread.Interrupt.
6962
6963 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
6964         * loader.c: Fixed bug 79684.
6965
6966 2006-10-27  Dick Porter  <dick@ximian.com>
6967
6968         * file-io.c (get_file_attributes): Force symlinks to directories
6969         to be returned as a regular file.  Fixes bug 79733.
6970 2006-10-26  Dick Porter  <dick@ximian.com>
6971
6972         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
6973         CreateFile to open a directory then we need to set the
6974         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
6975
6976 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
6977
6978         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
6979         friends.
6980
6981 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6982
6983         * sgengc.c: small cleanup of timer code.
6984
6985 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
6986
6987         * sgen-gc.c: fix some warnings and start adding support for
6988         complete object removal on domain unload.
6989
6990 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
6991
6992         * assembly.c: build_assembly_name should not consider a version
6993         number without build or revision number invalid. Fixes bug #79715.
6994
6995 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
6996
6997         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
6998         call kernel32 function OutputDebugString directly.
6999         
7000         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7001         
7002 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
7003
7004         * reflection.c: small cleanup, using a function to insert a MonoString
7005         in the string heap.
7006
7007 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
7008
7009         * reflection.c: moving GC fixes.
7010
7011 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
7012
7013         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
7014         all the objects with finalizers belonging to an unloading appdomain.
7015
7016 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
7017
7018         * sgen-gc.c: added ability to allocate even when the nursery is fully
7019         pinned and fixed a couple of bugs.
7020
7021 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * threads.h: Revert the last change for now.
7024
7025         * threads.h (mono_thread_get_pending_exception): Rename this to
7026         mono_thread_get_undeniable_exception ().
7027
7028 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
7029
7030         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
7031         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
7032         when fname does not refer to valid assembly. This result in a more
7033         meaningful error message.
7034         * exception.c: added mono_get_exception_bad_image_format2 which 
7035         constructs a BadImageFormatException using the ctor taking a custom
7036         message and the file name. Passing in a NULL msg results in a default
7037         message.
7038         * exception.h: define mono_get_exception_bad_image_format2 function.
7039         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
7040         when file name pointed to an invalid IL image. Use 
7041         mono_get_exception_file_not_found2 to construct FileNotFoundException,
7042         as this results in a more meaningful error message.
7043
7044 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
7047         #79465.
7048
7049 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * metadata.c (mono_type_size): Change the align parameter to guint32 for
7052         consistency with the other _size functions.
7053         (mono_type_stack_size): Ditto.
7054
7055         * class.c object.c icall.c: Fix warnings caused by the above change.
7056
7057         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
7058
7059         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
7060
7061         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
7062
7063 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7064
7065         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
7066         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
7067         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
7068         threadpool.h, threads-types.h: mark more internal functions.
7069
7070 2006-10-11  Dick Porter  <dick@ximian.com>
7071
7072         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7073         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
7074         reproduce the bug even before applying the fix.)
7075
7076 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
7077
7078         * reflection.c: allow retrieving attributes for arguments in generic
7079         methods (bug #79241).
7080
7081 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
7082
7083         * debug-mono-symfile.c: properly check fopen () result (found by
7084         coverity).
7085
7086 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
7087
7088         * reflection.c: make error message clearer and fixed two
7089         issuelets found by Coverity.
7090
7091 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
7092
7093         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
7094
7095 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7096
7097         * object-internals.h, gc-internal.h, profiler-private.h:
7098         mark internal functions.
7099
7100 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7101
7102         * reflection.c: put data in the text section.
7103         * icall.c: recognize more types in type_from_typename ().
7104         * process.c, marshal.c: added some GC FIXMEs.
7105
7106 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7107
7108         * loader.c: check for NULL before initializing.
7109
7110 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * gc.c (finalizer_thread): Use a non-alertable wait here.
7113
7114         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
7115         until the correct solution is found.
7116
7117 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7118
7119         * reflection.c (mono_module_get_object): Avoid an assert when operating on
7120         modules with no metadata. Fixes #79596.
7121
7122         * image.c (load_metadata_ptrs): Put back the error message when
7123         the #- heap is encountered since the support is not complete yet.
7124
7125 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7126
7127         * gc.c: do not allow the user to SuppressFinalize () a
7128         delegate because it would leak the trampoline if present.
7129
7130 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7131
7132         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
7133         PropertyPtr table.
7134
7135 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
7138
7139         * metadata.c (mono_metadata_get_param_attrs): Ditto.
7140
7141         * row-indexes.h: Add definitions for *Ptr tables.
7142
7143         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
7144
7145         * metadata.c (mono_metadata_translate_token_index): New helper function to
7146         translate table indexes used in uncompressed metadata.
7147         (mono_metadata_decode_table_row): Ditto.
7148         (mono_metadata_decode_table_row_col): Ditto.
7149
7150         * metadata.c: Add table schema for *Ptr tables.
7151
7152         * class.c loader.c: Use the new helper function to access the affected metadata
7153         tables.
7154         
7155         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
7156         #38532.
7157         
7158 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
7159
7160         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
7161         sequences which can be unbounded in size. Fixes #79583.
7162
7163 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
7164
7165         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
7166         static initialization.
7167
7168         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
7169
7170         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
7171
7172         * domain.c (mono_domain_free): Free up type_init_exception_hash.
7173
7174         * object.c (mono_runtime_class_init): Implement correct semantics when a static
7175         ctor fails, i.e. throw the same exception on subsequent accesses.
7176         
7177 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
7178
7179         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
7180         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
7181         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
7182         Handle marshalling of interfaces and VARIANTs contained in structs.
7183         
7184         Code is contributed under MIT/X11 license.
7185         
7186 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
7189         
7190         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
7191         mempool.
7192
7193 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7194
7195         * console-io.c: ignore previous SIGINT handler.
7196
7197 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
7200         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
7201         #79460, #79461, #79485.
7202
7203         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
7204
7205         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
7206         #79217.
7207
7208 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
7211         could be generated from it.
7212
7213 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
7214
7215         * rand.c: fix read loop to correctly handle EINTR.
7216
7217 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7218
7219         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
7220         internal calls are defined to keep methods closer to the declaring
7221         type and allow a significant reduction in runtime relocations and
7222         memory usage.
7223
7224 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
7225
7226         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
7227         exception message to have FileNotFoundException use the default
7228         assembly load error message. Fixes bug #79426.
7229         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
7230
7231 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7232
7233         * threadpool.c: (start_thread_or_queue) use the root domain when
7234         creating the thread instead of the async object one.
7235
7236 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
7237
7238         * class.c, object.c, class-internals.h, reflection.c:
7239         for arrays, store element_size inside MonoClass (speedup
7240         for array object creation).
7241
7242 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
7243
7244         * icall.c: fixed CodeBase to use the file name and not the module
7245         name (bug #79365).
7246
7247 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7248
7249         * mono-debug.c, mono-debug.h: export find_method as
7250         mono_debug_find_method ().
7251
7252 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7253
7254         * debug-helpers.c, class-internals.h: added a few functions useful
7255         when debugging under gdb.
7256
7257 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7258
7259         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
7260         characters that need special handling.
7261
7262 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
7263
7264         * mono-config.c: make the os/cpu specification more flexible,
7265         allowing lists and negation.
7266
7267 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
7268
7269         * marshal.c: COM Interop fixes. Handle case where method->klass.
7270         is interface. Handle BSTR/MonoString when null. Use CDECL as 
7271         calling convention on non-windows platforms. This is for
7272         compatibility with XPCOM and MainWin COM.
7273         
7274         Code is contributed under MIT/X11 license.
7275         
7276
7277 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
7278
7279         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
7280         correctly. Fixes #79217.
7281
7282         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
7283
7284 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
7285
7286         * mono-config.c: allow both an os and cpu attribute for dllmap
7287         and dllentry elemnets to enable a single config file to be used
7288         for multiple architectures.
7289
7290 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
7291
7292         * loader.c: MonoLoaderError was cleared too soon on load failure.
7293         Fixes bug #79424.
7294
7295 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
7296
7297         * icall.c: use the defining class vtable when accessing a
7298         static field, not a pobblibly derived class.
7299
7300 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * icall.c string-icalls.c: Remove references to unicode.h.
7303
7304         * unicode.h unicode.c Makefile.am: Remove these unused source files.
7305
7306         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
7307
7308         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
7309         indicating the image where custom marshaller types should be looked up.
7310         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
7311         custom marshallers, instead of corlib. Fixes #79425.
7312
7313 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
7314
7315         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
7316
7317 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
7318
7319         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
7320         Implement Environment.ProcessorCount.
7321         
7322         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
7323         Implement Environment.ProcessorCount.
7324         
7325         * icall.c: 
7326         Add Environment.ProcessorCount icall.
7327         
7328         Patch by Jason McFall.
7329
7330 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7331
7332         * assembly.c: don't append .exe/.dll when the filename already contains
7333         one of those extensions.
7334
7335 2006-09-12  Martin Baulig  <martin@ximian.com>
7336
7337         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
7338         to array interfaces.
7339
7340 2006-09-11  Martin Baulig  <martin@ximian.com>
7341
7342         * reflection.c (mono_image_build_metadata): Create the
7343         MethodImpl's after emitting all types and methods, so we don't
7344         need another fixup pass for them.
7345
7346 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * class.c (mono_class_from_name_case): Fix regression introduced by the last
7349         change.
7350
7351 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
7352
7353         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
7354         unload.
7355
7356 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
7359         args is not set. Fixes #78926.
7360
7361 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
7362
7363         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
7364
7365         * image.c (load_class_names): Move this to class.c, and rename it to 
7366         'mono_image_init_name_cache'.
7367         (load_modules): Fix a warning.
7368
7369         * class.c icall.c image.c: Initialize image->name_cache lazily.
7370
7371         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
7372         on its name using information in the AOT file.
7373
7374         * class.c (mono_class_from_name): Use the new hook function.
7375
7376 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
7377
7378         * reflection.c (mono_param_get_objects): Handle enum default parameter values
7379         correctly.
7380
7381         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
7382         Fixes #79289.
7383         
7384 2006-09-06  Martin Baulig  <martin@ximian.com>
7385
7386         * icall.c (mono_lookup_internal_call): Small fix.
7387
7388 2006-09-05  Raja R Harinath  <rharinath@novell.com>
7389
7390         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
7391         double g_free.
7392
7393 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
7394
7395         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
7396         when --debug is specified.
7397
7398 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * class.c (setup_generic_array_ifaces): Fix a warning.
7401
7402 2006-09-04  Miguel de Icaza  <miguel@novell.com>
7403
7404         * Temporarily remove the patch to assemly.c that checks the
7405         assembly versions as it breaks our gacutil.
7406
7407 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
7410
7411         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
7412         a net 1.0 runtime.
7413
7414         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
7415         created using the default ctor. Fixes #79152.
7416         (mono_string_builder_to_utf16): Ditto.
7417
7418 2006-09-01  Martin Baulig  <martin@ximian.com>
7419
7420         Fix handling of the generic array interfaces.
7421
7422         * class-internals.h
7423         (MonoDefaults): Removed `generic_array_class' and added
7424         `generic_ilist' class.
7425
7426         * class.c
7427         (mono_bounded_array_class_get): Add the new generic array interfaces.
7428         (setup_generic_array_ifaces): New static method; create vtable
7429         entries for each method in the generic array interfaces.
7430
7431         * metadata.c
7432         (select_container): Allow "parent-less" generic methods.
7433
7434         * marshal.c
7435         (mono_marshal_get_generic_array_helper): New public method.
7436
7437         * icall.c
7438         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
7439         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
7440         moved the interncall into System.Array.
7441
7442 2006-09-01  Raja R Harinath  <rharinath@novell.com>
7443
7444         A few more cases of avoiding work on types with ->byref set.
7445         Has the real fix for #79238
7446         * icall.c (is_generic_parameter): New helper.
7447         (ves_icall_Type_GetGenericParameterPosition): Use it.
7448         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
7449         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
7450         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7451         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
7452         reference types.
7453         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
7454         reference types.
7455         (ves_icall_Type_get_IsGenericInstance): Likewise.
7456         (ves_icall_Type_get_IsGenericType): Likewise.
7457
7458 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
7461         class if possible.
7462
7463         * mempool.h (mono_mempool_get_allocated): New helper function.
7464
7465         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
7466         change.
7467
7468         * mempool.c: Fix warnings and the calculation of stats.
7469
7470         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
7471
7472         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
7473
7474         * loader.c (mono_get_method_from_token): Update method_count stat.
7475
7476         * class-internals.h (MonoStats): Add some stats.
7477
7478 2006-08-31 Robert Jordan  <robertj@gmx.net>
7479
7480         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
7481         with managed variants.
7482         All code is contributed under the MIT/X11 license.
7483         
7484 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
7485
7486         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
7487         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
7488
7489         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
7490
7491         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
7492         with cycles in classes.
7493
7494         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
7495
7496         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
7497         missing a [MarshalAs] directive. Fixes #79203.
7498
7499         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
7500         klass->marshal_info. Fixes #79217.
7501
7502 2006-08-30  Martin Baulig  <martin@ximian.com>
7503
7504         Committing a patch from Joachim Ante <joe@otee.dk>:
7505         Add support for binary data symbol stores.
7506
7507         * debug-mono-symfile.c
7508         (mono_debug_open_mono_symbol_file): Renamed into
7509         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
7510         arguments.
7511
7512         * mono-debug.c
7513         (mono_debug_open_image): Added `raw_contents' and `size' args.
7514         (mono_debug_init_2_memory): New public function.
7515
7516 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
7517
7518         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
7519
7520 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7521
7522         * appdomain.c: implement support for ShadowCopyFiles.
7523
7524 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
7525
7526         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
7527         when value is NULL (and should remove CID #51).
7528
7529 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7530
7531         * image.c: moved 2 functions to ../utils.
7532
7533 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
7534
7535         * gc.c: cope with the target object of a GC handle being NULL
7536         (bug #78877).
7537
7538 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
7539
7540         * class.c: recursively check parent's explicit implementations
7541         of interface methods (fixes bug #79125).
7542
7543 2006-08-19  Miguel de Icaza  <miguel@novell.com>
7544
7545         * filewatcher.c: Avoid warnings when building, do not redefine
7546         constants that are defined.
7547
7548         Remove warnings.
7549
7550 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7551
7552         * image.c: don't fail when the link points to an absolute path.
7553
7554 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
7555
7556         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
7557         Fix CID #3.
7558
7559 2006-08-17  Miguel de Icaza  <miguel@novell.com>
7560
7561         * image.c (full_path): A new method used to obtain the actual path
7562         of an assembly even in the presence of symbolic links.  
7563
7564         This is necessary for the case where we are running a binary that
7565         has been GACed, but we are using the "published" path name
7566         ($prefix/mono/1.0/blah.exe) which happens to point to the real
7567         file in the GAC.
7568
7569         This was the source of the failure for the `xsp' command with the
7570         recent AppDomain changes, as far as the runtime was concerned,
7571         there were two different assemblies: $prefix/mono/1.0/blah.exe and
7572         $prefix/mono/gac/blah/version/blah.exe.
7573
7574         (do_mono_image_open): use full path
7575
7576 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7577
7578         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
7579
7580 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
7581
7582         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
7583         domain_id is supplied. Fix CID #241 and corlib's unit tests.
7584
7585 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7586
7587         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
7588         small structures. Fixes #78990.
7589
7590 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7591
7592         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
7593
7594         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
7595
7596 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7597
7598         * appdomain.c:
7599         * marshal.c: don't load all the assemblies from a domain into newly
7600         created ones. The new domains might have different rules and load
7601         assemblies from different locations. Fixes bug #76757.
7602
7603         Patch by Lluis. Conflicts resolved by Brian Crowell.
7604
7605 2006-08-16  Alp Toker  <alp@atoker.com>
7606
7607         * socket-io.c: First half of the fix for #79084.
7608         Set sa_size to the length of the content, not that of the struct.
7609         Don't add NULL suffix to the content, this should be done in
7610         managed code if needed.
7611
7612 2006-08-14  Raja R Harinath  <rharinath@novell.com>
7613
7614         Fix part of #79012
7615         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
7616         mono_metadata_parse_type returns NULL.
7617
7618 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
7619
7620         * normalization-tables.h : new file for string normalization data.
7621         * locales.c, locales.h, icall.c :
7622           added load_normalization_resource() for string normalization,
7623           and icall as well.
7624         * Makefile.am : added normalization-tables.h to the sources.
7625
7626 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
7627
7628         * marshal.c: Add more helper functions to reduce code duplication and use them
7629         everywhere.
7630
7631 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * marshal.c: Fix non-x86 stdcall warnings.
7634         
7635         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
7636         them everywhere.
7637
7638 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
7639
7640         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
7641         type check on multi-dimensional arrays. Fixes #79000.
7642
7643 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
7644
7645         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
7646         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
7647         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
7648         * class-internals.h: add is_com_object to class structure.
7649         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
7650         null checks to COM object marshalling. Fix .ctor call on RCW.
7651         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
7652         
7653         All code is contributed under the MIT/X11 license.
7654
7655 2006-08-09  Dick Porter  <dick@ximian.com>
7656
7657         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
7658         racing mono_monitor_allocator_lock() somewhere, so don't delete
7659         the critical section for now.  Found by running and exiting
7660         monodevelop.
7661
7662 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
7663
7664         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
7665         (ves_icall_System_ComObject_FindInterface): Ditto.
7666         (ves_icall_System_ComObject_CacheInterface): Ditto.
7667
7668         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
7669         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
7670
7671 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7672
7673         * threadpool.c: treat pipes from process asynchronous reads as sockets
7674         when reading from them, so we get select/poll or epoll to wait for
7675         data.
7676
7677 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
7678
7679         * loader.c: Fix a typo (CID #233) in the null check.
7680
7681 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
7682
7683         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
7684         Hopefully fixes #78949.
7685         
7686         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
7687         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
7688         bytes. Fixes #78972.
7689
7690 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7691
7692         * filewatcher.c: we need to set errno here.
7693
7694 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7695
7696         * filewatcher.c: let Win32Exception get the error value.
7697
7698 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7699
7700         * filewatcher.c: translate errno into win32 errors for Win32Exception
7701         to know what happened.
7702
7703 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
7704
7705         * threadpool.c: Fix more warnings.
7706
7707         * assembly.c (search_loaded): Fix warnings.
7708
7709         * threadpool.c (mono_thread_pool_finish): Fix warnings.
7710         (mono_async_invoke): Ditto.
7711
7712 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
7713
7714         * object.c (mono_remote_class_vtable): Need to create proxy vtable
7715         entries for __ComObject type in addition to ComImport types.
7716         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
7717         about hash table.
7718         
7719         All code is contributed under the MIT/X11 license.
7720
7721 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7722
7723         * image.c: avoid tentative loading of modulerefs that contain
7724         no metadata (P/Invoke library names).
7725
7726 2006-07-28  Dick Porter  <dick@ximian.com>
7727
7728         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
7729         mono_loader_lock() somewhere, so don't delete the critical section
7730         for now.  Found by running and exiting monodevelop.
7731
7732 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7733
7734         * filewatcher.c: define the inotify syscalls when we're building on
7735         linux and have sys/syscall.h. The build system might not have support
7736         for inotify but the target system might have it.
7737
7738 2006-07-26  Miguel de Icaza  <miguel@novell.com>
7739
7740         * domain.c: Documentation updates.
7741
7742         * loader.c (mono_free_method): Do not release the method
7743         information if we are being profiled, as profilers will use this
7744         information at shut down to present some data to the user.
7745
7746         This is needed so that the profiler does not crash, as the
7747         profiler tends to keep MonoMethods around, and they might become
7748         invalid if we free these.
7749
7750         (mono_get_method_constrained): Return the original CIL stream
7751         method as well, so verification can be performed against it.
7752
7753 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7754
7755         * filewatcher.[ch]: support for inotify file system watcher.
7756         * icall.c: add new internal calls for the inotify file system watcher.
7757
7758 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7759
7760         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
7761         #78888.
7762
7763 2006-07-20  Dick Porter  <dick@ximian.com>
7764
7765         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
7766         warning.
7767
7768 2006-07-20  Dick Porter  <dick@ximian.com>
7769
7770         * threads.c (start_wrapper): Do the thread cleanup while we still
7771         hold a reference to its object.  Fixes bug 78123.
7772
7773 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
7774
7775         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
7776         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
7777           "managed-to-managed".
7778         * icall.c: Redirect string constructors that take sbyte* to
7779           ves_icall_System_String_ctor_RedirectToCreateString.
7780         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
7781           to CreateString () methods with matching signature.
7782         * reflection.c: Use original security informations for
7783           MONO_WRAPPER_MANAGED_TO_MANAGED.
7784         * security-manager.c: Use original security informations for
7785           MONO_WRAPPER_MANAGED_TO_MANAGED.
7786         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
7787           that is a placeholder and only its address should be used.
7788         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
7789           that is a placeholder and only its address should be used.
7790
7791 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
7792
7793         Begin implementing COM Interop.
7794         * appdomain.c: Increment corlib version.
7795         * class.c: Set ComImport classes' parent to __ComObject.
7796         * loader.c: Mark cominterop methods as such.
7797         * domain.c: Add __ComObject class to MonoDefaults structure.
7798         * image.c: Add 2 hashtables to the image for COM Interop related methods
7799         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
7800         using the mempool allocator
7801         
7802         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
7803         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
7804         declaration for mono_metadata_type_dup_mp.
7805         
7806         * debug-helpers.c: Added strings for two additional wrapper types
7807         * object.c: Create proxy objects for ComImport classes
7808         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
7809         and added __ComObject class to MonoDefaults structure.
7810         
7811         * object-internals.h: Finish MonoRealProxy definition, and add definition of
7812         MonoComInteropProxy and MonoComObject.
7813         
7814         * marshal.c: Added support for COM Interop
7815         (signature_cominterop): Converts managed signature to corresponding
7816         unmanaged COM signature.
7817         (cominterop_get_function_pointer): gets unmanaged function pointer via
7818         COM object vtable
7819         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
7820         (cominterop_get_method_interface): returns interface type that method is defined on
7821         (mono_mb_emit_cominterop_call): emits native call to function pointer
7822         gotten from vtable
7823         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
7824         that matches signature of unmanaged function.
7825         (cominterop_get_native_wrapper): wrapper around adjusted method call.
7826         (cominterop_get_invoke): forwards call from proxy to __ComObject
7827         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
7828         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
7829         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
7830         
7831         * marshal.h: Added Marshal icall declarations.
7832         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
7833         so we can access them in finalizer
7834         
7835 2006-07-14  Dick Porter  <dick@ximian.com>
7836
7837         * object.c (mono_type_initialization_cleanup): Fix a race
7838         condition by temporarily commenting out the critical section
7839         deletion.
7840
7841 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * reflection.c (create_custom_attr): Fix some warnings.
7844         (create_custom_attr_data): Ditto.
7845         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
7846         types. Fixes #78855.
7847
7848 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
7851
7852         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
7853
7854 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
7855
7856         * reflection.c (resolve_object): Add support for DynamicMethod.
7857
7858         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
7859         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
7860
7861 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
7862
7863         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
7864         don't leak GPtrArray's pdata has we have no use (nor free) for it.
7865
7866 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
7869         Fixes #77888.
7870
7871 2006-06-30  Raja R Harinath  <rharinath@novell.com>
7872
7873         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
7874         slightly: remove a shadow local variable.
7875
7876 2006-06-29  Raja R Harinath  <rharinath@novell.com>
7877
7878         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
7879         definition that introduces the virtual function slot.
7880         Also fix Coverity #105.
7881
7882 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
7883
7884         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
7885         for dynamic assemblies. Fixes #78724.
7886
7887 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
7888
7889         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
7890         Fixes #78722.
7891
7892 2006-06-21  Martin Baulig  <martin@ximian.com>
7893
7894         * reflection.c
7895         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
7896         fixes #76484.
7897
7898 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
7901
7902 2006-06-20  Raja R Harinath  <rharinath@novell.com>
7903
7904         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
7905         nor TYPEREFs.
7906         * class.c (mono_class_create_from_typespec): Add 'context' argument.
7907         Inflate result if necessary.
7908         (mono_class_get_full): Remove old version.  Rename from
7909         'mono_class_get' and add 'context' argument.  Pass it to
7910         ..._create_from_typespec.
7911         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
7912         (mono_ldtoken): Revert change below.
7913
7914 2006-06-20  Martin Baulig  <martin@ximian.com>
7915
7916         * class.c (mono_ldtoken): Don't pass the generic context to
7917         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
7918
7919 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
7922         and later freeing it. Fixes #78638.
7923
7924 2006-06-15  Miguel de Icaza  <miguel@novell.com>
7925
7926         * icall.c (mono_class_get_throw): Revert over-zealous error
7927         throwing, the caller for mono_class_get_throw will cope with
7928         errors when classes are not properly initialized already.
7929
7930         The code still copes with loader exceptions though.
7931
7932         Fixes the regression in reftype1 and reftype3 from the CAS tests.
7933         
7934 2006-06-14  Miguel de Icaza  <miguel@novell.com>
7935
7936         Fixes the `make run1' version of RuntimeAbort (to be commited,
7937         source is in Bugzilla).
7938         
7939         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
7940         FALSE on class loading failure instead of returning true.
7941
7942         * class.c (mono_class_create_from_typedef): It is possible for
7943         mono_metadata_interfaces_from_typedef_full to fail if a class is
7944         not found, cope with this.
7945         
7946
7947 2006-06-14  Dick Porter  <dick@ximian.com>
7948
7949         * socket-io.c: 
7950         * process.c: Fix a bunch of signed/unsigned warnings from gcc
7951         4.1.1
7952
7953 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
7954
7955         * culture-info-table.h : oops, forgot to make it nsync with r61548.
7956
7957 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7958
7959         * icall.c: Another fix for building mono in Visual Studio.
7960
7961 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7962
7963         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
7964         
7965 2006-06-09  Martin Baulig  <martin@ximian.com>
7966
7967         * debug-mono-symfile.c: Put this back and really fix it this
7968         time. Sorry for all the trouble.
7969
7970 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * icall.c (mono_class_get_throw): Fix a warning.
7973         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
7974         ReflectionTypeLoadException if needed. Fixes #78606.
7975
7976         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
7977         (mono_class_init): Ditto.
7978
7979         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
7980         ref_only exceptions.
7981         (mono_loader_clear_error): Make this work even if there is no error.
7982
7983 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
7984
7985         * object-internals.h marshal.c marshal.h icall.c: Implement method 
7986         Marshal.GetComSlotForMethodInfo using internal call.
7987
7988 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
7989
7990         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
7991         a function for signalling it.
7992
7993         * class.c (mono_class_from_typeref): Use the new kind of loader error when
7994         a referenced assembly is not found.
7995
7996         * loader.c (mono_loader_error_prepare_exception): Add support for 
7997         LOADER_ERROR_ASSEMBLY. Fix formatting.
7998
7999 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
8000
8001         * domain.c appdomain.c class-internals.h marshal.c: Add support 
8002         for VARIANT marshalling on windows and increment corlib version
8003         since Variant struct was added.
8004
8005 2006-06-03  Miguel de Icaza  <miguel@novell.com>
8006
8007         * debug-mono-symfile.c: Revert Martin's previous patch which broke
8008         stack trace line information:
8009
8010         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
8011         (Martin) when looking up B which is between A and C, return A not C.
8012
8013         Bug is #78573.
8014
8015         Thanks to Alexander Olk for tracking this down.
8016
8017 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
8018
8019         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
8020         
8021         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
8022         avoid clobbering its value.
8023         (mono_string_to_lpstr): Fix a warning on windows.
8024
8025 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
8028
8029         * reflection.c loader.c: Removed references to 'dummy' flag.
8030
8031         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
8032
8033         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
8034         it gets GC tracking.
8035
8036         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
8037         GC tracking.
8038         
8039         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
8040
8041         * marshal.c threadpool.c: Update callers of mono_async_result_new.
8042
8043         * appdomain.c: Bump corlib version.
8044
8045 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8048         CEE_STIND_REF when working with object references.
8049
8050 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8051
8052         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
8053         Fixes #78539.
8054
8055 2006-05-30  Miguel de Icaza  <miguel@novell.com>
8056
8057         * loader.c (method_from_memberref): Fix argument value for
8058         mono_loader_set_error_method_load (I was passing the MonoClass
8059         instead of the class name char *).
8060
8061 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8062
8063         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8064         CEE_STIND_REF when working with object references.
8065
8066 2006-05-30  Martin Baulig  <martin@ximian.com>
8067
8068         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
8069         mono_method_full_name() change and replace the ':' with a '.'
8070         here.
8071
8072 2006-05-30  Martin Baulig  <martin@ximian.com>
8073
8074         * debug-mono-symfile.c
8075         (mono_debug_symfile_lookup_location): Fix the algorithm:
8076         when looking up B which is between A and C, return A not C.
8077
8078 2006-05-29  Martin Baulig  <martin@ximian.com>
8079
8080         * mono-debug.h
8081         (MonoDebugMethodInfo): Make the typedef public.
8082         (MonoDebugSourceLocation): New public struct.
8083
8084         * mono-debug.c
8085         (mono_debug_source_location_from_address): Removed.
8086         (mono_debug_source_location_from_il_offset): Removed.
8087         (mono_debug_il_offset_from_address): Removed.
8088         (mono_debug_address_from_il_offset): Removed.
8089         (mono_debug_lookup_method): New public function.
8090         (mono_debug_lookup_source_location): New public function; replaces
8091         the old mono_debug_source_location_from_*() functions; see the
8092         inline documentation.
8093         (mono_debug_free_source_location): New public function.
8094         (mono_debug_print_stack_frame): New public function; see the
8095         inline documentation.
8096
8097         * debug-mono-symfile.c
8098         (mono_debug_find_source_location): Renamed into
8099         mono_debug_symfile_lookup_location(); only take a
8100         `MonoDebugMethodInfo *' and an `offset' argument; added inline
8101         documentation.
8102         (mono_debug_find_method): Renamed into
8103         mono_debug_symfile_lookup_method().
8104
8105 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * assembly.c (mono_assembly_open_full): Dont overwrite the status
8108         returned by mono_image_open_full ().
8109
8110         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
8111         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
8112         #78517.
8113
8114         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
8115         #78518.
8116
8117 2006-05-27  Miguel de Icaza  <miguel@novell.com>
8118
8119         * class.c (mono_class_from_typeref): handle missing images
8120         earlier, deals with bug #78418.   Refactor code; 
8121
8122         Fix a warning introduced in my previous commit (some stale code
8123         from before I revisited my patch).
8124
8125         * class.c (mono_class_create_from_typedef): On failure, remove the
8126         class from the MonoImage->class_cache as the class is not
8127         initialized;   Fixes the leak pointed out by Paolo.
8128
8129 2006-05-25  Dick Porter  <dick@ximian.com>
8130
8131         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
8132         DeleteCriticalSections until I figure out which one may still be
8133         sometimes locked when mono_thread_cleanup is called.
8134
8135 2006-05-24  Dick Porter  <dick@ximian.com>
8136
8137         * threads.c (mono_thread_cleanup): Move the threading cleanup out
8138         of mono_thread_manage and back into its own function, so it can be
8139         called after the finalizer thread has finished.
8140
8141         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
8142
8143 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
8146         Fixes #78495.
8147
8148         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
8149         with non-blittable elements.
8150         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
8151
8152 2006-05-24  Martin Baulig  <martin@ximian.com>
8153
8154         * mono-debug-debugger.h (MonoDebuggerEvent): Added
8155         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
8156
8157         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
8158         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
8159         `mono_debugger_event_handler' to NULL.
8160
8161 2006-05-24  Martin Baulig  <martin@ximian.com>
8162
8163         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
8164
8165 2006-05-24  Martin Baulig  <martin@ximian.com>
8166
8167         * mono-debug-debugger.h
8168         (mono_debugger_create_notification_function): Added
8169         `MonoCodeManager *' argument.
8170
8171 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
8172
8173         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
8174
8175 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
8176
8177         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
8178         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
8179         implementation.
8180
8181 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
8182
8183         * icall.c: precise GC support: objects can't be stored in unmanaged
8184         memory anymore, even if they are kept alive by other references: since
8185         they can move the GC needs to be able to always find them.
8186
8187 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8188
8189         * object.c: precise GC support for static fields. Support
8190         for moving GCs: write barriers and pinned allocation for interned
8191         strings.
8192
8193 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8194
8195         * domain.c, domain-internals.h: precise GC support for the MonoDomain
8196         structure.
8197
8198 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8199
8200         * class.c, gc.c: sgen and precise GC updates.
8201
8202 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8203
8204         * marshal.h, marshal.c: added write barrier wrapper and precise type
8205         fixes.
8206
8207 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
8208
8209         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
8210         support.
8211
8212 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
8213
8214         * reflection.c: precise and sgen GC updates.
8215
8216 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8217
8218         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
8219
8220 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
8223
8224 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
8227         MONO_TYPE_OBJECT. Fixes #78462.
8228
8229 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
8232         and blittable types.
8233
8234 2006-05-17  Miguel de Icaza  <miguel@novell.com>
8235
8236         * class.c (mono_class_get_exception_for_failure): Implement parts
8237         of a TODO: if the loader error is set (instead of the class
8238         error), we return a Loader exception that can be properly thrown
8239         elsewhere.
8240
8241         This was exposed by some Winforms 2.0 code that I tried to run
8242         (Atsushi pointed me to it).
8243
8244 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
8247         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
8248         
8249         * marshal.c (emit_marshal_vtype): Add limited support for 
8250         UnmanagedType.LPStruct. Fixes #78427.
8251
8252         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
8253         Applied a patch from kangaroo to fix #77523.
8254
8255 2006-05-17  Martin Baulig  <martin@ximian.com>
8256
8257         * threads.c
8258         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
8259         (debugger_thread_created): Removed.
8260         (debugger_thread_exited): Removed.
8261
8262 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
8263
8264         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8265
8266         * object-internals.h (MonoReflectionResource): Sync with managed version.
8267
8268 2006-05-12  Wade Berrier <wberrier@novell.com>
8269
8270         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
8271
8272 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
8273
8274         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
8275         functions try to allocate from the image mempool.
8276
8277 2006-05-12  Dick Porter  <dick@ximian.com>
8278
8279         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
8280
8281 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
8282
8283         * object.c: The FieldGetter and FieldSetter methods require the full
8284         name of the class, not only the name. Fixes bug #78277.
8285
8286 2006-05-11  Miguel de Icaza  <miguel@novell.com>
8287
8288         * loader.c (method_from_memberref): Do not pass the NULL klass to
8289         mono_loader_set_error_() methods.  Pass the non-NULL value
8290         (class). 
8291
8292 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
8295         (mono_assembly_close): Null out assembly->image->references after freeing it.
8296
8297         * image.c (mono_image_close): Free image->references.
8298         
8299         * reflection.c (mono_image_basic_init): Fix a small memory leak.
8300
8301 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8302
8303         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
8304         before checking if it's NULL (g_assert).
8305
8306 2006-05-10  Martin Baulig  <martin@ximian.com>
8307
8308         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
8309         I thought I already killed that two months ago, but now it somehow reappeared.
8310
8311 2006-05-10  Martin Baulig  <martin@ximian.com>
8312
8313         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
8314
8315 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * reflection.c: Allocate memory for dynamically created methods in the image
8318         mempools.
8319
8320 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8321
8322         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
8323         don't use the ad pointer before checking if it's NULL (g_assert).
8324
8325 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
8328         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
8329
8330         * marshal.c: Allocate all signatures from mempools.
8331
8332         * marshal.c: Allocate some more signatures from mempools.
8333
8334 2006-05-09  Miguel de Icaza  <miguel@novell.com>
8335
8336         * object.c (mono_load_remote_field): The code used to provide a
8337         temporary variable for returning results if the user did not
8338         provide a result pointer.  But our temporary variable was allocted
8339         on the satck.
8340
8341         Fix calling code to always pass a result area.   Coverity ID 103.
8342
8343 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8344
8345         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
8346         value, not the old. Fixes #78312.
8347         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
8348
8349         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
8350         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
8351         per-image cache.
8352
8353         * assembly.c (mono_assembly_close): Free image->references.
8354
8355         * assembly.c (mono_assembly_names_equal): Fix a warning.
8356         (mono_assemblies_cleanup): Cleanup more global data.
8357
8358         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
8359
8360         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
8361         ptr_cache and image->modules.
8362
8363         * image.c (mono_image_init): Allocate array_cache lazily.
8364         
8365 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8366
8367         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
8368         behavior was changed recently and has bad side effects.
8369
8370 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
8373         
8374         * assembly.c (mono_assembly_close): Remove a debug printf.
8375
8376         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
8377
8378         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
8379         to also allow for temporary references between mono_image_open ()/close ().
8380
8381         * domain.c (get_runtimes_from_exe): Add a FIXME.        
8382
8383 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * marshal.c: Fix support for dynamic methods.
8386
8387         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
8388
8389         * marshal.c (mono_marshal_cleanup): New cleanup function.
8390
8391         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
8392         image mempools.
8393
8394         * class.c (mono_class_init): Fix leaking class->nested_classes.
8395
8396         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
8397
8398         * image.c (mono_image_init): Initialize the new cashes.
8399
8400         * image.c (mono_image_close): Destroy the new cashes.
8401
8402         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
8403
8404         * mempool.c (mono_mempool_strdup): New helper function.
8405
8406         * class-internals.h: Add prototype for mono_loader_unlock ().
8407
8408         * domain.c (mono_jit_info_table_find): Fix a warning.
8409         (mono_debugger_check_runtime_version): Ditto.
8410
8411         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
8412         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
8413         functions to these modules.
8414
8415         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
8416         metadata modules.
8417         
8418         * marshal.c (mono_free_bstr): Fix a warning.
8419
8420         * assembly.c (mono_assembly_open_full): Fix another small leak.
8421
8422         * object.c: Fix some unload leaks in the remoting code.
8423
8424         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
8425         function.
8426
8427         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
8428
8429         * reflection.c: Fix some unload leaks in dynamic assemblies.
8430
8431 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
8432
8433         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
8434         * marshal.h: Add BSTR support on Win32
8435         * icall.c: Add BSTR icalls
8436         * metadata.h: Add BSTR enums
8437
8438 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8439
8440         Work to catch the crash from #76795 and turn it into an
8441         exception.   As I stubbed out pieces of the VisualBasic support,
8442         I found a number of places where the code was failing and I added
8443         checks to those places. 
8444         
8445         * metadata.c (do_mono_metadata_parse_generic_class): Make this
8446         function return a status code.  If we fail to parse the signature
8447         from mono_metadata_parse_generic_inst, return FALSE.
8448
8449         * loader.c (mono_get_method_from_token): If we fail to load the
8450         method (mono_class_get) return NULL.   
8451
8452         * (method_from_memberref): Return NULL if we are unable to parse
8453         the method signature
8454
8455         (mono_loader_error_prepare_exception): Since we now use the
8456         loader_error flag internally to stop processing, and obtaining
8457         exceptions that might be thrown will walk this code path the
8458         proper way of going from a MonoLoaderError into a
8459         MonoException was convoluted.   This new routine encapsulates the
8460         process of turning the error into an exception and *clearing* the
8461         error afterwards.
8462         
8463 2006-04-27  Miguel de Icaza  <miguel@novell.com>
8464
8465         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
8466         with missing assemblies), and to cope with:
8467
8468                 * Missing fieldref from a non-existing assembly.
8469                 * Missing methodref from a non-existing assembly.
8470
8471         The first batch of work to address *some* of the issues from 76661.
8472         
8473         * object.c (mono_class_create_runtime_vtable): If we fail to
8474         initialize the class raise the exception here. 
8475
8476         * metadata.c (mono_class_get_overrides_full): If any methods fail
8477         to load return the failure to the caller.
8478
8479         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
8480         flagging assemblies that failed to load.   
8481
8482         Do not crash if we are unable to load the assembly.
8483
8484         (mono_assembly_close): Do nothing with REFERENCE_MISSING
8485         assemblies. 
8486
8487         * loader.c (mono_loader_set_error_type_load): Change the
8488         convention to always pass unallocated strings, so we make our own
8489         copies (I know our own code had duplicated strings before, but
8490         this keeps the normal conventions).
8491         (method_from_memberref): Call mono_loader_set_error_method_load
8492         for all possible failures of loading the class. 
8493         Remove assert, turn into a loader error.
8494
8495         (mono_loader_error_to_exception): Move this routine from mini
8496         (mini_loader_error_to_exception) there was no need to have that in
8497         mini. 
8498
8499         * class.c (mono_class_from_typeref): If we were not able to load
8500         the assembly with mono_assembly_load_reference, call the
8501         mono_loader_set_error_type_load to register the problem.
8502
8503         (mono_class_setup_fields): If we fail to load the type from
8504         mono_metadata_parse_type_full, call mono_class_set_failure and
8505         break from the loop.
8506
8507         If class->exception_type is set, we do not layout the fields as
8508         that might crash the runtime, and instead return (from breaking
8509         from the previous loop).
8510
8511         (mono_class_setup_vtable): This now returns a boolean indicating
8512         whether the table was properly setup.   The decision is driven by
8513         mono_class_get_overrides_full which might run into non-existing
8514         methods. 
8515         
8516         (mono_class_init): Returns TRUE on success or FALSE if there was a
8517         problem in loading the type (incorrect assemblies, missing
8518         assemblies, methods, etc).
8519
8520         When we call mono_class_setup_fields we also check for a potential
8521         error inside this call (either a class exception or a general
8522         loader exception).
8523
8524         (mono_class_create_from_typedef): If the parent fails to load
8525         (calling mono_class_get_full) return NULL.
8526         
8527         ** Important **
8528
8529         calls to mono_metadata_parse_type_full should be checked
8530         everywhere and set the mono_class_set_failure
8531         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
8532
8533         The current patch checks the places where my manually constructed
8534         tests show the errors are showing up, but we should do it
8535         everywhere. 
8536
8537         ** Important2 **
8538
8539         mono_class_init return values should be tested everywhere, like
8540         the previous case this is something that we should audit
8541         everywhere and not only on the cases exposed by the tests I
8542         created. 
8543
8544 2006-04-26  Miguel de Icaza  <miguel@novell.com>
8545
8546         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
8547         boolean parameter and instead pass the information on `options'
8548         parameter (FileOptions).
8549
8550         * icall.c: Register the new signature for MonoIO.Open.
8551
8552         * debug-helpers.c (dis_one): Trying to understand how coverity
8553         works.  Fix Run 5, item 78.
8554
8555 2006-04-26  Dick Porter  <dick@ximian.com>
8556
8557         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
8558         dereference.
8559
8560 2006-04-25  Martin Baulig  <martin@ximian.com>
8561
8562         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
8563
8564         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
8565         debugger_thread_created().
8566         (debugger_gc_push_all_stacks): Don't handle the main thread in any
8567         special way.
8568         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
8569         (mono_debugger_finalize_threads): New function; undo the effects
8570         of mono_debugger_init_threads().
8571         (mono_debugger_create_all_threads): Removed.
8572
8573 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
8574
8575         * image.c (mono_image_close): Tidy up trace messages.
8576
8577         * assembly.c (mono_assembly_close): Ditto.
8578
8579         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
8580         no longer references an already freed assembly. Fixes #78168.
8581
8582 2006-04-21  Dick Porter  <dick@ximian.com>
8583
8584         * threads.c (mono_thread_detach): Fix reference counting when
8585         detaching threads.
8586
8587 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
8590         #78155.
8591
8592 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
8595         (mono_type_to_stind): Ditto.
8596
8597         * marshal.c: Use the new helper functions to simplify code.
8598
8599         * image.c (mono_image_close): Add some code for help debug assembly unloading
8600         problems.
8601
8602         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
8603         image mempool.
8604
8605         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
8606         assembly was already loaded in another appdomain. Fixes #78083.
8607
8608 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
8611         referenced assemblies.
8612         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
8613
8614         * domain.c (mono_domain_free): Add a trace message.
8615
8616         * appdomain.c (add_assemblies_to_domain): Ditto.        
8617
8618         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
8619         field.  
8620
8621 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8622
8623         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
8624
8625 2006-04-12  Martin Baulig  <martin@ximian.com>
8626
8627         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
8628         `USE_INCLUDED_LIBGC'.   
8629
8630 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
8633         the patch contains ../ and a small directory name later. Hopefully fixes
8634         #78035.
8635
8636 2006-04-10  Martin Baulig  <martin@ximian.com>
8637
8638         Clean up the debugger's thread-handling code.
8639
8640         The debugger's thread-handling code has been moved from
8641         ../mini/debug-debugger.c to threads.c.  We now iterate directly
8642         over the `threads' hash, keep track of exiting threads and also
8643         use proper locking.
8644
8645         We can now debug XSP and XSP based applications with the debugger.
8646
8647         * object-internals.h (MonoThread): Added `gpointer end_stack'.
8648
8649         * threads.h
8650         (MonoThreadCallbacks): Removed; this was only used by the debugger.
8651         (mono_install_thread_callbacks): Likewise.      
8652
8653         * threads.c (mono_thread_callbacks): Removed.
8654         (debugger_thread_created, debugger_thread_exited): New static functions.
8655         (start_wrapper): Call debugger_thread_created().
8656         (thread_cleanup): Call debugger_thread_exited().
8657         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
8658         (mono_debugger_init_threads): New public function.
8659         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
8660         iterate directly over the `threads' hash and also use proper locking.
8661
8662         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
8663
8664         * mono-debug-debugger.h
8665         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
8666
8667 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
8668
8669         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
8670         argument type=array. Fixes #78057.
8671
8672 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
8673
8674         * culture-info-table.h : regenerated. Fixed bug #69652.
8675
8676 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
8677
8678         * loader.c metadata.c: Reapply a variant r59116.
8679         
8680         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
8681
8682         * class.c (mono_class_setup_interface_offsets): New internal function.
8683
8684         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
8685         interfaces too. Fixes #77398.
8686
8687         * reflection.c (encode_cattr_value): Add support for 
8688         parameter type=object, argument type=array.
8689         (load_cattr_value): Ditto. Fixes #77916.
8690
8691         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
8692         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
8693
8694         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
8695         a byval char array and CharSet is Ansi.
8696
8697         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
8698
8699 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * metadata.c: Add some locking comments.
8702         
8703         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
8704         mempool.
8705         (mono_metadata_free_method_signature): Don't free the signature itself.
8706
8707         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
8708
8709         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
8710         reference the same MonoImage.
8711         (mono_assembly_load_from_full): Add an assert.
8712
8713 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * image.c (mono_image_close): Don't put the image we are about to free into the
8716         loaded_images_guid_hash.
8717
8718         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
8719         to reduce code duplication.
8720
8721         * marshal.c: Register the native functions called by this module as icalls, to
8722         somewhat centralize the creation of MonoMethodSignature's.
8723
8724         * loader.c (mono_method_signature): Add a cache for method signatures.
8725
8726         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
8727         the parameter attributes of a method.
8728         (mono_metadata_parse_method_signature_full): Refactored the computation of
8729         parameter attributes into a separate function. Also avoid one allocation in
8730         most cases.
8731
8732         * assembly.c (mono_assembly_close): Ditto.
8733
8734         * image.c (mono_image_close): Log trace messages with INFO level.
8735
8736         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
8737
8738         * image.c reflection.c: Correct reference counting of image modules.
8739         
8740         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
8741         of this function from the image mempool.
8742         
8743         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
8744         to allow more cached types to be used.
8745
8746         * mono-debug.c (mono_debug_add_method): Appled patch from
8747         David S. Miller  <davem@sunset.davemloft.net>: Access 
8748         minfo->lexical_blocks[] entry elements using read32().
8749
8750 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
8751
8752         * loader.c (mono_free_method): No longer free the method header for non-dynamic
8753         methods as it is allocated from the mempool.
8754
8755         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
8756         image mempool.
8757
8758         * metadata-internals.h: Add comments describing the reference counting scheme
8759         used for MonoImage and MonoAssembly.
8760
8761         * image.c assembly.c reflection.c: Rework reference counting of images and 
8762         assemblies so they are freed when the runtime is shut down. Free some 
8763         additional memory structures when an image is unloaded.
8764         
8765 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
8766
8767         * class.c loader.c reflection.c: Allocate more data structures in
8768         the image mempool.
8769
8770 2006-03-31  Miguel de Icaza  <miguel@novell.com>
8771
8772         * icall.c
8773         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
8774         build on pre glib 2.4 systems.
8775
8776 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
8777
8778         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
8779
8780         * icall.c: Fix some warnings.
8781
8782 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
8783
8784         * culture-info-table.h : regenerated.
8785
8786 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
8787
8788         * threads.c, object-internals.h, verify.c: changed the culture caching
8789         code to use a normal MonoArray for storage so the GC can keep track of
8790         them easily. Fixed bits of the cache logic, too and simplified the
8791         code.
8792
8793 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
8794
8795         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
8796         thread for non-Boehm GCs.
8797
8798 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
8799
8800         * domain.c, object.c, domain-internals.h: reduce the amount of memory
8801         needed to keep track of the data for static fields.
8802
8803 2006-03-29  Raja R Harinath  <rharinath@novell.com>
8804
8805         Fix #75172
8806         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
8807         for interface classes.  Use 'num_methods' instead.
8808         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
8809         before using '->vtable_size' field.
8810
8811 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8812
8813         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
8814         doesn't contain managed pointers, so use a normal hashtable.
8815
8816 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8817
8818         * reflection.c, class-internals.h, domain.c: fixed handling of types
8819         used as values for objects in custom attributes (bug #77915):
8820
8821 2006-03-24  Martin Baulig  <martin@ximian.com>
8822
8823         * class.c (mono_class_setup_fields): Added support for generic
8824         instances; fixes #77580.
8825
8826 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8827
8828         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
8829
8830 2006-03-24  Dick Porter  <dick@ximian.com>
8831
8832         * file-io.c (get_file_attributes): More stat macro breakage.
8833         Fixes bug 77759.
8834
8835 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
8836
8837         * profiler.c: added the file=filename option in the default profiler
8838         to output the profile data to filename.
8839
8840 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8841
8842         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
8843         bug #77877.
8844
8845 2006-03-22  Martin Baulig  <martin@ximian.com>
8846
8847         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
8848         allocated `MonoClassField *' in `fb->handle'.
8849
8850 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8851
8852         * class.c, image.c, metadata-internals.h: implemented new mechanism to
8853         allocate interface ID to save memory and allow better ID reuse on
8854         appdomain unload. setup_generic_vtable () removal from Martin.
8855
8856 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
8857
8858         * object.h, appdomain.c, domain.c, exception.c, icall.c,
8859         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
8860         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
8861         write barriers for reference stores with managed objects accessed with
8862         C structures in the runtime and in embedding programs.
8863
8864 2006-03-20  Raja R Harinath  <rharinath@novell.com>
8865
8866         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
8867         'interface_id' and 'max_interface_id' fields of MonoClasses
8868         representing open generic types.
8869
8870 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
8871
8872         * object.h, object.c, icall.c: added functions to deal with
8873         storing valuetypes that contain references in managed objects.
8874         * reflection.c, string-icalls.c, threads.c, marshal.c: small
8875         fixes and comments around uses of mono_array_addr ().
8876
8877 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
8878
8879         * object.h, icall.c, monitor.c: object.GetHashCode ()
8880         implementation that supports the moving garbage collector.
8881
8882 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8883
8884         * icall.c, threads-types.h, threads.c: implemented finalizer for
8885         LocalDataStoreSlot.
8886
8887 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * metadata.c (mono_type_size): Add a fixme.
8890         (mono_type_stack_size): Ditto.
8891
8892         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
8893         'type_forwarders' field.
8894
8895         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
8896         attribute from net 2.0.
8897
8898         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
8899         from class.c.
8900
8901         * class.c (mono_class_setup_fields): Fix a warning.
8902         
8903         * class.c (mono_class_from_name): Add support for assemblyref entries
8904         in the EXPORTEDTYPE table.
8905
8906         * reflection.c: Add support for handling type forwarders under net 2.0.
8907
8908         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
8909         
8910 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
8911
8912         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
8913         overwriting entries in ModuleBuild->types, also clean up the code
8914         a little. Fixes #77774.
8915
8916 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8917
8918         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
8919         load friend assembly info when present.
8920
8921 2006-03-14  Raja R Harinath  <rharinath@novell.com>
8922
8923         Fix crasher on gtest-158.cs.
8924         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
8925         the return value if the MonoClass we want is yet in an
8926         inconsistent state.
8927         * class.c (mono_class_create_from_typedef): Add an comment
8928         explaining an order dependency between mono_class_setup_parent and
8929         mono_class_setup_mono_type.
8930
8931 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8932
8933         * class.c: documentation updates and events bug fix.
8934
8935 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
8936
8937         * class.c: some cleanup, locking fixes.
8938
8939 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8940
8941         * class.c: fix the generics code to setup nested
8942         type info to the instantiated type (bug #77770).
8943
8944 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
8945
8946         * marshal.c: fixed a few type correctness issues.
8947
8948 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8949
8950         * loader.c: the Set/Get/Addrtess array methods should be public.
8951
8952 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
8953
8954         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
8955         
8956         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
8957         info->wrapper.
8958
8959 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
8960
8961         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
8962
8963         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
8964
8965         * mempool.c (mono_mempool_alloc): Speed this up a bit.
8966         (mono_mempool_alloc0): Ditto.
8967
8968 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8969
8970         * socket-io.c:
8971         (create_object_from_sockaddr): it was allocating 4 extra bytes
8972         for the AF_UNIX data. Fixes bug #77747.
8973
8974 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
8975
8976         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
8977
8978 2006-03-09  Dick Porter  <dick@ximian.com>
8979
8980         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
8981         Fixes bug 76966 again.
8982
8983 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
8984
8985         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
8986         names from r57532
8987         * appdomain.c: Bumped corlib version to 48 (due to r57532)
8988
8989 2006-03-07  Martin Baulig  <martin@ximian.com>
8990
8991         * object.c
8992         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
8993
8994 2006-03-07  Martin Baulig  <martin@ximian.com>
8995
8996         * class.c
8997         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
8998         regression introduced in r56970; see gtest-252.cs.
8999
9000         * loader.c (mono_get_method_constrained): Correctly handle generic
9001         methods; see gtest-253.cs.
9002
9003 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
9006
9007 2006-03-04  Martin Baulig  <martin@ximian.com>
9008
9009         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
9010         compute the parent type at runtime, just like we're already doing
9011         it for interfaces.
9012
9013         * reflection.c
9014         (mono_reflection_bind_generic_parameters): Don't compute the
9015         parent type anymore.
9016
9017         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
9018
9019 2006-03-04  Martin Baulig  <martin@ximian.com>
9020
9021         * mono-debug-debugger.h
9022         (mono_debugger_create_notification_function): Allocate memory at
9023         runtime and return a pointer to it.
9024
9025 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
9026
9027         * assembly.c: Fix windows build.
9028         
9029         * assembly.c: Fix build.
9030
9031         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
9032
9033         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
9034         
9035 2006-03-03  Dick Porter  <dick@ximian.com>
9036
9037         * process.c
9038         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9039         Check parameters before dereferencing them.  Fixes Aaron's part of
9040         bug 77393.
9041
9042 2006-03-03  Raja R Harinath  <rharinath@novell.com>
9043
9044         Fix performance regression.
9045         * loader.c (find_method_in_class): Add 'from_class' argument.
9046         Rename 'klass' argument to 'in_class'.  The signature is compared
9047         against the method in 'in_class', and the corresponding method is
9048         returned from 'from_class'.
9049         (find_method): Walk both 'in_class' and 'from_class' in parallel.
9050         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
9051         type definition and generic instantiation in parallel.
9052         (mono_get_method_constrained): Update to changes.
9053
9054 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9055
9056         * threads.c: make sure the domain is correct, too when doing
9057         mono_thread_attach ().
9058
9059 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
9060
9061         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
9062         windows. Fixes #77683.
9063
9064 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9065
9066         * object.h, *: introduced specific way to set elements of an array
9067         of references to be used as write barrier. Still need to audit the
9068         uses of mono_array_addr.
9069
9070 2006-03-01  Miguel de Icaza  <miguel@novell.com>
9071
9072         * object-internals.h: New field to cache the assmebly name, patch
9073         from Tambet Ingo (tambet@ximian.com)
9074
9075 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9076
9077         * decimal.h, class-internals.h, metadata-internals.h,
9078         file-io.h: mark a few function declarations as internal, to
9079         reduce the number of PLT entries.
9080
9081 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9082
9083         * file-io.c: fix typo in warning message.
9084
9085 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
9086
9087         * loader.c: on unix, lookup the "*A" version of a function
9088         if charset is auto as a second option before failing.
9089
9090 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9091
9092         * class.h (mono_class_inflate_generic_method): Revert to two
9093         argument version.
9094         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
9095         (mono_class_inflate_generic_method_full): Add.
9096         * class.c (mono_class_inflate_generic_method_full): Rename from
9097         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
9098         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
9099         * loader.c, reflection.c: Update to changes.
9100
9101 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9102
9103         * icall.c: const fixes and small improvements.
9104
9105 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9106
9107         * threadpool.c: for asynchronous connect(), enable the same workaround
9108         for BSD 6 as for the Mac. Fixes bug #77637.
9109
9110 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
9113         formatted classes. Fixes #77524.
9114
9115 2006-02-24  Raja R Harinath  <rharinath@novell.com>
9116
9117         * class.c (inflate_generic_type): Add a couple more
9118         micro-optimizations.
9119         (inflate_generic_context): Don't use the 'gmethod' from
9120         'inflate_with'.
9121         (mono_class_inflate_generic_method): If the method has generic
9122         parameters, but the passed-in context doesn't have a 'gmethod',
9123         create one.  Use the possibly simplified generic instantiation
9124         from the declaring class instead of the one passed in.
9125
9126 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9127
9128         Make generic method signature and method header handling lazy.
9129         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
9130         (inflate_generic_header): Likewise.
9131         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
9132         parameter to avoid inflating types.
9133         (mono_get_inflated_method): Empty out.
9134         * class.h (mono_class_inflate_generic_method): Update to changes.
9135         * loader.c (mono_get_method_from_token): Don't parse signature for
9136         generic methods, nor methods of generic classes.
9137         (mono_method_signature): Rename from 'mono_method_signature'.
9138         Inflate signature on demand.
9139         (mono_method_get_header): Inflate method header on demand.
9140         * reflection.c: Update to changes.
9141
9142 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9143
9144         * metadata.c (mono_metadata_inflate_generic_inst): If the
9145         instantiation is closed, don't bother expanding it in the new
9146         context.
9147         * class.c (inflate_generic_class): If the generic instantiation
9148         doesn't change after inflation, return the argument itself.
9149         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
9150         Add bounds checks.
9151         (inflate_generic_context): If neither the generic class nor the
9152         generic method instantiations change, return the original context.
9153         * reflection.c (mono_method_get_object): Do
9154         'mono_get_inflated_method' before accessing the ->klass field.
9155         (inflate_mono_method): Don't create a MonoGenericMethod unless
9156         necessary.
9157         (inflate_method): Don't pass a constructed type as the declaring
9158         type of a methodbuilder.
9159
9160 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
9161
9162         * object.c: fix memory overwrite.
9163
9164 2006-02-22  Dick Porter  <dick@ximian.com>
9165
9166         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
9167         it doesn't work any more.
9168         (mono_threads_request_thread_dump): Fix unused variable warnings.
9169
9170 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9171
9172         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
9173         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
9174         the public header file.
9175
9176 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
9179
9180 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9181
9182         * class-internals.h, object.c: reduce the size of MonoVTable
9183         and store the interface_offsets array at negative offsets.
9184
9185 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9186
9187         * metadata.c: tweak table descriptors data structures to reduce
9188         size and runtime relocations.
9189
9190 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9191
9192         * marshal.c: fix some types and opcodes to be type-safe
9193         in marshaling wrappers.
9194
9195 2006-02-21  Ankit Jain  <jankit@novell.com>
9196
9197         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
9198
9199 2006-02-21  Raja R Harinath  <rharinath@novell.com>
9200
9201         * metadata.c (get_constraints): Relax debugging checks for monodis.
9202
9203 2006-02-21  Ankit Jain  <jankit@novell.com>
9204
9205         * metadata.c (mono_metadata_load_generic_params): Move the code
9206         checking for ambiguous generic params from here to mono/dis/get.c
9207         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
9208
9209 2006-02-21  Raja R Harinath  <harinath@gmail.com>
9210
9211         Fix assertion triggered when compiling nemerle.
9212         * class.c (mono_get_shared_generic_inst): Rename from
9213         get_shared_inst and make non-static.
9214         * loader.c (mono_get_shared_generic_method): New.  Used to create
9215         the MonoGenericContext-equivalent of a MonoGenericContainer.
9216         (mono_get_method_from_token): Initialize the 'context' field of
9217         the created MonoGenericContainer.
9218         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
9219         * metadata.c (get_constraints): Add sanity check.
9220         * class-internals.h: Add new internal methods.
9221
9222         * reflection.c (verify_safe_for_managed_space): New sanity check.
9223         Currently checks that owner-less generic parameters aren't allowed
9224         in managed space.
9225         (mono_type_get_object): Use it.
9226         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
9227         that are now in mono_type_get_object.
9228         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
9229
9230 2006-02-19  Raja R Harinath  <harinath@gmail.com>
9231
9232         * metadata.c (mono_type_create_from_typespec): Rename from
9233         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
9234         argument and caching of types in the generic container.
9235         (unwrap_arrays, find_generic_param): Remove.
9236         * metadata-internals.h: Update.
9237         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
9238
9239 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * class.c (mono_class_get_exception_for_failure): Fix a warning.
9242
9243         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
9244         return values. Fixes #77581.
9245
9246         * class.c (mono_fnptr_class_get): Switch name and name_space.
9247
9248         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
9249         classes and add support for [In, Out] attributes.
9250         (mono_marshal_free_asany): Ditto. Fixes #77524.
9251
9252 2006-02-18  Raja R Harinath  <harinath@gmail.com>
9253
9254         * class.c (mono_class_from_generic_parameter): Make more robust to
9255         incomplete MonoGenericContainers from monodis.
9256
9257 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9258
9259         * class-internals.h: added some more exception types.
9260         * class.c, metadata.c: added a few checks to handle missing
9261         types.
9262
9263 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9264
9265         Use owner-less generic-params some more.
9266         * class.c (my_mono_class_from_generic_parameter): Remove.
9267         (mono_class_from_generic_parameter): Handle null image,
9268         param->name and param->owner.
9269         (mono_class_from_mono_type): Update.
9270         (mono_class_create_from_typespec): Remove 'container' parameter.
9271         If that parameter is non-null, the result is always inflated by
9272         'mono_class_get_full' anyway.
9273         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
9274         parameter.
9275         (mono_class_get_full): Update.
9276
9277         * class.c (inflate_generic_type) [GENERICINST]: If the generic
9278         instance is not open, don't bother inflating.
9279         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
9280         parse metadata for inflated classes.
9281         (_mono_class_get): Change GenericContext* parameter to
9282         GenericContainer*.
9283         (mono_class_create_from_typespec): Likewise.  Simplify, and
9284         implement trivially.  All the cases are handled in
9285         mono_class_from_mono_type.  Don't inflate returned class.
9286         (mono_class_get_full): Delegate GENERICINST optimization to
9287         inflate_generic_type.
9288         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
9289
9290 2006-02-16  Dick Porter  <dick@ximian.com>
9291
9292         * socket-io.c (create_object_from_sockaddr): Fix typo.
9293         (create_sockaddr_from_object): Check array lengths before
9294         potentially accessing items off the end.
9295         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
9296         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
9297         (ves_icall_System_Net_Sockets_Socket_Send_internal)
9298         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
9299         length checks to avoid wraparound overflows.
9300         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
9301         contents of the array of sockets
9302         (hostent_to_IPHostEntry2)
9303         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
9304         Check return value of inet_ntop ().
9305         (addrinfo_to_IPHostEntry): Fix typo
9306
9307 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9308
9309         Type metadata parsing doesn't use generic-instantiation information.
9310         * metadata.c (mono_metadata_parse_array_full): Change
9311         MonoGenericContext* parameter to MonoGenericContainer*.
9312         (mono_metadata_parse_type_full): Likewise.
9313         (mono_type_create_from_typespec_full): Likewise.
9314         (mono_metadata_parse_mh_full): Likewise.
9315         (mono_metadata_parse_generic_inst): Likewise.
9316         (do_mono_metadata_parse_generic_class): Likewise.
9317         (do_mono_metadata_parse_type): Likewise.
9318         * metadata-internals.h: Update to changes.
9319         * class.c (mono_class_find_enum_basetype): Likewise.
9320         (mono_class_setup_fields): Likewise.
9321         (mono_class_create_from_typespec): Likewise.
9322         * loader.c (method_from_methodspec): Likewise.
9323         (mono_get_method_from_token): Likewise.
9324         (mono_method_get_header): Likewise.
9325
9326 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9327
9328         * marshal.c: handle additional GENERICINST case (patch from
9329         Thong Nguyen <tum@veridicus.com>).
9330         Fix a few cases where LDIND_I/STIND_I was used for references.
9331
9332 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9333
9334         * reflection.c (mono_reflection_get_token): Remove unused variable.
9335
9336 2006-02-16  Martin Baulig  <martin@ximian.com>
9337
9338         * reflection.c (mono_reflection_get_token): Add support for fields
9339         in instantiated generic types.
9340
9341         * icall.c
9342         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
9343
9344 2006-02-15  Martin Baulig  <martin@ximian.com>
9345
9346         * icall.c
9347         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
9348         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
9349         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
9350         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
9351
9352 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9353
9354         * class.c, metadata.c, metadata.h, object.c, icall.c,
9355         marshal.c: changed mono_type_get_underlying_type () to do
9356         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
9357         Fixed handling of instantiated generic valuetypes (bug #75479).
9358
9359 2006-02-15  Raja R Harinath  <rharinath@novell.com>
9360
9361         * metadata.c (mono_metadata_decode_signed_value): Simplify.
9362         Delegate to mono_metadata_decode_value, and work on the returned value.
9363
9364         * icall.c (ves_icall_MonoType_GetGenericArguments):
9365         Add consistency check here too.
9366         
9367 2006-02-15  Ankit Jain  <jankit@novell.com>
9368
9369         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
9370         char/short etc.
9371
9372 2006-02-15  Ankit Jain  <jankit@novell.com>
9373
9374         * metadata.c (mono_metadata_decode_signed_value): New function to decode
9375         signed values, used only for representing lower bounds of arrays.
9376         (mono_metadata_parse_array_full): Use new
9377         mono_metadata_decode_signed_value to decode lower bounds.
9378
9379 2006-02-14  Martin Baulig  <martin@ximian.com>
9380
9381         * reflection.c
9382         (mono_reflection_get_token): Support "MonoGenericMethod" and
9383         "MonoGenericCMethod" and allow generic instances / methods.
9384
9385 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9386
9387         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
9388         to obtain the terminal size using an ioctl.
9389
9390         * object.c (mono_nullable_init): Revert this as nullable reference
9391         types are not valid.
9392         (mono_nullable_box): Ditto.
9393
9394 2006-02-09  Dick Porter  <dick@ximian.com>
9395
9396         * threads.c (mono_thread_detach): Drop a reference to the thread
9397         we're detaching.
9398
9399 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9400
9401         * object.c (mono_nullable_init): Handle nullable reference types.
9402         (mono_nullable_box): Ditto. Fixes #77446.
9403
9404 2006-02-07  Martin Baulig  <martin@ximian.com>
9405
9406         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
9407
9408 2006-02-07  Ankit Jain  <jankit@novell.com>
9409
9410         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
9411         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
9412         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
9413         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
9414         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
9415         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
9416
9417 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
9418
9419         * class.c (mono_class_create_generic): Set type_token as well.
9420
9421         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
9422         compatible with MS.
9423
9424 2006-02-02  Martin Baulig  <martin@ximian.com>
9425
9426         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
9427         has never been used so far.
9428
9429 2006-02-02  Martin Baulig  <martin@ximian.com>
9430
9431         * mono-debug-debugger.h: Changed comment at the top of this file;
9432         the header is not installed, but it's safe to #include it from
9433         within the JIT.
9434
9435         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
9436         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
9437
9438 2006-02-02  Martin Baulig  <martin@ximian.com>
9439
9440         * mono-debug.h
9441         (MonoSymbolTable): Removed the `metadata_info' field.
9442
9443         * mono-debug.c
9444         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
9445
9446         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9447         (mono_debugger_add_builtin_types): Removed.
9448         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
9449         (mono_debugger_create_notification_function): We now operate on a
9450         pre-allocated area; take a `gpointer' and return `void'.
9451
9452         * mono-debug-debugger.c
9453         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
9454         (mono_debugger_add_builtin_types): Removed.
9455
9456 2006-02-02  Martin Baulig  <martin@ximian.com>
9457
9458         * threads.c (mono_debugger_create_all_threads): New public method.
9459
9460 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9461
9462         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
9463         breaks on several platforms.
9464
9465 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
9466
9467         * assembly.c: the VS.NET build doesn't supply default values for
9468         MONO_ASSEMBLIES and MONO_CFG_DIR.
9469
9470 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
9471
9472         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
9473         helper function.
9474
9475         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
9476
9477         * loader.c (method_from_memberref): Fix a warning.
9478
9479         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
9480
9481         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
9482         with explicit layout. Fixes #77433.
9483
9484 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
9485
9486         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
9487         max_interface_id is initialized before using it. Fixes #77398.
9488         (ves_icall_Type_GetInterfaces): Ditto.
9489
9490 2006-01-30  Raja R Harinath  <rharinath@novell.com>
9491
9492         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9493         allocate memory for parameter attributes when parsing memberref
9494         signatures.
9495         * loader.c (mono_loader_set_error_method_load): Don't warn.
9496         (method_from_memberref): Ensure MissingMethodException gets thrown
9497         if method is not found.  Make warning more informative.
9498
9499 2006-01-29  Raja R Harinath  <harinath@gmail.com>
9500
9501         Fix #77397
9502         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
9503         return true if is byref.
9504         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9505         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
9506         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
9507
9508 2006-01-27  Raja R Harinath  <rharinath@novell.com>
9509
9510         Fix tests/find-method.2.il
9511         * loader.c (find_method, find_method_in_class): Remove is_inflated
9512         argument.  Revert 2006-01-18 change.
9513         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
9514         is generic, search for method in its generic definition.
9515         * class.c (mono_class_setup_vtable_general): Print generic
9516         arguments of generic types in debugging printf.
9517
9518 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
9521
9522         * threads.c (mono_threads_request_thread_dump): New helper function.
9523
9524 2006-01-25  Raja R Harinath  <rharinath@novell.com>
9525
9526         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
9527
9528 2006-01-25  Ankit Jain  <jankit@novell.com>
9529
9530         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
9531         move definition to ..
9532         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
9533         
9534 2006-01-25  Ankit Jain  <jankit@novell.com>
9535             Raja R Harinath  <rharinath@novell.com>
9536
9537         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
9538         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
9539         as necessary.
9540
9541 2006-01-25  Martin Baulig  <martin@ximian.com>
9542
9543         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
9544         `MonoDebuggerThread' into debug-debugger.c.
9545
9546 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9547
9548         * profiler.c: fix printing of data.
9549
9550 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
9551
9552         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
9553           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
9554
9555 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9556
9557         * object.c: fix deadlock related to string interning.
9558
9559 2006-01-23  Martin Baulig  <martin@ximian.com>
9560
9561         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9562
9563         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
9564
9565 2006-01-23  Martin Baulig  <martin@ximian.com>
9566
9567         * mono-debug.h: Moved the prototypes of some functions which are
9568         used by the JIT here from mono-debug-debugger.h.
9569
9570 2006-01-21  Martin Baulig  <martin@ximian.com>
9571
9572         * Makefile.am: Don't install mono-debug-debugger.h.
9573
9574 2006-01-21  Martin Baulig  <martin@ximian.com>
9575
9576         * mono-debug-debugger.h: Enforce the private status of this header
9577         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
9578         Moved some stuff from mono-debugger-jit-wrapper.h here.
9579
9580 2006-01-20  Raja R Harinath  <rharinath@novell.com>
9581
9582         * class.c (mono_class_from_typeref): Add a sanity test to help
9583         catch lack of assembly load/search hooks.
9584
9585 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
9586
9587         * marshal.c (emit_struct_conv): Relax the fields with same offset
9588         check even more. Fixes #77230.
9589
9590 2006-01-18  Martin Baulig  <martin@ximian.com>
9591
9592         * loader.c (find_method_in_class): Added `gboolean is_inflated'
9593         argument; if false, we compare the uninstantiated signatures.
9594         (method_from_memberref): Compare the uninstantiated signatures;
9595         fixes #76417.
9596
9597 2006-01-18  Robert Jordan  <robertj@gmx.net>
9598
9599         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
9600         Clear the weak link. Fixes bug #77170.
9601
9602         * gc.c (mono_gchandle_free):
9603         Reflect *-gc.c changes (tiny optimization).
9604
9605 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * metadata.c (mono_metadata_signature_dup): Applied patch from
9608         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
9609         Fixes #77288.
9610
9611 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * marshal.c (emit_struct_conv): Allow fields with the same offset when
9614         marshalling from native to managed code. Fixes #77230.
9615
9616 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9617
9618         * threadpool.c: fix problem (Mac only) when more than one asynchronous
9619         connect. Fixes bug #77020.
9620
9621 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
9622
9623         * class.c: fixed id assignement for nested interfaces (bug #77275).
9624         Added also better info for --print-vtable debugging.
9625
9626 2006-01-12  Martin Baulig  <martin@ximian.com>
9627
9628         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
9629         interfaces on-the-fly; fixes #76625.
9630
9631         * class-internals.h
9632         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
9633         don't need that anymore.
9634
9635 2006-01-12  Miguel de Icaza  <miguel@novell.com>
9636
9637         * socket-io.c
9638         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
9639         To avoid initing the nested_classes when not needed I turned the
9640         PeerCredData as a toplevel internal class, as it has to be shared
9641         anyways. 
9642
9643         Fixes the CASA issue.
9644
9645 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
9646
9647         * domain.c: Accessors for MonoJitInfo
9648
9649         * profiler-private.h: Add jitinfo to the end jit hook
9650
9651         * profiler.[ch]: Define new hooks, called after jitting which give
9652         the MonoJitInfo that was compiled
9653
9654 2006-01-10  Martin Baulig  <martin@ximian.com>
9655
9656         * class.c (mono_class_setup_events): Add support for generic
9657         classes; fixes #76440.
9658
9659 2006-01-06  Raja R Harinath  <rharinath@novell.com>
9660
9661         Fix #77160.
9662         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
9663         on passed-in method.
9664
9665 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9666
9667         * object.c (mono_runtime_invoke_array): Add Nullable support.
9668
9669         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
9670
9671 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
9672
9673         * file-io.c: Don't consider sockets as directory and avoid an endless
9674         loop. Fix bug #76966.
9675
9676 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * object.c (mono_nullable_init): New helper function.
9679         (mono_nullable_box): Ditto.
9680
9681         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
9682
9683         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
9684
9685         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
9686         
9687 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
9688
9689         * class.c (mono_class_is_assignable_from): Make T assignable to 
9690         Nullable<T>.
9691
9692 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
9693
9694         * appdomain.c: Bump corlib version to 46.
9695         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
9696         serialization purpose) and changed ves_icall_System_Reflection_
9697         Assembly_get_code_base signature to accept a boolean (to escape, or 
9698         not, the assembly code base).
9699
9700 2005-12-23  Dick Porter  <dick@ximian.com>
9701
9702         * icall.c: 
9703         * threads-types.h: 
9704         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
9705         CreateEvent icall now returns "created" boolean parameter.
9706
9707 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
9710         #76967.
9711
9712         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
9713         when attr_klass is an interface. Fixes #77045.
9714
9715 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
9716
9717         * marshal.c (emit_struct_conv): Fix previous patch.
9718         
9719         * marshal.c (emit_struct_conv): Add a check for fields with the same
9720         offset.
9721
9722 2005-12-20  Raja R Harinath  <rharinath@novell.com>
9723
9724         Fix regression in Mono.C5.
9725         * class.c (mono_class_create_generic): If 'klass' is an interface
9726         set up the interface offsets.
9727         (mono_class_is_assignable_from): Don't throw away generic arguments.
9728
9729 2005-12-19  Raja R Harinath  <rharinath@novell.com>
9730
9731         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
9732         type parameters.
9733
9734 2005-12-15  Raja R Harinath  <rharinath@novell.com>
9735
9736         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
9737         dead store.
9738         (do_mono_metadata_parse_generic_class): Don't pass the current
9739         generic context when parsing the type being instantiated: it
9740         cannot use it, anyway.
9741
9742         * loader.c (method_from_memberref): Don't inflate a signature if
9743         it doesn't contain any type parameters.
9744
9745 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
9746
9747         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
9748
9749 2005-12-14  Martin Baulig  <martin@ximian.com>
9750
9751         * class.c
9752         (mono_type_get_name_recurse): Don't return null for type
9753         parameters and open generic classes.
9754         (mono_class_setup_methods): Don't exclude generic instances.
9755         (mono_get_unique_iid): Use different IDs for different
9756         instantiations of the same generic type.
9757         (mono_class_setup_vtable): Only use setup_generic_vtable() for
9758         open generic instances; create a normal vtable for closed generic
9759         instances.
9760         (mono_class_setup_vtable_general): We're now also called for
9761         closed generic instances.
9762
9763         * reflection.c
9764         (mono_reflection_bind_generic_parameters): Correctly use
9765         mono_metadata_lookup_generic_inst() everywhere.
9766
9767 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
9768
9769         * object.c (mono_class_create_runtime_vtable): Call 
9770         mono_class_setup_vtable ().
9771
9772         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
9773         function.
9774         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
9775         #76959.
9776
9777         * loader.c (mono_loader_set_error_type_load): Print the type load
9778         warnings to the console so they are more visible to the user.
9779         (mono_loader_set_error_method_load): Ditto.
9780
9781         * reflection.c (ensure_runtime_vtable): Revert the last change as it
9782         is still broken.
9783         
9784         * reflection.c (ensure_runtime_vtable): Fix build.
9785
9786         * reflection.c (ensure_runtime_vtable): Disable an optimization which
9787         doesn't work in all cases.
9788
9789 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * object.c (mono_array_new_full): Treat a single dimensional array
9792         with 0 lower bounds as an szarray. Fixes #76973.
9793
9794         * reflection.c (custom_attr_visible): Really fix this.
9795
9796 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
9797
9798         * reflection.c (custom_attr_visible): Allow nested public attributes
9799         as well.
9800
9801         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
9802         interface check.
9803
9804 2005-12-12  Raja R Harinath  <harinath@gmail.com>
9805
9806         * class.c (set_generic_param_owner): Delete.
9807         (mono_class_create_from_typedef): Don't set ->owner field of
9808         generic parameters to "param containers" of enclosing classes.
9809         * reflection.c (mono_reflection_initialize_generic_parameter):
9810         Likewise.
9811
9812 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
9813
9814         * reflection.c (custom_attr_visible): Fix build.
9815
9816 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
9817
9818         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
9819         private attributes.
9820         
9821         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
9822         handling of null parameter defaults.
9823
9824 2005-12-09  Raja R Harinath  <rharinath@novell.com>
9825
9826         * class.c (mono_class_from_generic_parameter): Don't set
9827         klass->generic_container.
9828         (my_mono_class_from_generic_parameter): Likewise.
9829
9830 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * reflection.c (load_public_key): Fix a warning.
9833         (method_encode_code): Fix unaligned accesses.
9834
9835 2005-12-07  Martin Baulig  <martin@ximian.com>
9836
9837         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
9838
9839         * reflection.c
9840         (write_generic_param_entry): Encode our custom attrs.
9841
9842         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
9843
9844 2005-12-07  Martin Baulig  <martin@ximian.com>
9845
9846         * reflection.c (encode_new_constraint): Removed; we don't use the
9847         `NewConstraintAttribute' anymore.
9848
9849 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
9852         not fire a TypeResolve event when Assembly.GetType () is called.
9853
9854 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
9855
9856         Beginning of support for nullable types in the runtime. Parts of
9857         this patch are from Martin.
9858
9859         * appdomain.c (MONO_CORLIB_VERSION): Bump
9860
9861         * domain.c (mono_init_internal): get the nullable type
9862
9863         * class.c (mono_class_is_nullable): New method
9864         (mono_class_get_nullable_param): New mehod
9865         (mono_class_create_generic): In types T? set cast_class to T
9866
9867         * class-internals.h (MonoDefaults): new nullable default class
9868         (mono_class_get_nullable_param, mono_class_get_nullable_param):
9869         new methods.
9870
9871 2005-12-05  Raja R Harinath  <rharinath@novell.com>
9872
9873         * metadata.c (select_container): New.  Refactor code to select the
9874         appropriate GenericContainer given the type of generic parameter
9875         we are looking for.
9876         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
9877         not a MonoGenericContext.  Use select_container.  Update parameters.
9878         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
9879         and MONO_TYPE_MVAR.
9880         (unwrap_arrays): Remove duplicate tests.
9881         (find_generic_param): Rename from 'has_same_context'.  Now walks a
9882         generic instantiated class to find any arguments that are generic
9883         parameters.
9884         (mono_type_create_from_typespec_full): Use find_generic_param to
9885         avoid evicting some generic instantiations from the typespec
9886         cache.
9887
9888 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
9889
9890         * reflection.c: fixed writing of doubles on ARM FPA.
9891
9892 2005-12-02  Robert Jordan  <robertj@gmx.net>
9893
9894         * icall.c: Fixed EventInfo.ReflectedType (#76829).
9895
9896 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9897
9898         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
9899         least on SUSE 10 they are not the same (on debian, they are just the
9900         same thing).
9901
9902 2005-12-01  Raja R Harinath  <rharinath@novell.com>
9903
9904         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
9905         DeclaringType for VARs and MVARs.
9906         * class.c (set_generic_param_owner): Fix initialization of owner
9907         fields.
9908
9909 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
9910
9911         * icall.c: fixed Enum.ToObject() to correctly convert the values.
9912
9913 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9914
9915         * threadpool.c: workaround for a bug that shows up on the Mac:
9916         select()+connect() on a blocking socket is not like it should
9917         be, so we proceed to connect() in that case, wasting the I/O
9918         threadpool thread until connect succeedes. Fixes bug #75436.
9919
9920 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9921
9922         * threadpool.c: fix typo when setting file descriptor states.
9923
9924 2005-11-28  Raja R Harinath  <rharinath@novell.com>
9925
9926         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
9927         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9928         create a temporary signature container.
9929         (mono_metadata_parse_generic_param): Update to changes.
9930         (mono_type_create_from_typespec_full): Update to changes.
9931         * loader.c (method_from_memberref): Don't use a
9932         MonoGenericContainer while parsing a memberref signature.
9933         (method_from_methodspec): Remove dead-store of the 'container'
9934         variable.  It's overwritten before use.
9935
9936         * metadata.c (mono_type_create_from_typespec_full): Make debugging
9937         checks tighter.
9938         (mono_metadata_parse_generic_param): Likewise.
9939         * loader.c (find_method_in_class): Does not need a
9940         MonoGenericContainer.  Use 'mono_method_signature' rather than
9941         'mono_method_signature_full'.
9942         (find_method, mono_get_method_constrained, method_from_memberref):
9943         Update to changes.
9944
9945         * metadata.c (mono_type_create_from_typespec_full): Ensure that
9946         owner-less generic-parameters are never evicted from the typespec
9947         cache.
9948
9949         * loader.c (method_from_memberref): Don't use the current context
9950         when parsing signatures.
9951         (method_from_methodspec, mono_get_method_from_token): Update to changes.
9952
9953         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
9954         side-effects in g_assert.
9955         * loader.c (mono_get_method_from_token): Resolve klass earlier so
9956         that we don't potentially lose information.
9957
9958 2005-11-26  Dick Porter  <dick@ximian.com>
9959
9960         * icall.c:
9961         * threads.c: icalls to implement basic (ie, not named)
9962         System.Threading.Semaphore.
9963
9964 2005-11-24  Dick Porter  <dick@ximian.com>
9965
9966         * process.c
9967         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9968         Use GetProcessId() if it's available.
9969
9970 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
9973
9974 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9975             Ankit Jain  <jankit@novell.com>
9976
9977         * loader.c (mono_get_method_from_token): Initialize 'method' field
9978         of all generic parameters before parsing the signature.  Remove
9979         code that "fixed"-up MVAR references.
9980
9981 2005-11-23  Ankit Jain  <jankit@novell.com>
9982
9983         * metadata.c (mono_metadata_has_generic_params):
9984         (mono_metadata_load_generic_param_constraints):
9985         (mono_metadata_load_generic_params): Move duplicate code ...
9986         (mono_metadata_get_generic_param_row): ... here. Returns the
9987         first row-id in GenericParam table for a given owner (token).
9988         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
9989         prototype.
9990
9991 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9992             Ankit Jain  <jankit@novell.com>
9993
9994         * metadata.c (mono_metadata_class_equal): Pass signature_only when
9995         comparing VARs too.
9996         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
9997         type->data.generic_param only if the type is an MVAR.
9998         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
9999         leak owner-less VARs and MVARs into managed space.
10000
10001 2005-11-21  Martin Baulig  <martin@ximian.com>
10002
10003         * class-internals.h
10004         (MonoMethod): Moved the `generic_container' here from
10005         `MonoMethodNormal' since we now also need it for
10006         `MonoMethodPInvoke';
10007         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
10008         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
10009         an union containing both `MonoMethodNormal' and
10010         `MonoMethodPInvoke'.
10011
10012         * loader.c
10013         (mono_get_method_from_token): Allow implementing generic methods
10014         as interncalls.
10015
10016         * threads.c
10017         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
10018         icall.
10019
10020 2005-11-17  Dick Porter  <dick@ximian.com>
10021
10022         * icall.c: 
10023         * process.h: 
10024         * process.c: Split the Process Start_internal icall into
10025         ShellExecuteEx_internal and CreateProcess_internal, which are
10026         called depending on whether UseShellExecute is true.  Fixes bug
10027         76670.
10028
10029         * appdomain.c (MONO_CORLIB_VERSION): Incremented
10030
10031 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10032
10033         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
10034         'msize' parameters, use the information in 'mspec' instead.
10035         (emit_object_to_ptr_conv): Ditto.
10036
10037         * marshal.c (emit_struct_conv): Handle explicit layout structs with
10038         fields out of order. Fixes #76733.
10039
10040 2005-11-17  Ankit Jain  <jankit@novell.com>
10041
10042         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
10043
10044 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
10045
10046         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
10047           bug #76575.
10048
10049 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
10052         for types with non-auto layout. Fixes #76717.
10053
10054 2005-11-16  Ankit Jain  <jankit@novell.com>
10055
10056         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
10057         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
10058         if generic_context is null.
10059           (mono_metadata_generic_param_equal): param->owner can be null.
10060           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
10061         null.
10062
10063 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10064
10065         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
10066         the correct value.
10067
10068 2005-11-15  Martin Baulig  <martin@ximian.com>
10069
10070         * object.c (set_value): Use mono_class_from_mono_type() instead of
10071         the hack for generic instances; fixes #76136.
10072
10073 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
10076         fields.
10077
10078         * image.c (load_metadata_ptrs): Initialize the new fields.
10079
10080         * reflection.c (create_dynamic_mono_image): Ditto.
10081
10082         * reflection.c (build_compressed_metadata): Use the new fields.
10083
10084         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
10085         icall.
10086
10087         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
10088         icall.
10089         
10090 2005-11-15  Ankit Jain  <jankit@novell.com>
10091             Raja R Harinath  <harinath@gmail.com>
10092
10093         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
10094         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
10095         new per-generic_container cache if the cached MonoType's context matches
10096         the current context.
10097           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
10098         to the expected context.
10099           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
10100
10101 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10102
10103         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
10104         we changed the signature of an icall.
10105         * icall.c: Modify to mono_double_ParseImpl return true/false 
10106         depending on the success, instead of throwing the exception. This will
10107         help us in Double.TryParse methods.
10108         
10109 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
10110
10111         * marshal.c (emit_marshal_object): Throw an exception when
10112         marshalling 'object' instead of crashing. Fixes #76696.
10113
10114 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10115
10116         * class-internals.h: Add prototype for mono_type_get_full_name ().
10117
10118 2005-11-11  Dick Porter  <dick@ximian.com>
10119
10120         * threads.c (mono_thread_manage): Make sure the main thread has
10121         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
10122
10123 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10124
10125         * loader.c (mono_loader_set_error_type_load): Log a warning to the
10126         console about the missing type.
10127         (mono_loader_set_error_method_load): Ditto.
10128
10129 2005-11-09  Miguel de Icaza  <miguel@novell.com>
10130
10131         * mono-config.c (mono_get_config_dir): Set the system defaults if
10132         none is specified.
10133
10134         * assembly.c (mono_set_dirs): New API entry point to set the
10135         assembly and the config directory in one call
10136
10137 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
10138
10139         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
10140         the ftnptr was created from a delegate in a domain other than the
10141         current domain. Fixes #75377.
10142
10143         * exception.h exception.c: Add mono_get_exception_not_supported ().
10144
10145 2005-11-08  Martin Baulig  <martin@ximian.com>
10146
10147         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
10148
10149 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
10150
10151         * security-manager.h: Added definitions to deal with strongname key 
10152         pairs bigger (and smaller) than 1024 bits.
10153         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
10154         adjust wrt the public key length being used.
10155
10156 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10157
10158         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
10159           Windows build (r51396-51397).
10160
10161 2005-11-03  Martin Baulig  <martin@ximian.com>
10162
10163         * class.c (mono_class_setup_vtable_general): Also add generic
10164         methods to the vtable; fixes #76581.
10165
10166 2005-11-01  Miguel de Icaza  <miguel@novell.com>
10167
10168         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
10169         sure that we lookup GetString method from the System.Text.Encoding
10170         class, not the derived class or we get an empty method.
10171
10172         Fixed class #76612.
10173
10174 2005-10-25  Miguel de Icaza  <miguel@novell.com>
10175
10176         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
10177         if it has been previously set (embedders). 
10178
10179         Make mono_set_rootdir available also on Unix.
10180
10181 005-10-24  Robert Jordan  <robertj@gmx.net>
10182
10183         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
10184
10185 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10186
10187         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
10188         only calls which are made to native code use this flag.
10189
10190         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
10191
10192 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10193
10194         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
10195         Add support for FieldBuilders.
10196
10197 2005-10-29  Martin Baulig  <martin@ximian.com>
10198
10199         * mono-debug.c
10200         (mono_debug_using_mono_debugger): New public method; returns
10201         whether we're running inside the debugger.
10202
10203 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
10206         for Method/Constructor/FieldBuilders.
10207
10208 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * reflection.c (module_add_cattrs): Save custom attributes for global methods
10211         and fields as well.
10212
10213 2005-10-26  Martin Baulig  <martin@ximian.com>
10214
10215         * mono-debug-debugger.c
10216         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
10217
10218 2005-10-24  Raja R Harinath  <harinath@gmail.com>
10219
10220         * icall.c (base64_to_byte_array): Don't pass an out-of-range
10221         integer to isspace.
10222
10223 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
10226         when passing valuetypes byref. Fixes #76502.
10227
10228 2005-10-19  Jackson Harper  <jackson@ximian.com>
10229
10230         * profiler.c: Don't put a . in front of types that are not in a
10231         namespace.
10232
10233 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10234
10235         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
10236
10237 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
10238
10239         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
10240         #76436.
10241         (mono_marshal_get_ldflda_wrapper): Fix a warning.
10242
10243 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10244
10245         * assembly.c metadata-internals.h icall.c: Define an additional
10246         parameter for mono_assembly_name_parse_full, so we can avoid creating
10247         S.R.AssemblyName.Version when no version info wasn't passed.
10248         
10249 2005-10-09  Miguel de Icaza  <miguel@novell.com>
10250
10251         * class.c (mono_type_get_full_name): Reimplement method that was
10252         removed. 
10253
10254         * image.c: Some docs
10255
10256 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10257
10258         * profiler.c (output_newobj_profile): Fix printing of Total memory
10259         on x86.
10260
10261 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10262
10263         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
10264
10265 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
10266
10267         * threads.c: remove debug output.
10268
10269 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10270
10271         * threads.c (mono_thread_manage): Fix crashes if more than 64
10272         threads need to be aborted. Hopefully fixes #75899.
10273
10274         * assembly.c (mono_stringify_assembly_name): New helper function.
10275
10276         * class.c: Use mono_stringify_assembly_name instead of the similar
10277         static function.
10278
10279         * assembly.h assembly.c: Add support for calling a postload search 
10280         hook if an assembly cannot be loaded.
10281
10282         * appdomain.c: Register new search hooks which call the AssemblyResolve
10283         events in AppDomain. Fixes #75231
10284
10285 2005-10-07  Martin Baulig  <martin@ximian.com>
10286
10287         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
10288         methods without debug info.
10289
10290 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10291
10292         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
10293         wrappers.
10294
10295 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10296
10297         * file-io.c: now that we return symlinks, use lstat and, when the file
10298         is a symbolic link, stat, to get the file attributes. Also avoid the
10299         conversion to/from utf16/external.
10300
10301 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
10302
10303         * class.c (mono_class_layout_fields): Compute klass->has_references
10304         correctly if an embedded valuetype is not yet initialized. Fixes
10305         #76331.
10306
10307 2005-10-04  Martin Baulig  <martin@ximian.com>
10308
10309         * metadata.c
10310         (mono_metadata_load_generic_param_constraints): New public
10311         function; splitted the constraints loading out from
10312         mono_metadata_load_generic_params().
10313
10314         * class.c (mono_class_create_from_typedef): Call
10315         mono_metadata_load_generic_param_constraints() after setting up
10316         the type and creating our parent; fixes #75329.
10317
10318 2005-10-04  Martin Baulig  <martin@ximian.com>
10319
10320         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
10321         non-dynamic parent classes.
10322
10323 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10324
10325         * file-io.c : win32 build fix (ETXTBSY seems not found).
10326
10327 2005-10-04  Martin Baulig  <martin@ximian.com>
10328
10329         * reflection.c
10330         (mono_image_get_methodspec_token): Make the cache actually work;
10331         fixes #75974.
10332
10333 2005-10-04  Martin Baulig  <martin@ximian.com>
10334
10335         * class.c (mono_class_name_from_token): Removed the unneccessary
10336         `MonoGenericContext *' argument.
10337
10338 2005-10-04  Martin Baulig  <martin@ximian.com>
10339
10340         * loader.c
10341         (method_from_methodspec): Make the caching work again; fixes the
10342         performance regression from #76262.
10343
10344 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10345
10346         * file-io.c:
10347         * file-io.h:
10348         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
10349         GetFileSystemEntries that performs the same work but without going
10350         into io-layer, locking, etc.
10351
10352 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10353
10354         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
10355         ThreadState_Stopped as well. Fixes #76047.
10356
10357 2005-09-29  Martin Baulig  <martin@ximian.com>
10358
10359         * class.c
10360         (inflate_generic_context): If the new context has a `gmethod', set
10361         its `container' that that gmethod's `container'.
10362
10363         * metadata.c
10364         (mono_metadata_parse_generic_param): Simplify things;
10365         `generic_container = generic_context->container;' is just fine.
10366
10367         * loader.c (method_from_methodspec): Code cleanups.
10368
10369 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
10370
10371         * decimal.c: fix warning (and let gcc generate correct
10372         code on ARM with optimizations).
10373
10374 2005-09-28  Martin Baulig  <martin@ximian.com>
10375
10376         * loader.c
10377         (method_from_memberref): Added `MonoGenericContext *class_context'
10378         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
10379         (method_from_methodspec): If we're a memberref, use the enclosing
10380         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
10381
10382 2005-09-28  Martin Baulig  <martin@ximian.com>
10383
10384         * object.c (mono_runtime_invoke_array): Added support for
10385         MONO_TYPE_GENERICINST; fixes #75917.
10386
10387 2005-09-27  Martin Baulig  <martin@ximian.com>
10388
10389         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
10390         `k->byval_arg.type' to determine the actual type.
10391
10392         * loader.c (method_from_methodspec): Removed some hacks.
10393
10394 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10395
10396         * class-internals.h (mono_field_is_deleted): Do the test for
10397         rtspecialname before we check the actual name of the field. This
10398         prevents us from dereferencing a pointer into the string table,
10399         saving us from accessing a few pages
10400
10401         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10402         macros. This will allow a deadlock debugger to easily be plugged
10403         in.
10404
10405 2005-09-27  Martin Baulig  <martin@ximian.com>
10406
10407         * loader.c (method_from_methodspec): Create a "signature"
10408         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
10409
10410 2005-09-27  Martin Baulig  <martin@ximian.com>
10411
10412         * class.c
10413         (inflate_generic_class): Correctly set the new context's
10414         container.
10415
10416         * loader.c
10417         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
10418         instead of a `MonoGenericContext *'.
10419         (mono_method_signature_full): Take a `MonoGenericContainer *'
10420         instead of a `MonoGenericContext *'.
10421
10422         * metadata.c
10423         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
10424         instead of a `MonoGenericContext *'.
10425         (mono_metadata_parse_method_signature_full): Likewise.
10426
10427 2005-09-26  Martin Baulig  <martin@ximian.com>
10428
10429         * class.c
10430         (mono_class_from_generic_parameter): Set `klass->generic_container'
10431         (mono_class_from_generic_parameter): Likewise.
10432         (mono_bounded_array_class_get): We inherit the generic container
10433         from the element class.
10434
10435         * loader.c
10436         (find_method, find_method_in_class): Take a `MonoGenericContext *'
10437         argument rather than computing it here.
10438         (method_from_memberref): Correctly set the generic context before
10439         parsing the signature.  Fixes #75681.
10440
10441 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * object.c (mono_class_has_special_static_fields): Fix warnings.
10444
10445 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10446
10447         * assembly.c: Add parse_public_key function, to
10448         par the public keys. Also added mono_assembly_name_parse_full,
10449         to define it the parsed key should be freed or not.
10450         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
10451         to parse a long format assembly name.
10452         * metadata-internals.h: Keep mono_assembly_name_parse_full as
10453         private, since calling it to preserve the key requires
10454         freeing it manually.
10455         
10456 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
10457
10458         * locales.c : removed HAVE_ICU part.
10459
10460 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10461
10462         * object.c (mono_class_create_runtime_vtable): Avoid calling 
10463         field_is_special_static if the klass has no special static fields.
10464
10465         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
10466         (MonoCachedClassInfo): Likewise.
10467
10468         * object.c (mono_class_has_special_static_fields): New helper function.
10469
10470 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * class.c (mono_class_create_from_typedef): Don't call 
10473         interfaces_from_typedef_full for enums.
10474         (mono_class_create_from_typedef): Compute the base types of enums directly
10475         without calling mono_class_setup_fields ().
10476         (mono_class_find_enum_basetype): New helper function.
10477
10478         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
10479         one place inside the string heap.
10480         
10481 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
10482
10483         * class.c: locking fixes, code cleanups, some docs added.
10484         Allocate some data structures in the image mempool.
10485
10486 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10487
10488         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10489         the example code.
10490         
10491 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
10492
10493         * class-internals.h, class.c, reflection.c: reduce memory taken by
10494         MonoClass.
10495
10496 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
10497
10498         * metadata.c, metadata.h, loader.h: documentation updates, code and
10499         API cleanups.
10500
10501 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10502
10503         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10504         the example code.
10505
10506         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
10507         page faults caused by the runtime while reading metadata.
10508
10509 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10510
10511         * socket-io.c: the field names were changed 3 months ago and no one
10512         realized until bug #76077 got filed!
10513
10514 2005-09-20  Martin Baulig  <martin@ximian.com>
10515
10516         * icall.c (assembly_icalls): Removed some unused debugger icalls.
10517
10518 2005-09-20  Martin Baulig  <martin@ximian.com>
10519
10520         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
10521         write the rank into the class entry.
10522
10523 2005-09-20  Martin Baulig  <martin@ximian.com>
10524
10525         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
10526
10527 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10530
10531         * icall.c (custom_attrs_defined_internal): New icall.
10532
10533         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
10534         function.
10535         (mono_custom_attrs_construct_by_type): New helper function.
10536
10537 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
10538
10539         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
10540         terminate the resulting string. Fixes #76123.
10541
10542 2005-09-16  Martin Baulig  <martin@ximian.com>
10543
10544         * mono-debug.c
10545         (mono_debug_add_method): Ignore inflated methods for the moment.
10546
10547 2005-09-14  Martin Baulig  <martin@ximian.com>
10548
10549         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
10550
10551 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
10552
10553         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
10554         return a success/failure indication.
10555         (mono_metadata_interfaces_from_typedef_full): Ditto.
10556         (get_constraints): Ditto.
10557
10558 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * marshal.c (emit_marshal_array): Fix handling of null arrays.
10561         
10562         * marshal.c (emit_marshal_array): Add support for returning string
10563         arrays from delegates. Fixes #76063.
10564
10565         * marshal.c: Use the emit_ldloc/stloc macros where possible.
10566
10567 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
10570         icall.
10571
10572 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
10573
10574         * reflection.c icall.c: Fix after mono_get_exception_type_load
10575         signature change.
10576
10577         * assembly.c (mono_assembly_get_assemblyref): New helper function.
10578         (mono_assembly_load_reference): Use the new helper.
10579
10580         * class-internals.h (MonoLoaderError): New structure containing 
10581         information about type loading errors.
10582
10583         * class-internals.h loader.c: Add APIs to store per-thread loader
10584         error information.
10585
10586         * loader.c class.c: Set the loader error if needed.
10587
10588         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
10589
10590 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
10591
10592         * decimal.c: fixed to handle the broken ARM fp format.
10593
10594 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
10595
10596         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
10597         broken.
10598
10599 2005-09-06  Martin Baulig  <martin@ximian.com>
10600
10601         * domain.c (supported_runtimes): Added v2.0.50727.
10602
10603 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
10604
10605         * culture-info.h: reduce the size of some structures.
10606
10607 2005-09-05  Martin Baulig  <martin@ximian.com>
10608
10609         Reflect latest API changes in the August CTP.
10610
10611         * icall.c
10612         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
10613         ("MonoType.HasGenericArguments"): Removed.
10614         ("MonoMethod.BindGenericParameters"): Renamed to
10615         "MakeGenericMethod".
10616         ("MethodBuilder.BindGenericParameters"): Renamed to
10617         "MakeGenericMethod".    
10618
10619 2005-09-05  Martin Baulig  <martin@ximian.com>
10620
10621         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
10622
10623 2005-09-05  Martin Baulig  <martin@ximian.com>
10624
10625         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10626
10627         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
10628         generic_container is non-NULL.
10629
10630 2005-09-05  Martin Baulig  <martin@ximian.com>
10631
10632         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10633
10634         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
10635
10636 2005-08-29  Michal Moskal  <malekith@nemerle.org>
10637
10638         * reflection.c (encode_locals,
10639         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
10640         for large generic types.
10641
10642 2005-09-05  Martin Baulig  <martin@ximian.com>
10643
10644         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10645
10646         * class.c (mono_dup_array_type): New public method.
10647         (mono_metadata_signature_deep_dup): New public method.
10648         (dup_type): Correctly duplicate array and function types.
10649
10650 2005-09-05  Martin Baulig  <martin@ximian.com>
10651
10652         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10653
10654         * reflection.c (get_default_param_value_blobs): Handle generic types
10655         and generic methods.
10656
10657 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
10658
10659         * class.c: Fixed error reporting (method/class were inversed) for 
10660         inheritance demands.
10661         * security-manager.c|h: Added the AppDomain when calling the managed
10662         System.Security.SecurityManager.InheritanceDemand method.
10663
10664 2005-09-01  Raja R Harinath  <rharinath@novell.com>
10665
10666         * reflection.c (encode_marshal_blob): 'marshaltype' and
10667         'marshaltyperef' are alternate sources for the custom marshaler
10668         name.
10669
10670 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
10671
10672         * class.c: fix creation of array classes with rank == 1
10673         (patch by Ankit Jain <jankit@novell.com>).
10674
10675 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
10676
10677         * object.c: fix check for creating the bound data for arrays vs
10678         szarrays.
10679
10680 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10681
10682         * object.c: configuration file name is now based on the executable name,
10683         not the image name. Fixes bug #75931.
10684
10685 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
10686
10687         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
10688         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
10689
10690 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
10691
10692         * rand.c: Use wincrypt.h instead of WinCrypt.h.
10693
10694 2005-08-24  Ankit Jain  <jankit@novell.com>
10695             Raja R Harinath  <rharinath@novell.com>
10696
10697         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
10698           called by it recursively.
10699           (mono_class_init): Remove special case in pending_init handling, since it's
10700           superseded by the fix to mono_class_from_typeref.
10701
10702 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10703
10704         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
10705         BROKEN_THREAD_START stuff.
10706
10707 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
10708
10709         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
10710         trampoline.
10711
10712         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
10713         
10714         * object.c (mono_delegate_ctor): Replace the original function address with
10715         a delegate trampoline.
10716
10717 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
10718
10719         * icall.c: add boolean argument to base64_to_byte_array and 
10720         InternalFromBase64String to control whether a whitespace-only string
10721         is allowed (or should casue a FormatException to be thrown). We need
10722         this as the behavior has changed between MS.NET 1.x and 2.0, and we
10723         to match the MS behaviour in both profiles.
10724         * appdomain.c: Bump corlib version.
10725
10726 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10727
10728         This patch implements a big portion of publisher policy
10729         support, used to bind assembly versions and redirect
10730         one assembly from version A to version B.
10731
10732         * assembly.c:
10733         New GSList loaded_assembly_bindings, for storing the cached
10734         assembly bindings.
10735         (assembly_binding_maps_name): New static function for checking if a 
10736         assembly binding information maps an assembly name.
10737         (mono_assembly_binding_info_free): New function for freeing
10738         assembly binding information resources.
10739         (get_publisher_policy_info): New static function for retrieving 
10740         assembly binding information from a MonoImage.
10741         (compare_versions): New static function for comparing an assembly
10742         binding information data and the version of an assembly name.
10743         (check_policy_versions): New static function for checking if an
10744         assembly binding info mapping an assembly name is valid for it.
10745         (mono_assembly_load_publisher_policy): New static function for
10746         loading the 'policy.major.minor.MyAssembly' image for an assembly
10747         with an assembly name 'aname'.
10748         (mono_assembly_bind_version): New static function for updating
10749         assembly redirection.
10750         (mono_assembly_apply_binding): New static function for applying
10751         assembly binding.
10752         (search_binding_loaded): New static function for searching 
10753         loaded assembly binding infos in the cache domain.
10754         (mono_assembly_load_full): Don't apply assembly binding for
10755         reflection only assemblies.
10756
10757         * metadata-internals.h: Add MonoAssemblyBindingInfo,
10758         which contains information about assembly binding. Also
10759         declare signature for mono_config_parse_publisher_policy ()
10760         function, used to retrieve pub policy info.
10761         
10762         * mono-config.c:
10763         (publisher_policy_start): New static function used to parse publisher 
10764         policy config files.
10765         (publisher_policy_parser): New static MonoParseHandler containing 
10766         the functions used when parsing config files.
10767         (mono_config_parse_publisher_policy): New function for parsing
10768         publisher policy files.
10769         
10770 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
10771
10772         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
10773
10774         * marshal.c (mono_delegate_free_ftnptr): Ditto.
10775
10776         * object.c (mono_get_addr_from_ftnptr): New helper function.
10777
10778         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
10779
10780         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10781
10782 2005-08-19  Dick Porter  <dick@ximian.com>
10783
10784         * threads.c, threads.h, appdomain.c, appdomain.h,
10785         profiler-private.h, monitor.c, object.c, object-internals.h,
10786         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
10787         store the thread ID, so it can hold a 64 bit value if needed.
10788
10789 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
10790
10791         * reflection.c (mono_reflection_create_dynamic_method): Store the
10792         handle class into the method references as well so ldtoken works in
10793         dynamic methods.
10794
10795         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
10796         types.
10797
10798 2005-08-19  Ankit Jain <jankit@novell.com>
10799
10800         Fix #75847.
10801         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
10802           here rather than using the method signature of a arbitrary function
10803           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
10804           two arguments.
10805           Hack done with Harinath.
10806
10807 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10808
10809         * threadpool.c: disable printing stack traces when we get a exception
10810         in a threadpool thread. I need to do more testing to figure out which
10811         cases actually print this. Fixes bug #75828.
10812
10813 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10814
10815         * icall.c: there might be ignored whitespace after the last '='. This
10816         fixes length computation and bug #75840.
10817
10818 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
10819
10820         * assembly.c (mono_assembly_load_full): Consider .exe extension as
10821         well. Fixes #75809.
10822
10823         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
10824         #75784.
10825         
10826         * reflection.c (create_custom_attr_data): Ditto.
10827
10828 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
10829
10830         * locales.c, culture-info.h : removed RegionLCIDMap.
10831         * culture-info-tables.h : regenerated.
10832
10833 2005-08-16  Martin Baulig  <martin@ximian.com>
10834
10835         * class.c (mono_type_get_name_recurse): Small fix.
10836
10837 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
10838
10839         * locales.c : indentation fixie.
10840
10841 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
10842
10843         * object-internals.h,
10844           locales.h,
10845           locales.c,
10846           culture-info.h,
10847           icall.c : added RegionInfo table support.
10848         * culture-info-table.h : regenerated for region support.
10849
10850 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
10851
10852         * reflection.c (resolve_object): handle all kinds of MonoMethod
10853         including generic ones
10854
10855 2005-08-12  Ankit Jain <jankit@novell.com>
10856
10857         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
10858           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
10859
10860 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
10861
10862         * process.c: Don't close a thread handle when it's NULL. This is a
10863         workaround for bug #75733.
10864
10865 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
10866
10867         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
10868
10869 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
10870
10871         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
10872
10873 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10874
10875         * threadpool.c: if a work item in the thread pool has a callback that
10876         catches a exception, don't propagate it after invoking the callback.
10877         Fixes bug #75336.
10878
10879 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
10880
10881         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
10882
10883         * class-internals.h (MonoCachedClassInfo): Add some new fields.
10884
10885         * class.c (mono_class_init): Load field info lazily in the AOT case.    
10886
10887         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
10888
10889 2005-08-03  Ankit Jain  <jankit@novell.com>
10890
10891         Fix #75683.
10892         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
10893           PInvoke calling convention is 0.
10894
10895 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
10896
10897         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
10898         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
10899
10900 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
10901
10902         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
10903         to handle threads not started by the GC (patch by Michael Meeks
10904         <michael.meeks@novell.com>).
10905
10906 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
10907
10908         * reflection.c: Make buffer used in emitting types larger for some
10909         big generic types (patch by Michal Moskal).
10910
10911 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
10912
10913         * mono-debug.c: Fix some (not all) alignment problems.
10914
10915 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10916
10917         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
10918         Invoke mono_image_load_from_data_full passing the refonly
10919         parameter.
10920
10921         * assembly.c
10922         (mono_assembly_open_from_bundle): Add the refonly argument, 
10923         in order to pass it to other methods it calls to.
10924         (do_mono_assembly_open): Add the refonly argument, in order 
10925         to pass it to other methods it calls to.
10926         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
10927         the refonly parameter to it.
10928
10929         * image.c: Add loaded_images_refonly_hash and
10930         loaded_images_refonly_guid_hash to cache the reflection
10931         only loaded images.
10932         (mono_images_init): Initialize the hash tables used for
10933         caching the reflection only images.
10934         (load_modules): Invoke mono_image_open_full passing the refonly
10935         parameter to load the modules the correct way.
10936         (build_guid_table): Add the refonly argument, to re-build the 
10937         correct hash table.
10938         (do_mono_image_open): Added the refonly argument, in order to
10939         define it for the loaded image.
10940         (mono_image_loaded_full): New function, which receives an
10941         additional parameter to look for the image in the refonly or
10942         non-refonly section.
10943         (mono_image_loaded): Updated, using mono_image_loaded_full.
10944         (mono_image_loaded_by_guid_full): The same case that happens
10945         with mono_image_loaded_full.
10946         (mono_image_loaded_by_guid): Likewise.
10947         (register_image): Use the ref_only variable inside MonoImage
10948         to decide in which hash table store the current image.
10949         (mono_image_open_from_data_full): Rename
10950         mono_image_open_from_data to mono_image_open_from_data_full,
10951         adding the refonly argument, to define the ref_only variable 
10952         inside MonoImage.
10953         (mono_image_open_from_data): Return 
10954         mono_image_open_from_data_full.
10955         (mono_image_open_full): Rename mono_image_open to
10956         mono_image_open_full, receiving the new refonly argument,
10957         to pass it to inner methods.
10958         (mono_pe_file_open): Update this function, to open
10959         a MonoImage as a non-refonly image.
10960         (mono_image_close): Use the refonly variable inside
10961         MonoImage to remove the image from the correct caches.
10962
10963         * image.h: Add the signatures of mono_image_open_full,
10964         mono_image_open_from_data_full, mono_image_loaded_full,
10965         mono_image_loaded_by_guid_full.
10966
10967         * metadata-internals.h: Add the ref_only field to 
10968         MonoImage.
10969         
10970 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10971
10972         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
10973         Fix the last behavior, which used to load the assemblies and
10974         extract MonoReflectionAssemblyName information, instead of
10975         extract it from the metadata tables. Needed for Reflection
10976         Only assemblies.
10977         
10978 2005-07-29  Martin Baulig  <martin@ximian.com>
10979
10980         * mono-debug-debugger.c
10981         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
10982         not initialized.
10983
10984         * mono-debug.c
10985         (mono_debug_address_from_il_offset): Check whether we have
10986         debugging support before attempting to take the lock.
10987         (mono_debug_source_location_from_address): Likewise.
10988         (mono_debug_source_location_from_il_offset): Likewise.
10989         (mono_debug_il_offset_from_address): Likewise.
10990         (mono_debug_address_from_il_offset): Likewise.
10991
10992 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
10993
10994         * class.c (mono_class_from_name_case): Add support for dynamic images.
10995         Fixes #75650.
10996
10997         * object.c (mono_class_compute_gc_descriptor): Add a workaround
10998         for #75479.
10999
11000 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11001         
11002         * reflection.c (mono_method_get_object): Fix warning.
11003
11004 2005-07-28  Martin Baulig  <martin@ximian.com>
11005
11006         * mono-debug.c
11007         (mono_debug_add_wrapper): Also write the wrapper type.
11008
11009 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11010
11011         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
11012         
11013         * class.c (mono_class_init): Avoid reading nested classes if the AOT
11014         data indicates the class has none.
11015
11016 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
11017
11018         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
11019         loader lock with the debugger lock. Prevents deadlocks for beagle.
11020
11021         Beagle can now run on an smp box for a weekend without any
11022         issues. Woohoo!
11023
11024 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
11025
11026         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
11027         in a module. Fixes #75629.
11028
11029 2005-07-26  Martin Baulig  <martin@ximian.com>
11030
11031         * mono-debug.c (mono_debug_add_wrapper): New static method.
11032         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
11033         interncall or a wrapper.
11034
11035         * mono-debug.h (MonoDebugWrapperData): New public typedef.
11036         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
11037         (MONO_DEBUGGER_VERSION): Bump to 51.
11038
11039         * mono-debug-debugger.c
11040         (mono_debugger_add_type): Removed this empty function.
11041         (mono_debugger_add_method): Likewise.
11042
11043 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11044
11045         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
11046         before accessing method->slot.
11047
11048 2005-07-21  Jb Evain  <jbevain@gmail.com>
11049
11050         * reflection.c (method_encode_clauses/class): Handle filters clauses.
11051         Fixes #75010.
11052
11053 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11054
11055         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
11056         #75587.
11057
11058 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11059
11060         * image.h image.c: Add mono_image_get_guid () API function.
11061
11062 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
11063
11064         There were issues when multiple threads tried to load
11065         assemblies. A deadlock was created between assemblies_mutex and
11066         mono_domain_assemblies_lock. This fixes the issue by making the
11067         assembly ref counting be lock free. See bug 75586.
11068         
11069         * image.c (mono_image_close): The add ref function here was using
11070         Interlocked operations while the unref was using a mutex and a
11071         --. I don't think this was ever a bug that would be exposed in a
11072         non-pendantic way (ie, by an embedder doing a ref on one thread
11073         and an unref on another), but for the sake of correctness, this is
11074         now Interlocked.
11075
11076         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
11077         (mono_assembly_load_reference): Call mono_assembly_addref rather
11078         than touching the refcount ourselves.
11079         (mono_assembly_close): Use InterlockedDecrement to unref the
11080         assembly. Don't acquire the lock unless it is actually needed.
11081
11082 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11083
11084         * class.c (mono_class_layout_fields): Fix calculation of has_references
11085         for generic types.
11086
11087 2005-07-12  Martin Baulig  <martin@ximian.com>
11088
11089         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11090
11091         * metadata.c
11092         (mono_type_hash): Provide better hashing for generic instances.
11093         (mono_generic_inst_hash): Improve hashing.
11094         (mono_generic_class_hash): Likewise.
11095
11096         * reflection.c (mymono_metadata_type_hash): Improve hashing for
11097         generic instances.
11098
11099 2005-07-12  Martin Baulig  <martin@ximian.com>
11100
11101         * reflection.c (mono_reflection_create_runtime_class): Remove the
11102         hack for generic type definitions and non-`Run' assemblies.
11103         (mono_reflection_bind_generic_parameters): Also use
11104         `klass->wastypebuilder' to check for TypeBuilders.
11105
11106 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11107
11108         * class.c (mono_class_layout_fields): Fix calculation of has_references
11109         for generic types.
11110
11111         * class.c (inflate_generic_class): Fix a leak.
11112         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
11113         for generic types.
11114
11115 2005-07-11  Martin Baulig  <martin@ximian.com>
11116
11117         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
11118         on error.
11119
11120 2005-07-11  Martin Baulig  <martin@ximian.com>
11121
11122         * loader.c (find_method): Also lookup in
11123         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
11124
11125 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11126
11127         * appdomain.c (mono_domain_unload): Don't free the error message
11128         before passing it to mono_get_exception_...
11129
11130         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
11131         
11132 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
11133
11134         * threads.c: try to better guess an available RT signal (bug #75387).
11135
11136 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11137
11138         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
11139         and CACHE_OBJECT.
11140
11141 2005-07-07  Martin Baulig  <martin@ximian.com>
11142
11143         * class.c (mono_type_get_name_full): Return NULL for
11144         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
11145         fixes #75408.
11146
11147 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11148
11149         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
11150         exit the appdomain as well being aborted.
11151
11152         * threadpool.c: Create all threadpool threads inside the root appdomain, and
11153         change back to the root domain after calling managed code. This enables
11154         appdomains using threadpools to be unloaded.
11155
11156 2005-07-07  Martin Baulig  <martin@ximian.com>
11157
11158         * class-internals.h
11159         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
11160         into `MonoDynamicGenericClass' since we only need it for dynamic
11161         types.
11162
11163         * reflection.c (mono_class_bind_generic_parameters): We don't need
11164         to compute the `parent' here.
11165
11166 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
11167
11168         * culture-info-table.h : regenerated.
11169
11170 2005-07-06  Martin Baulig  <martin@ximian.com>
11171
11172         * icall.c
11173         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
11174
11175         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
11176
11177 2005-07-06  Martin Baulig  <martin@ximian.com>
11178
11179         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
11180         we're doing a signature-only comparision; fixes #74945.
11181
11182 2005-07-06  Martin Baulig  <martin@ximian.com>
11183
11184         * class-internals.h (MonoGenericClass): Moved some things out into
11185         a new `MonoInflatedGenericClass' type.  
11186         (MonoInflatedGenericClass): New type; the `klass' of a
11187         `MonoGenericClass' is now computed lazyly in
11188         mono_get_inflated_generic_class().      
11189
11190         * class.c (mono_get_inflated_generic_class): New public function.
11191         (mono_class_inflate_generic_method): Removed the unused
11192         `MonoClass *' argument.
11193         (setup_generic_vtable): Don't call mono_get_inflated_method() on
11194         all the methods.
11195         (mono_class_create_generic): Make this static and merge it with
11196         mono_class_create_generic_2(); we're now called automatically from
11197         mono_get_inflated_generic_class().
11198
11199         * loader.c (mono_method_signature): Call
11200         mono_get_inflated_method() here.
11201
11202 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
11203
11204         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
11205         type of fields with RVA.
11206
11207         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
11208         for this pseudo class.
11209         (my_mono_class_from_generic_parameter): Likewise.
11210         (mono_class_init): Allow interfaces to have cctors.
11211
11212 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11213
11214         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
11215         lazily for AOT methods.
11216
11217 2005-07-05  Martin Baulig  <martin@ximian.com>
11218
11219         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
11220         returns FALSE for a successful match, not TRUE.
11221
11222 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11223
11224         * loader.c (mono_method_get_index): Optimize this a bit.
11225
11226 2005-07-04  Martin Baulig  <martin@ximian.com>
11227
11228         * class.c
11229         (class_compute_field_layout): Move the check for generic type
11230         definitions into mono_class_layout_fields().  Fixes #74684.
11231         (mono_class_from_generic_parameter): Correctly compute
11232         `klass->parent'; fixes #75457.
11233
11234         * reflection.c (register_assembly, register_module): Make sure
11235         `domain->rejobject_hash' is already created.
11236
11237 2005-07-02  Martin Baulig  <martin@ximian.com>
11238
11239         * class-internals.h
11240         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
11241         `MonoDynamicGenericClass'.      
11242
11243 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
11244
11245         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
11246         returned by a field getter is null, since null is a valid value.
11247
11248 2005-07-01  Martin Baulig  <martin@ximian.com>
11249
11250         * reflection.c (mono_reflection_generic_class_initialize): Update
11251         the `dgclass->fields [i].parent' to the correct class.
11252         (mono_image_get_fieldref_token): Use the declaring type, not the
11253         reflected type.
11254
11255 2005-07-01  Martin Baulig  <martin@ximian.com>
11256
11257         * loader.c (find_method): Also look in the interfaces; fixes #75429.
11258
11259 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
11260
11261         * threads.c (thread_cleanup): assert that thread != NULL
11262         (wait_for_tids_or_state_change): We were using the wrong variable
11263         when accessing wait->threads. `i' was always out of the bounds of
11264         the array.
11265
11266 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11267
11268         * loader.c: map user32 and kernel32 to libMonoSupportW
11269
11270 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11271
11272         * appdomain.c (unload_thread_main): Mark this as WINAPI.
11273
11274 2005-06-28  Martin Baulig  <martin@ximian.com>
11275
11276         * loader.c (method_from_methodspec): Fix #75334.
11277
11278 2005-06-28  Martin Baulig  <martin@ximian.com>
11279
11280         Fix #74953 - Arrays now implement the generic IList<T> interface
11281         on the 2.0 platform.
11282
11283         * class-internals.h (MonoDefaults): Added `generic_array_class'.
11284
11285         * reflection.c (mono_class_bind_generic_parameters): New public
11286         function; similar to mono_reflection_bind_generic_parameters(),
11287         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
11288
11289         * domain.c (mono_init_internal): Try to initialize.
11290         `mono_defaults.generic_array_class' here; this'll only succeed if
11291         we're using the 2.0 corlib.
11292
11293         * icall.c
11294         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
11295         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
11296         (mono_lookup_internal_call): Added support for nested classes.
11297
11298         * loader.c
11299         (mono_get_method_from_token): Set `result->signature->pinvoke' if
11300         we're an interncall and have generic arguments.
11301
11302         * class.c
11303         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
11304         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
11305         instance of System.Array.InternalArray<T> for arrays, so they
11306         implement the generic IList<T> interface.
11307
11308 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
11309
11310         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
11311         (chastamar@yahoo.com). Fixes #75374.    
11312
11313 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
11314
11315         * culture-info-table.h: regenerated.
11316
11317 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11318
11319         * icall.c: handle spaces correctly for base64 strings.
11320
11321 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11322
11323         * *.c: Kill some warnings.
11324
11325 2005-06-23  Duncan Mak  <duncan@novell.com>
11326
11327         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
11328         that this builds on Solaris 10 (x86).
11329
11330 2005-06-23  Martin Baulig  <martin@ximian.com>
11331
11332         * class.c
11333         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
11334         generic type definitions.
11335
11336 2005-06-23  Martin Baulig  <martin@ximian.com>
11337
11338         Fix #75331.
11339
11340         * metadata.c (mono_class_get_overrides): Renamed to
11341         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
11342         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
11343         pass it to mono_get_method_full().
11344
11345 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
11346
11347         * reflection.c (mono_reflection_create_runtime_class): take the
11348         mono_domain_lock in this method. Prevents deadlocks
11349
11350 2005-06-22  Martin Baulig  <martin@ximian.com>
11351
11352         * loader.c (method_from_methodspec): Fix #75330.
11353
11354 2005-06-22  Martin Baulig  <martin@ximian.com>
11355
11356         * reflection.c (type_get_qualified_name): Use
11357         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
11358         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
11359         argument; use it if we don't have an assembly name.
11360
11361 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
11362
11363         * object.c: In mono_message_init, set "copy out" flag for in
11364         parameters with the [Out] flag.
11365
11366 2005-06-21  Martin Baulig  <martin@ximian.com>
11367
11368         * class.c
11369         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
11370         and MONO_TYPE_PTR.
11371
11372 2005-06-21  Martin Baulig  <martin@ximian.com>
11373
11374         * class.c (mono_class_init): Don't initialize `class->fields' for
11375         generic instances since they're initialized again in
11376         compute_field_layout(). 
11377         (compute_field_layout): Set the field's `generic_info' here; fix
11378         #75320. 
11379
11380 2005-06-21  Martin Baulig  <martin@ximian.com>
11381
11382         * class-internals.h
11383         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
11384
11385         * metadata.c (mono_metadata_generic_method_equal): Also
11386         distinguish the `generic_class'; fixes #75334.
11387
11388 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11389
11390         * domain.c:
11391         * appdomain.c:
11392         * domain-internals.h:
11393         * reflection.c: 'domain_assemblies' field is now protected by its own
11394         lock. Don't call into managed code to run the AssemblyLoad event if we
11395         now there are no registered delegates for it.
11396
11397 2005-06-20  Martin Baulig  <martin@ximian.com>
11398
11399         * class.c (mono_class_is_assignable_from): Use a custom version of
11400         mono_class_has_parent() to make things work for generic instances;
11401         fix #75300.
11402
11403 2005-06-20  Martin Baulig  <martin@ximian.com>
11404
11405         * loader.c (method_from_methodspec): Apply a patch from
11406         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
11407
11408 2005-06-20  Martin Baulig  <martin@ximian.com>
11409
11410         * class.c (mono_class_init): Reverted Zoltan's last change; it
11411         breaks generics.
11412
11413 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11414
11415         * threads.c (wait_for_tids_or_state_change): Add missing locking.
11416
11417 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11418
11419         * socket-io.c: fix the index in the socket array for writable/error
11420         sockets. Fixes bug #75306.
11421
11422 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11423
11424         * class.c (mono_class_init): Allow interfaces to have static ctors.
11425
11426 2005-06-17  Martin Baulig  <martin@ximian.com>
11427
11428         * loader.c (method_from_methodspec): Use `context->container' when
11429         parsing the `gmethod->inst'.
11430
11431 2005-06-17  Martin Baulig  <martin@ximian.com>
11432
11433         * class.c (mono_type_get_name_recurse): Don't add the assembly
11434         name for type arguments.
11435
11436 2005-06-15  Martin Baulig  <martin@ximian.com>
11437
11438         * reflection.c (mono_image_get_inflated_method_token): Encode
11439         correct klass; fixes #75260.
11440
11441 2005-06-13 Michal Moskal <malekith@nemerle.org>
11442
11443         * icall.c: Make GetCorrespondingMethod/Constructor take
11444         MonoReflectionMethod method not MonoMethod. Removed
11445         MonoType.GetCorrespondingField, and make
11446         MonoGenericType.GetCorrespondingField take name not
11447         MonoClassField.
11448
11449 2005-06-13  Michal Moskal <malekith@nemerle.org>
11450
11451         * reflection.c (field_encode_signature, encode_locals):
11452          Make sizes of buffers for types larger (for big generic types).
11453          (create_generic_typespec,
11454          mono_reflection_sighelper_get_signature_local,
11455          mono_reflection_sighelper_get_signature_field):
11456          Add asserts for too small buffers.
11457
11458 2005-06-15  Martin Baulig  <martin@ximian.com>
11459
11460         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
11461         if our parent is not a dynamic type.
11462
11463 2005-06-15  Martin Baulig  <martin@ximian.com>
11464
11465         * class-internals.h (MonoTypeNameFormat): New enum.
11466
11467         * class.c
11468         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
11469         (mono_type_get_full_name): Removed.
11470         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
11471         argument instead of the boolean's.
11472
11473         * icall.c (ves_icall_System_MonoType_getFullName):
11474         Added `gboolean assembly_qualified'.    
11475
11476         * reflection.h
11477         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
11478
11479         * reflection.c (mono_reflection_parse_type): Parse the new type
11480         name format.
11481
11482 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11483
11484         * icall.c: no need to convert from utf16 to utf8 and then back again
11485         after the call to GetLogicalDrives.
11486
11487 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11488
11489         * icall.c: frombase64. Fix problems exposed by new tests.
11490
11491 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11492
11493         * icall.c: added internal calls for converting char [] and strings in
11494         base64 into byte [].
11495
11496 2005-06-10  Martin Baulig  <martin@ximian.com>
11497
11498         * class.c (mono_class_create_generic_2): Read the nested classes
11499         from the metadata rather than from `gklass->nested_classes' since
11500         `gklass' might not be initialized yet.
11501
11502 2005-06-09  Duncan Mak  <duncan@novell.com>
11503
11504         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
11505         all public headers. Fixes #74919.
11506
11507 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
11508
11509         * domain.c: The key for proxy_vtable_hash is now a pointer
11510         array. Added new GHashFunc and GCompareFunc functions for this.
11511
11512         * class.h: The list of interfaces in MonoRemoteClass is known in
11513         advance and can't grow (we create a new MonoRemoteClass if needed),
11514         so now the interface array can be allocated together with
11515         MonoRemoteClass.
11516         
11517         * object.c: Added a new method create_remote_class_key.
11518         Fixed mono_remote_class so it does not depend on
11519         mono_upgrade_remote_class.
11520         Removed extend_interface_array.
11521         Added new method clone_remote_class(), which makes a copy of a remote
11522         class and adds a new interface or class to it.
11523         mono_upgrade_remote_class() now creates a new remote class (or gets
11524         it from the cache) if an vtable upgrade is needed. In this way
11525         we make sure that other objects sharing the same remote class
11526         don't get the new vtable with unwanted interfaces.
11527         
11528         * object-internals.h:
11529         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
11530         
11531         * marshal.c: Track changes in mono_upgrade_remote_class().
11532
11533 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
11534         * icall.c: Add runtime methods for obtaining members of inflated
11535         class, which were created from supplied non-inflated members. It
11536         is used in internal Get{Method,Constructor,Field} methods in
11537         System.Type
11538
11539 2005-06-09  Martin Baulig  <martin@ximian.com>
11540
11541         * reflection.c
11542         (mono_reflection_bind_generic_method_parameters): Fix #75169.
11543
11544 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11545         * reflection.c (mono_image_basic_init): Define
11546         Version in MonoDynamicAssembly. 
11547         
11548 2005-06-08  Martin Baulig  <martin@ximian.com>
11549
11550         Fix #75136.
11551
11552         * loader.c
11553         (mono_method_signature_full): New public method; takes a
11554         `MonoGenericContext *'.
11555         (find_method): Use mono_method_signature_full() and pass the
11556         klass'es context to it.
11557
11558         * class.c (mono_class_is_inflated_method): Use
11559         mono_method_signature_full() and pass the context to it.
11560
11561 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
11562
11563         * object.c: add proper locking in mono_remote_class_vtable(),
11564         fixes possible memory corruption.
11565
11566 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
11567
11568         * marshal.c (mono_remoting_marshal_init): set
11569         initialized after initialization.
11570
11571 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
11572
11573         * locales.c : hush.
11574
11575 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
11576
11577         * object.c (extend_interface_array): fix really silly
11578         memory corrupting / comparison bug.
11579
11580 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11581
11582         * reflection.c: Functions added to support the creation
11583         of CustomAttributeData, which includes Attribute data
11584         used by ReflectionOnly methods.
11585
11586         * reflection.h:  mono_reflection_get_custom_attrs_data and
11587          mono_custom_attrs_data_construct added (functions exposed).
11588
11589          * icall.c: Added mono_reflection_get_custom_attrs_data
11590          as icall.
11591         
11592 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11593
11594         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
11595         lupus's request.
11596
11597 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
11598
11599         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
11600
11601         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
11602         dynamic DllImportAttribute.
11603
11604         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
11605         dynamic DllImportAttribute.
11606
11607         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
11608         Fixes #75162.
11609
11610 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11611
11612         * threads.c: avoid segfault when an unstarted thread is aborted.
11613
11614 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
11615
11616         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
11617         Returns the name and version of the runtime for reporting.
11618
11619 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11620
11621         * appdomain.c: bump corlib version.
11622         * object-internals.h: new field in MonoReflectionAssembly.
11623
11624 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11625
11626         * object-internals.h: Carlos forgot to add this field.
11627
11628 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11629
11630         * icall.c: Added create_version to create instances
11631         of Version of MonoReflectionAssemblyName. This change helps
11632         the AssemblyName tests to keep running fine.
11633         
11634 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
11635   
11636         * object.c (mono_method_return_message_restore): A somehow less
11637         intrusive fix for #75138.
11638
11639 2005-06-03  Raja R Harinath  <rharinath@novell.com>
11640
11641         * object.c (mono_method_return_message_restore): Fix computation
11642         of expected number of out args.
11643
11644 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11645
11646         * reflection.c (mono_image_get_method_info): Fix the case when the
11647         charset is empty.
11648
11649 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
11650
11651         * object.c: Added missing null check in
11652           mono_method_return_message_restore.
11653
11654 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11655
11656         * reflection.c (mono_image_get_method_info): Handle the case when
11657         dllentry is empty.
11658
11659 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
11660
11661         * object.c: When creating the vtable for a proxy, take into account
11662         all inherited interfaces, not only the ones registered in
11663         iclass->interfaces. This fixs bug #74996.
11664         Also, in mono_method_return_message_restore, verify that the array
11665         of out args has the expected lengh.
11666
11667 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11668
11669         * socket-io.c: update the timeout in Poll when the call is interrupte.
11670
11671 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11672
11673         * socket-io.c: support abort/suspend in Select_internal after last
11674         change.
11675
11676 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11677
11678         * threadpool.c: remove warning.
11679
11680 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11681
11682         * icall.c:
11683         * socket-io.[ch]: Select_internal uses poll() now when available, thus
11684         removing the 1024 limit from select(). Runtime part of the fix for
11685         bug #71203.
11686
11687 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11688
11689         * socket-io.c: when resolving the addresses for the same
11690         host returned by gethostname(), get the local IPs from the interface
11691         list. Loopback addresses are discarded if the are interfaces up with
11692         non-loopback ones. Fixes bug #63265.
11693
11694 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
11695
11696         * appdomain.c, verify.c, object-internals.h, reflection.c:
11697         bumped corlib number to 36, and added new extra_flags field
11698         to ReflectionMethodBuilder and friends.  Fixes #75060.
11699
11700 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
11701
11702         * gc.c: register a new weak link only if the object is non-null
11703         (fixes bug#75047).
11704
11705 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11706
11707         * culture-info.h : short time pattern too.
11708
11709 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11710
11711         * culture-info.h : expand long time pattern string length.
11712
11713 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11714
11715         * culture-info-table.h : update (more French date format; #72788).
11716
11717 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
11718
11719         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
11720         the method is static. Fixes #75029.
11721
11722 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
11723
11724         * reflection.c: Update the table_idx field of method builders after
11725         saving the module, since it can change. This is a workaround for
11726         bug #74914. 
11727
11728 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11729
11730         * culture-info-table.h : update (additional French date format).
11731
11732 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11733
11734         * icall.c (ves_icall_type_Equals): Revert last change.
11735         
11736         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
11737
11738         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
11739
11740 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
11741
11742         * class-internals.h: Added executioncontext_class field to 
11743         MonoDefaults structure.
11744         * domain.c: Cache System.Threading.ExecutionContext class in 
11745         mono_defaults.
11746         * object.c: Capture the ExecutionContext for asynchroneous calls in
11747          mono_async_result_new.
11748         * object-internals.h: Added execution_context and original_context 
11749         fields to MonoAsyncResult. Added execution_context to MonoThread.
11750         * security-manager.c|.h: Added mono_get_context_capture_method to 
11751         return the capture method (if required by the security manager or by
11752         the framework version used).
11753         * threadpool.c: Apply capture (if present) ExecutionContext in 
11754         mono_async_invoke and revert to original context after it completes.
11755
11756 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
11757
11758         * culture-info-table.h : updated (real hacky solution for zh-CHT).
11759
11760 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
11761
11762         * culture-info-table.h : zh-CHT related workaround.
11763
11764 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11765
11766         * marshal.c (emit_marshal_custom): Add some error checking and call the
11767         methods in the ICustomMarshaler interface. Fixes #74875.
11768         
11769         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
11770         native->managed wrappers.
11771
11772 2005-05-12  Martin Baulig  <martin@ximian.com>
11773
11774         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
11775         here and use the loader lock.
11776
11777         * mono-debug.c: Properly lock when the debugger is not attached.
11778         (mono_debug_init): Release the initial lock if we're not running
11779         in the debugger.
11780
11781 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11782
11783         * marshal.c (emit_marshal_custom): Pass through NULL values without
11784         calling the custom marshalling routines.
11785
11786         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
11787         conversion in structures. Fixes #74882.
11788
11789 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
11790
11791         * culture-info-table.h : zh-* cultures were missing.
11792
11793 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
11794
11795         * threads.c: Added a new event background_change_event which is signaled
11796         when a thread changes its background mode.
11797         Moved here several checks previously done in managed code. The checks
11798         require the thread lock, and using the thread lock in managed code
11799         can result in deadlocks.
11800         Merged Start_internal and Thread_internal into a single method. Now 
11801         Thread_internal does all work of creating and starting a thread.
11802         Added icalls for setting and getting the state of the object. Moved from
11803         managed code to avoid locking there.
11804         Added wait_for_tids_or_state_change() which is called instad of
11805         wait_for_tids when waiting for non-backround threads to end. This method
11806         will return if one of the threads ends or the background_change_event
11807         is signaled.
11808         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
11809         the background mode. This method signals the background_change_event
11810         event.
11811         * icall.c:
11812         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
11813         removed Start_internal.
11814         
11815 2005-05-11  Martin Baulig  <martin@ximian.com>
11816
11817         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
11818         to order of some fields to get proper alignment on 64-bit machines.
11819
11820 2005-05-11  Martin Baulig  <martin@ximian.com>
11821
11822         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
11823         changes as they're broken and completely fuck up the debugger.
11824
11825         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
11826
11827 2005-05-10  Martin Baulig  <martin@ximian.com>
11828
11829         * reflection.c (mono_reflection_generic_class_initialize): Don't
11830         call mono_class_setup_parent() here.
11831
11832 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11833
11834         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
11835         send/receive timeout use an integer in milliseconds. We were using a
11836         struct timeval.
11837
11838 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11839
11840         * locales.c:
11841         (internal_get_cultures): reserve the first slot of the array for the
11842         InvariantCulture, which will be filled in managed code.
11843
11844 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
11845
11846         * reflection.c (mono_image_fill_module_table): Initialize the
11847         GENERATION field as well.
11848
11849 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11850
11851         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
11852         Monitor.Enter on the object.
11853
11854 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11855
11856         * threads.c: Enable the wait for running threads when exiting.
11857         * icall.c: Suspend all threads before exiting.
11858
11859 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11860
11861         * assembly.c (mono_assembly_load_reference): Fix warning.
11862
11863 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11864
11865         * threadpool.c: changed the default number of threads per cpu. From now
11866         on, the default will be 20 + (5 * number of cpus) instead of 50.
11867
11868 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
11869
11870         * loader.c (mono_method_get_signature_full): Add locking here.
11871
11872 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
11873
11874         * appdomain.c: Moved methods for parsing and freeing assembly
11875         names to assembly.c.
11876         * assembly.c, domain-internals.h: Created public methods for parsing
11877         assembly names. Fixed mono_assembly_load_with_partial_name:
11878         it now finds the best match, taking into account the version,
11879         token and culture specified in the partial name. Also return
11880         the latest version if no version information is specified.
11881
11882 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
11883
11884         * threadpool.c: replace check for SocketAsyncCall class.
11885
11886 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11887
11888         * threadpool-internals.h:
11889         * Makefile.am: added threadpool-internals.h
11890
11891         * threadpool.c: call mono_unhandled_exception on exceptions not handled
11892         that happen in threadpool threads (tested on MS).
11893         (mono_thread_pool_remove_socket): new function that dispatch any pending
11894         AIO call on a socket that is closing. By now only epoll really needs it,
11895         as select/poll wake up when the socket closes.
11896
11897
11898         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
11899
11900 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
11901
11902         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
11903
11904 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
11905
11906         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
11907
11908 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
11909
11910         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
11911         has an abort request, convert it into a suspend request.
11912
11913 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
11914
11915         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
11916         warning for the usage of `UnmanagedFunctionPointerAttribute' which
11917         is not supported yet.
11918
11919 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11920
11921         * image.c: register assemblies loaded from data (bundles) in the loaded
11922         assemblies hash. Fixes bug #74772.
11923
11924 2005-04-29  Martin Baulig  <martin@ximian.com>
11925
11926         * class.c (mono_type_get_name_recurse): Update to the new naming
11927         schema from the latest .NET 2.x beta2.
11928         (mono_class_setup_vtable_general): If we're a generic instance,
11929         copy the vtable from our generic type definition and inflate all
11930         the methods in it.
11931
11932         * loader.c (find_method): Update to the new naming schema from the
11933         latest .NET 2.x beta2.
11934
11935 2005-04-29  Raja R Harinath  <harinath@gmail.com>
11936
11937         * class.c (mono_class_init): Add a mono_loader_unlock to the
11938         #74734 fix.
11939
11940 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11941
11942         * icall.c (ves_icall_System_Environment_Exit): Remove the 
11943         suspend_all_other_threads () call for the time being, since it can hang.
11944
11945         * threads.c (mono_thread_manage): Similarly, disable the waiting for
11946         the background threads to exit, since it can also hang.
11947
11948         * class.c (mono_class_init): Applied patch from Ankit Jain 
11949         (radical@gmail.com). Avoid pending init errors when a field refers
11950         to a nested class using a typeref. Fixes #74734.
11951
11952         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
11953         this for dynamic modules.
11954
11955 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11956
11957         * threads.c: don't wait for threads that are in the process of aborting
11958         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
11959         and waiting for background threads to finish. This makes xsp and
11960         mod-mono-server exit without random length delays and/or hangs.
11961
11962 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11963
11964         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
11965
11966 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
11967
11968         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
11969         dynamic types to prevent infinite loops. Fixes #74727.
11970
11971         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
11972         ..._is_assignable_to.
11973
11974 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
11975
11976         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
11977
11978 2005-04-25  Martin Baulig  <martin@ximian.com>
11979
11980         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
11981
11982         * domain.c
11983         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
11984
11985         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
11986
11987         * reflection.c (build_compressed_metadata): Set metadata header
11988         version to 2.0.
11989
11990 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11991
11992         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
11993         number into an integral and a decimal part. Fixes #70473.
11994
11995         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
11996
11997 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
11998
11999         * culture-info-table.h : reflected the latest locale-builder output.
12000
12001 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12002
12003         * threadpool.c: check for SuspendRequested too when deciding if
12004         mono_thread_interruption_checkpoint should be called.
12005
12006 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12007
12008         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
12009         * threads.c: remove interruption_mutex and use Interlocked instead. When
12010         suspending all the threads, wait for all the suspended events at once.
12011         If we're shutting down and get an APC that is going to be queued,
12012         call mono_thread_execute_interruption immediately, as the thread might
12013         be sleeping on a pthread condition or mutex.
12014
12015         * icall.c: call mono_runtime_set_shutting_down before suspending the
12016         threads.
12017
12018         Fixes bug #74693. And now xsp is happier when exiting.
12019
12020 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12021
12022         * loader.c (mono_stack_walk): Fix #74690.
12023
12024 2005-04-22  Martin Baulig  <martin@ximian.com>
12025
12026         * mono-debug.h (MonoDebugMethodJitInfo): Added
12027         `MonoDebugMethodJitInfo *jit'.
12028
12029         * mono-debug.c (mono_debug_read_method): Cache the
12030         MonoDebugMethodJitInfo in `address->jit'.
12031         (mono_debug_free_method_jit_info): New public method.
12032
12033 2005-04-22  Martin Baulig  <martin@ximian.com>
12034
12035         * class.c (mono_class_is_assignable_from): Disallow
12036         type parameter -> interface.
12037
12038 2005-04-21  Dick Porter  <dick@ximian.com>
12039
12040         * threads.c (mono_thread_create): Turn an assertion into an error.
12041
12042 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12043
12044         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
12045         
12046         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
12047         Fix some gcc 4.0 warnings.
12048
12049 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
12050
12051         * file-io.c: fix alt dir separator char on unix systems
12052         and cleanup (fixes bug #71214).
12053
12054 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
12055
12056         * marshal.c: Use CALLVIRT instead of CALL when dispatching
12057         a call to a remote domain, since the method may be an
12058         interface method in the client domain. This fixes bug #74192.
12059
12060 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12061
12062         * threadpool.c: recv/send are now performed before going back to managed
12063         code to save one transition.
12064
12065 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12066
12067         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
12068
12069         * metadata/threadpool.c: removed hack to workaround the bug above.
12070
12071         Fixes bug #74618.
12072
12073 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12074
12075         * reflection.c reflection.h: Fix handling of parameter defaults in
12076         dynamic methods. Also fixes handling of parameter attributes.
12077         Fixes #74609.
12078
12079         * mono-debug.c (mono_debug_close_image): Fix warning.
12080
12081 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12082
12083         * socket-io.h: replaced old unused field with new 'blocking'.
12084         * threadpool.c: restore socket blocking state on windows(tm).
12085
12086 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
12087
12088         * icall.c: don't return the codebase in the AssemblyName[] returned by
12089         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
12090         * object-internals.h: Removed FIXME (fields were presents) and fixed
12091         versioncompat declaration.
12092
12093 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12094
12095         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
12096         not closed, so don't cleanup when it happens.
12097
12098 2005-04-13  Chris Toshok  <toshok@ximian.com>
12099
12100         * mono-debug-debugger.h: change prototype for
12101         mono_debugger_lookup_type.
12102
12103         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
12104         this function, although it should probably be named
12105         mono_debugger_init_type.
12106
12107 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12108
12109         * threadpool.c: fix non-AIO case.
12110
12111 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12112
12113         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
12114         the built-in profiler to measure just JIT compilation times.
12115
12116 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12117
12118         * threadpool.c: the epollfd might be closed by another thread at
12119         any time, so ignore EBADF at treat it as a "we're closing" sign.
12120
12121 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12122
12123         * threadpool.c: release the semaphores with a count equals to the number
12124         of working threads in both IO and regular pools. Fixed typo that messed
12125         up the count of IO pool threads. Don't initialize the pipe handles if
12126         we're using epoll.
12127
12128 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12129
12130         * threadpool.c: some systems don't like a NULL when deleting the socket
12131         from epoll.
12132
12133 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12134
12135         * threadpool.c: fix semaphore allocation.
12136
12137 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12138
12139         * threadpool.c: added epoll() based implementation for asynchronous IO
12140         that is used instead of the default poll() when available.
12141         It can be disabled by setting MONO_DISABLE_AIO.
12142
12143 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12144
12145         * threadpool.c: windows needs 'closesocket' and instead of returning
12146         0 when the stream is closed while in select, it returns -1. Fixes bug
12147         #74573.
12148
12149 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
12150
12151         * class.c (class_compute_field_layout): Fix the regression caused by
12152         the previous try.
12153
12154 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12155
12156         * threadpool.c: separate pool for socket async. IO.
12157         * threadpool.h: mono_max_worker_threads is not a global any more.
12158
12159 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12160
12161         * class.c (class_compute_field_layout): Fix #74549.
12162
12163 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12164
12165         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
12166         use 2 connected sockets instead.
12167
12168 2005-04-08  Miguel de Icaza  <miguel@novell.com>
12169
12170         * mono-config.c: Add new entry point for mkbundle
12171         mono_config_parse_memory. 
12172
12173 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12174
12175         * threadpool.c: removed another unused function.
12176
12177 2005-04-08  Ankit Jain  <radical@corewars.org>
12178
12179         * reflection.c (get_default_param_value_blobs): Add 'types'
12180         parameter to get the types encoded in the constant table.
12181         (mono_param_get_objects): Use the type from the constant table,
12182         not the type of the parameter, when creating default values.
12183         Handle null default values correctly.
12184
12185 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12186
12187         * file-io.c:
12188         * file-io.h:
12189         * threadpool.c:
12190         * threadpool.h:
12191         * icall.c:
12192         * socket-io.c: removed dead code for async IO.
12193
12194 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12195
12196         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
12197
12198         * threadpool.c: intercept socket async. calls and pass them to a thread
12199         that is polling and dispatching the job items to the threadpool as
12200         socket become ready. Fixes bugs #71217, #71933.
12201
12202         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
12203         between char and short/ushort arrays.
12204
12205         * socket-io.c: remove dead code.
12206
12207 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12208
12209         * locales.c,
12210           icall.c : removed InternalToUpper_Comp() and
12211           InternalToLower_Comp().
12212
12213 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12214
12215         * char-conversions.h : The tables were incorrectly generated. Should
12216           be generated against invariant culture.
12217
12218 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12219
12220         * object.c (mono_runtime_invoke_array): Fix return value when 
12221         passing pre-created valuetype objects to ctors.
12222
12223         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
12224         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
12225         Fixes #74338.
12226
12227 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
12228
12229         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
12230         only used with --security and hides the wrong corlib version error.
12231
12232 2005-03-30  Joshua Tauberer  <tauberer@for.net>
12233
12234         * class.c: Changed mono_class_name_from_token so that types
12235         outside of a namespace don't have an initial period.  Improved
12236         the g_warning message used in _mono_class_get when loading
12237         fails.
12238         * assembly.c: In mono_assembly_load_reference, when an assembly
12239         can't be found, "No such file or directory" is misleading and
12240         unhelpful because a few paths were checked for the presence of
12241         the assembly.  When that happens (ENOENT), display a nicer
12242         message indicating the directories that were searched.  In all
12243         cases, the warning is made easier to read for non-hackers.
12244
12245 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12246
12247         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
12248         project/solution.
12249         * appdomain.h|domain.c: Removed inline from functions.
12250         * appdomain.c: Reduced warnings when compiling on windows.
12251         * icall.c: Fixed output_debug declaration to gunichar2*.
12252         * mono-config.c: Reduced warnings when compiling on windows.
12253         * rand.c: Added missing "windows.h". Added missing return value.
12254         * rawbuffer.c: Added missing winsock2.h for windows.
12255         * sysmath.h: Added mono-compiler.h header to allow/ease 
12256         compilation with non-GCC compilers.
12257         * threads.c: Fixed declarations to compile with VS.NET C compiler.
12258         Removed cast warnings.
12259
12260         Adapted from the work of J Lothian (for VC6).
12261
12262 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12263
12264         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
12265         from default_path.
12266
12267 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12268
12269         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
12270         the 2.0 profile.
12271
12272 2005-03-27  Raja R Harinath  <harinath@gmail.com>
12273
12274         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
12275         has to be in $(exec_prefix).  $(prefix) is for arch-independent
12276         stuff, and it would probably use $(prefix)/share rather than
12277         $(prefix)/lib.
12278
12279 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12280
12281         * console-io.c: added 2 includes that might be missing.
12282
12283 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12284
12285         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
12286         profile.
12287
12288         * reflection.c (create_custom_attr): Allocate the params array using
12289         alloca so it gets GC tracking.
12290
12291 2005-03-23  Chris Toshok  <toshok@ximian.com>
12292
12293         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
12294         out some spew.
12295
12296 2005-03-24  Raja R Harinath  <rharinath@novell.com>
12297
12298         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
12299         changes to pick up any changes in prefix, etc.
12300
12301 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12302
12303         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
12304         
12305         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
12306         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
12307
12308 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12309
12310         * class-internals.h object-internals.h class.c reflection.c: Extend the
12311         mono_lookup_dynamic_token () function to return the class of the
12312         token as well. 
12313
12314         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
12315         well. Fixes #73848.
12316
12317 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12318
12319         * security-manager.c: Skip inheritance checks for intra-corlib
12320         class inheritance and method overrides. This skips a lot of checks
12321         and (anyway) permissions cannot work until corlib is loaded.
12322
12323 2005-03-23  Martin Baulig  <martin@ximian.com>
12324
12325         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
12326         MONO_TYPE_GENERICINST.  
12327
12328 2005-03-23  Martin Baulig  <martin@ximian.com>
12329
12330         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
12331
12332 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12333
12334         * class.c: added locking comments to some functions.
12335         Cache the interface offsets arrays (saves about 20 KB
12336         of runtime memory in a typical app).
12337         Reduce the time overhead in mono_class_setup_supertypes ().
12338
12339 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
12340
12341         * icall.c: speedup and fix leaks in GetMethodsByName and
12342         GetPropertiesByName.
12343
12344 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12345
12346         * reflection.c: some locking fixes.
12347
12348 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12349
12350         * metadata.c: added missing break in case statement.
12351
12352 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
12353
12354         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12355         typedbyref return values. Fixes #73941.
12356
12357 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12358
12359         * security-manager.c|h: Added demandunmanaged method and 
12360         suppressunmanagedcodesecurity class to MonoSecurityManager.
12361         Renamed aptc class to allowpartiallytrustedcallers.
12362
12363 2005-03-17  Martin Baulig  <martin@ximian.com>
12364
12365         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
12366
12367 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12368
12369         * file-io.c: disabled file async. IO using aio_*. It uses the
12370         threadpool now. Workaround for bug #73718.
12371
12372 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12373
12374         * assembly.h, mono-config.c: added code to deal with bundled configs
12375         for bundled assemblies.
12376
12377 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
12378
12379         * *.c, private.h: cleanup, removing old private.h header file.
12380
12381 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12382
12383         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
12384         and throw_on_unmappable_char attributes.
12385
12386 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
12387
12388         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
12389         _ProcessName_internal.
12390
12391 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12392
12393         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
12394         #73631.
12395
12396         * icall.c threads.c threads-types.h: Remove slothash icalls as they
12397         are no longer used.
12398
12399 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12400
12401         * object.c (compute_class_bitmap): Add support for generics. Fixes
12402         #73527.
12403
12404 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12405
12406         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
12407
12408 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12409
12410         * filewatcher.c: commented out the code for windows watcher, as we don't
12411         use it (we use the managed implementation instead).
12412
12413 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12414
12415         * object-internals.h (MonoThread): Remove 'unused1' field.
12416
12417         * appdomain.c: Bump corlib version.
12418
12419         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
12420
12421         * reflection.c (mono_reflection_create_runtime_class): Remove the
12422         AssemblyBuilder.Save optimization since it causes too many problems.
12423
12424 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
12425
12426         * exception.c|h: Added mono_get_exception_reflection_type_load to
12427         create a ReflectionTypeLoadException object.
12428         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
12429         to return NULL is a InheritanceDemand fails during reflection. Updated
12430         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
12431         ReflectionTypeLoadException if an InheritanceDemand fails during 
12432         reflection. Added icall mapping for GetLinkDemandSecurity.
12433         * security-manager.c|h: Added ves_icall_System_Security_
12434         SecurityManager_GetLinkDemandSecurity internal call to return the
12435         class and methods permissions set for a LinkDemand. Removed unused
12436         fields in MonoSecurityManager.
12437
12438 2005-03-10  Martin Baulig  <martin@ximian.com>
12439
12440         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
12441         it's a generic instance.
12442
12443 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
12444
12445         * reflection.c (mono_get_object_from_blob): Applied patch from
12446         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
12447
12448         * class.c (mono_class_is_assignable_from): Another try at fixing 
12449         #73469 without breaking anything.
12450
12451 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12452
12453         * class.c: (mono_class_is_assignable_from): Revert the last changes
12454         since they don't work with generics.
12455         
12456         * class.c (mono_class_is_assignable_from): Fix build bustage.
12457
12458         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
12459         the managed IsAssignableFrom method. Fixes #73469.
12460
12461         * reflection.c (mono_reflection_call_is_assignable_from): New helper
12462         function.
12463
12464 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12465
12466         * object.c (mono_load_remote_field_new): Fix returning uninitialized
12467         memory when the remoting callback does not sets the out arguments.
12468         Fixes #73007.
12469
12470         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
12471         by mistake.
12472
12473         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
12474
12475         * object-internals.h (MonoStackFrame): Sync with managed object layout.
12476
12477         * appdomain.c: Bump corlib version.
12478
12479 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12480
12481         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
12482         function.
12483
12484         * threads.c (mono_thread_attach): Detect threads which are not started
12485         by the GC pthread wrappers.
12486
12487 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
12488
12489         * icall.c: Added new icall for RNG.
12490         * rand.c|h: Added new icall to open the RNG. This allows to share a 
12491         single handle on Linux to access /dev/urandom and fix #73183.
12492
12493 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12494
12495         * object.c: setting the new vtable in a transparent proxy object must
12496         not change the GC descriptor.
12497
12498 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12499
12500         * object.c: fixed compilation without GCJ support.
12501         * reflection.c: for runtime-created types ensure klass->has_references
12502         is correct (bug #73215).
12503
12504 2005-03-02  Martin Baulig  <martin@ximian.com>
12505
12506         * class.c (mono_class_is_assignable_from): Make this work if
12507         `oklass' is a generic instance; fixes #72831.
12508
12509 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12510
12511         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
12512         with hasthis set.
12513         
12514         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
12515
12516         * marshal.c: Reorganize native->managed marshalling code to also use
12517         the emit_marshal_... functions.
12518
12519 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12520
12521         * object.c: typed allocs have issues with bitmap sizes > 30,
12522         so check for max_set >= 30.
12523
12524 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12525
12526         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
12527         managed code. Fixes #73012.
12528
12529         * metadata.h (MonoMarshalSpec): Add elem_mult field.
12530
12531         * metadata.c reflection.c: Load/Emit elem_mult as well.
12532         
12533         * metadata.h (MonoMarshalSpec): Add comment.
12534
12535         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
12536
12537         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
12538         num_elem to -1 if not given.
12539
12540         * object-internals.h (MonoReflectionMarshal): Add has_size field.
12541
12542         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
12543         given values.
12544
12545 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
12546
12547         * null-gc.c (mono_gc_free_fixed): Was not compilable.
12548
12549 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
12550
12551         * reflection.c (encode_marshal_blob): Encode param_num field as well.
12552
12553         * object-internals.h (MonoReflectionMarshal): Add param_num field.
12554
12555 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12556
12557         * object.c: generalized the reference bitmap creation
12558         and added hooks for the new GC.
12559         * class-internals.c: removed the gc_bitmap field from MonoClass.
12560
12561 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12562
12563         * domain.c: help the compiler to produce better code
12564         in mono_jit_info_table_find ().
12565
12566 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12567
12568         * object.c: make all allocations look typed.
12569
12570 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12571
12572         * socket-io.c: load Mono.Posix if it's not loaded already
12573         (fixes bug#73033).
12574
12575 2005-02-24  Martin Baulig  <martin@ximian.com>
12576
12577         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
12578         * reflection.c (dup_type): Likewise.
12579
12580 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
12581
12582         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
12583         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
12584
12585 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12586
12587         * domain.c, threads.c, object-internals.h: make the critical thread
12588         local vars use the fast access mode (even when we're compiled in
12589         a lib). Provide accessors to be used by the jit during codegen.
12590
12591 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12592
12593         * appdomain.c: Changed hook functios behavior to include
12594         support for the reflection only assemblies. Some icalls were changed
12595         to support the mentioned assemblies too. Signatures of static methods
12596         try_assembly_resolve and real_load now have an additional parameter:
12597         refonly.
12598
12599         * assembly.c: General changes to mono_assembly_ methods to support
12600         reflection only api. Functions mono_assembly_open, mono_assembly_load,
12601         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
12602         suffix, to support an additional gbool parameter to specify whether
12603         the assembli is reflection only or not. Created some new hook functions 
12604         to add support for reflection only assemblies. Signatures of static 
12605         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
12606         have now an additional parameter: refonly.
12607
12608         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
12609         indicating whether the assembly is reflection only or not.
12610
12611         * exception.c: Add mono_get_exception_invalid_operation.
12612
12613         * icall.c: Throw an InvalidOperationException when trying to invoke
12614         a property/method/event, or trying to set/get the value of a field.
12615         Also add an icall to retrieve the ref_only flag to the
12616         MonoReflectionAssembly.
12617
12618 2005-02-23  Chris Toshok  <toshok@ximian.com>
12619
12620         Part of fix for #72827.
12621         * mono-debug.c (mono_debug_add_method): add lexical block data to
12622         the info we write.  Kind of a hack at the moment - we copy the
12623         lexical block info from the MonoDebugMethodInfo to the
12624         MonoDebugMethodJitInfo here, before writing it.
12625         (mono_debug_read_method): read the lexical block info.
12626
12627         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
12628
12629         * debug-mono-symfile.h: add lexical block support.
12630
12631         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
12632         support.
12633
12634 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12635
12636         * loader.c (mono_lookup_pinvoke_call): Fix warning.
12637
12638         * object.c (mono_runtime_free_method): Call mono_free_method () and
12639         put the TODOs there.
12640
12641         * loader.c (mono_free_method): Free up most memory allocated for 
12642         dynamic methods.
12643
12644 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12645
12646         * reflection.c: properly flag a Type argument to a
12647         named custom attr value (bug #72248).
12648
12649 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12650
12651         * reflection.c: reduce code duplication in named custom
12652         attribute encoding.
12653
12654 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
12655
12656         * reflection.c: properly encode custom attrs of type object
12657         (bug #72649).
12658
12659 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12660
12661         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
12662
12663 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
12664
12665         * socket-io.c: load System.dll if it's not loaded already
12666         (bug #72850 and #70477).
12667
12668 2005-02-21  Martin Baulig  <martin@ximian.com>
12669
12670         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12671         generic instances.
12672
12673 2005-02-21  Martin Baulig  <martin@ximian.com>
12674
12675         * reflection.c (mono_image_build_metadata): We also need to
12676         "fixup" the MethodImpl table after we computed the final method
12677         indices.  Call fixup_methodimpl() to do that.
12678         (fixup_methodimpl): New private method.
12679
12680 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12681
12682         * assembly.c: special case mscorlib.dll (bug#72536),
12683         patch from Carlos Alberto Cortez.
12684
12685 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12686
12687         * threads-types.h threads.c: Fix build bustage.
12688
12689         * threads.c: Use a union for long<->double conversions.
12690
12691         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
12692         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
12693
12694         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
12695         containing the checkpoint call with NOT_TAKEN.
12696         
12697         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
12698         checkpoint before pushing the arguments, so they won't have to be
12699         spilled to stack.
12700
12701 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12702
12703         * domain.c, assembly.c, domain-internals.h: make some data
12704         const and relocation-free.
12705
12706 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12707
12708         * object.c, appdomain.c, class-internals.h: introduce the
12709         MonoClassRuntimeInfo structure to hold the info needed to
12710         use a class at runtime. Made mono_class_vtable() lock-free
12711         for all the appdomains.
12712
12713 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
12714
12715         * metadata-internals.h, image.c: introduce a per-image mempool to
12716         be used for memory that has the same lifetime as the image.
12717
12718 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
12719
12720         * domain.c: In mono_init_internal(), instead of selecting the first
12721         runtime version supported by an executable, get a list of all
12722         supported versions and select the one for which an mscorlib exists
12723         (since even if the runtime supports a given version, it doesn't mean
12724         that the framework for that version is installed).
12725         Modified get_runtimes_from_exe to support this behavior.
12726         In supported_runtimes, added information about additional system
12727         assembly versions.
12728         
12729         * assembly.c: Added support for more than one system assembly version
12730         per runtime version. Updated the assembly list.
12731         In mono_assembly_remap_version, removed the initial version check,
12732         since we don't know to which version we need to compare until we
12733         get the version set on which the assembly is based.
12734         Moved the code for loading corlib into the new method
12735         mono_assembly_load_corlib(), so it can be used by the initialization
12736         code.
12737         
12738         * domain-internals.h: Updated data structures and added declaration
12739         for mono_assembly_load_corlib.
12740
12741 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12742
12743         * reflection.c (resolve_object): Fix the creation of the signature in 
12744         the SignatureHelper case.
12745
12746         * assembly.c (mono_assembly_remap_version): Fix binary search.
12747         
12748 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
12749  
12750         * class.c: Added inheritance check when a method is overloaded (from a
12751         virtual method or when implementing an interface) and when a class is
12752         inherited. Added functions to set a failure for a class and to 
12753         retreive the exception from a failure.
12754         * class-internals.h: Added fields to MonoClass to keep the exception
12755         information status for inheritance (or other exceptions) to be thrown
12756         later (i.e. not at load time).
12757         * object.c: Throw the inheritance SecurityException when a type is to 
12758         be created with either class or method inheritance violations.
12759         * reflection.c|h: Fix when getting declsec from a class. Removed 
12760         unrequired code for class. Improved sanity in parameter naming.
12761         * security-manager.c|h: Added functions to check for class and method
12762         inheritance.
12763
12764 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12765
12766         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
12767         and has_finalize in dynamic types as well.
12768
12769 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
12770
12771         * culture-info-table.h : fixed currency format for en-GB (and so on).
12772
12773 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
12774
12775         * gc.c: ensure the GC handles never have 0 as a value.
12776
12777 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12778
12779         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
12780         a pointer to a struct to unmanaged code. Fixes #72625.
12781
12782 2005-02-16  Martin Baulig  <martin@ximian.com>
12783
12784         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
12785
12786 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12787
12788         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
12789
12790 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12791
12792         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
12793
12794         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
12795         UnmanagedFunctionPointerAttribute, use it for determining calling convention
12796         etc. Fixes #71471.
12797
12798         * reflection.c (mono_custom_attrs_get_attr): New helper function.
12799
12800         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
12801
12802 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
12803
12804         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
12805         changes to make the current context a field in MonoThread.
12806
12807 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12808
12809         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
12810         the last change.
12811         
12812         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
12813         extracted from mono_marshal_get_native_wrapper.
12814
12815         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
12816         to create wrappers around native functions.
12817
12818         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
12819         delegates for arbitrary function pointers. Fixes #71472.
12820
12821 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
12822
12823         * threads.c: cleaned up the code a little.
12824
12825 2005-02-15  Martin Baulig  <martin@ximian.com>
12826
12827         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
12828         the data table.
12829
12830         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
12831         allocate larger chunks if needed.
12832
12833 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12834
12835         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
12836         in by mistake.
12837
12838 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
12839
12840         * domain.c: keep the domains in an array and ensure the domain ids
12841         are kept small, so they can be used as indexes to domain-specific data
12842         with a small memory overhead.
12843
12844 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12845
12846         * icall.c: Handle byref types in Type icalls. Fixes #72544.
12847
12848 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
12849
12850         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
12851
12852 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12853
12854         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
12855
12856         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
12857         values.
12858
12859         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
12860         
12861 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12862
12863         * domain-internals.h: add the hashtable here.
12864
12865         * class-internals.h: Remove `info' from MonoMethod
12866
12867         * domain.c: Add a new hashtable, jit_trampoline_hash
12868
12869 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12870
12871         * object.c: don't set the value of static fields
12872         (fixes bug#72494).
12873
12874 2005-02-11  Martin Baulig  <martin@ximian.com>
12875
12876         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
12877         (mono_debug_add_method): Silently ignore the method if it's too big.
12878         (mono_debug_add_type): Likewise.
12879
12880 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
12881
12882         * threads.c, appdomain.c: remove #ifdefs from the code.
12883
12884 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12885
12886         * metadata-internals.h: Added flags to MonoAssembly to cache the most
12887         common security informations. This allows us to stay in unmanaged code
12888         when doing LinkDemand and it's special cases (except for the first 
12889         time for initialization). The flags a very much used with --security.
12890         * reflection.c|h: Added code to get declarative security attributes 
12891         for LinkDemand and InheritanceDemand. This required to refactor the
12892         existing code for Demand.
12893         * security-manager.c|h: Added new method fields for the special cases
12894         of LinkDemand.
12895
12896 2005-02-10  Martin Baulig  <martin@ximian.com>
12897
12898         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
12899         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
12900
12901 2005-02-10  Martin Baulig  <martin@ximian.com>
12902
12903         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
12904         debugging code; this is almost a complete rewrite.
12905
12906         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
12907
12908 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12909
12910         * domain.c, object.h: expose mono_string_equal () and 
12911         mono_string_hash ().
12912         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
12913         it's implemented in managed code.
12914
12915 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12916
12917         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
12918         lo leak objects between appdomains.
12919
12920 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12921
12922         * assembly.c: old compilers compilation fix from 
12923         robertj@gmx.net (Robert Jordan).
12924
12925 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
12926
12927         * class-internals.h: Little reminder for the future.
12928
12929         * debug-helpers.c: Fix up wrapper_type_names
12930
12931 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12932
12933         * image.c, metadata-internals.h: when loading an image from a file,
12934         mmap all of it and use the same codepaths as when using a
12935         in-memory image: the code is simpler and we use less memory
12936         (both writable and readonly).
12937
12938 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12939
12940         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
12941         API to alloc runtime data structures that need to be tracked by the
12942         GC and contain pointers.
12943         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
12944         make the code more readable and eventually use a different GC.
12945
12946 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
12947
12948         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
12949         for out arguments.
12950         
12951 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
12952
12953         * object.c: In release_type_locks(), don't release the cctor lock
12954         if it has already been released. This fixes a crash in the
12955         thread5 test.
12956
12957 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12958
12959         * gc.c, marshal.c, icall.c: register a delegate for finalization
12960         only when the native function pointer has been allocated for it.
12961
12962 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12963
12964         * object.c: cleaned up some code, allocate objects that are
12965         pointer free with the atomic malloc variant. Allocate memory
12966         for static data from the mempool if it's pointer-free.
12967         Allocate the bounds array at the end of the array data, when needed.
12968         * object-internals.h, object.h: move a private function in a private
12969         header.
12970         * class.c: handle missing case in tracking references in fields.
12971
12972 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12973
12974         * class.c, class-internals.h: keep track if a type has
12975         reference fields in either the instance or static fields.
12976
12977 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
12978
12979         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
12980         and renamed to MonoRuntimeInfo. Added fields to store the expected
12981         framework assembly version. Changed mono_get_framework_version and
12982         mono_get_runtime_version for a single mono_get_runtime_info method.
12983         
12984         * assembly.c: Added method to remap system assembly versions to the
12985         current executing runtime version. Removed old mapping code.
12986         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
12987         
12988         * icall.c, reflection.c: Track api changes.
12989
12990 2005-02-06  Miguel de Icaza  <miguel@novell.com>
12991
12992         * loader.c (method_from_memberref): Improve error reporting,
12993         produce the class name instead of the typeref/typedef index. 
12994
12995 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
12996
12997         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
12998
12999 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13000
13001         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
13002         stdcall and charset name mangling.  Reorganize the code and add
13003         some tracing stuff.
13004
13005 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13006
13007         * monodiet.c: More iters!
13008
13009         * marshal.c: Iter usage.
13010
13011         * icall.c: Iter usage.
13012
13013         * object.c: Use iters.
13014
13015         * debug-helpers.c: More iters
13016
13017 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13018
13019         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
13020         under win32.
13021
13022 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13023
13024         * mono-debug-debugger.c: use iters
13025
13026         * class.c, class-internals.h: mono_class_setup_events is static
13027         now
13028
13029         * All callers: use iters
13030
13031 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
13034         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
13035
13036 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13037
13038         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
13039
13040         * marshal.h: Add prototypes for ldfld/stfld_remote.
13041
13042         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
13043         this is called during startup.
13044         
13045 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
13046
13047         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
13048         MonoThreadsSync struct private in monitor.c. Changed the way
13049         MonoThreadsSync is allocated so it's faster and there is no
13050         need to keep track of it with a finalizer and it uses less memory.
13051         This also finally allows us to allocate mono objects as ptrfree when
13052         there are no reference fields.
13053
13054 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
13055
13056         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
13057         disappearing link to the GC interface and use them to simplify
13058         the gchandles code.
13059
13060 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13061
13062         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
13063         stfld_remote which call mono_load/store_field_new. This allows methods
13064         calling ldfld/stfld wrappers to be AOTed.
13065
13066         * console-io.c: Include sys/filio.h under solaris.
13067         
13068         * console-io.c: Include curses.h if needed correctly.
13069
13070 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13071         
13072         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
13073         method->klass as well.
13074
13075         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
13076
13077         * class.c (mono_class_init): Switch on lazy initialization of 
13078         methods.
13079
13080         * class.c (mono_class_get_finalizer): Handle the case when the 
13081         finalizer is inherited.
13082
13083 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13084
13085         * console-io.c: <curses.h> is needed by term.h on solaris.
13086
13087 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
13088
13089         * icall.c, class-internals.h, monodiet.c, class.c: Remove
13090         mono_class_setup_properties where possible. Remove this ftn from
13091         the header file, and make it static.
13092
13093 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13094
13095         * loader.c: Add missing setup_... call.
13096
13097         * class.c: Add missing setup_... calls.
13098
13099         * class.c (mono_class_init): Switch on lazy initialization of 
13100         the generic vtable.
13101         
13102         * class.c (mono_class_init): Fix generics broken by the recent changes.
13103
13104         * monodiet.c (handle_type): Add missing setup_... calls.
13105
13106         * class.c: Back out garbage in previous patch.
13107         
13108         * class.c: Add missing setup_... calls.
13109
13110         * class.c (mono_class_get_method_from_name_flags): Avoid calling
13111         mono_class_setup_methods () if possible.
13112
13113         * class-internals.h (MonoClass): Add 'has_cctor' flag.
13114
13115         * class-internals.h (MonoCachedClassInfo): New structure.
13116
13117         * class.c: Initialize properties and events fields of MonoClass lazily.
13118
13119         * class.c: Add infrastructure for lazily initializing the methods and
13120         vtable fields of MonoClass. Not yet used.
13121
13122         * class.c (mono_class_get_finalizer): New helper function.
13123
13124         * class.c: Add infrastructure for loading some class related data from
13125         an AOT file.
13126
13127         * object.c: Add infrastructure for initializing the vtable from data
13128         in the AOT file.
13129
13130         * gc.c (run_finalize): Use mono_class_get_finalizer ().
13131
13132         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
13133         appropriate initialization function before accessing parts of the
13134         MonoClass structure.
13135
13136         * marshal.c: Fix warnings.
13137         
13138         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
13139
13140         * mono-debug-debugger.c (get_exception_message): Use 
13141         mono_class_get_method_from_name_flags ().
13142
13143 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
13144
13145         * reflection.c, appdomain.c: Replace a few manual searches that
13146         Zoltan missed. (Paolo approved this part of my initial patch).
13147
13148 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
13149
13150         * profiler.c: disable recording statistical events at report time.
13151
13152 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13153
13154         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
13155         to byteswap arrays of enum values, too (bug #72080).
13156
13157 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13158
13159         * appdomain.c (set_domain_search_path): Allow this to be called if
13160         domain->setup is not yet set.
13161
13162         * loader.c (mono_method_get_index): New helper function.
13163
13164         * loader.c reflection.c: Use mono_method_get_index ().
13165
13166         * class.c (mono_class_get_method_from_name_flags): New helper method.
13167
13168         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
13169         this.
13170
13171         * class.c (mono_class_get_cctor): New helper method.
13172
13173         * string-icalls.c object.c class.c marshal.c reflection.c: Use
13174         mono_class_get_method () to look up methods.
13175
13176 2005-02-01  Miguel de Icaza  <miguel@novell.com>
13177
13178         * console-io.c: Fix the build, this should work on Windows.
13179
13180 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
13181
13182         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
13183         be set to null to keep things valid
13184
13185 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13186
13187         * icall.c: added Console 2.0 icalls.
13188         * Makefile.am: added console-io.[ch]
13189         * console-io.[ch]: internal calls for Console 2.0 API.
13190
13191 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13192
13193         * class.c: make sure we consider all the interfaces
13194         when calculating max_interface_id (bug found by
13195         Jeroen Frijters running ikvm).
13196
13197 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13198
13199         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
13200         valuetype fields to null.
13201
13202         * object.c (set_value): Ditto. Fixes #71669.    
13203
13204 2005-01-31  Martin Baulig  <martin@ximian.com>
13205
13206         * metadata.c (mono_metadata_has_generic_params): New public
13207         function; checks whether something is a generic method.
13208
13209 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13210
13211         * appdomain.c: fix infinite recursion when adding assemblies.
13212
13213 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13214
13215         * object.c: Fix small typo to return all items for Environment.
13216         GetCommandLineArgs.
13217
13218 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13219
13220         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
13221         reflection.c: more domain and assembly-unload related fixes
13222         and memory leaks plugs.
13223
13224 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13225
13226         * 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.
13227
13228 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13229
13230         * loader.c (mono_method_signature): Make this method lazy
13231         (mono_get_method_from_token): Don't computate the signature here.
13232
13233         Doing this saves quite a bit of memory. I got 90 kb on starting up
13234         monodoc. It should also save some disk reads on startup.
13235
13236         * *: MonoMethod->signature might be NULL now. You *MUST* use
13237         mono_method_signature.
13238
13239 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
13240
13241         * object.c (mono_runtime_get_main_args): Return an array from the
13242         current domain here. Fixes #71938.
13243
13244 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13245
13246         * monitor.c: formatting changes to comply with the
13247         mono coding style and remove #ifdefs from the code.
13248
13249 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13250
13251         * metadata.c, private.h: remove some unneeded data
13252         and use a more compact representation for table schemas.
13253
13254 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13255
13256         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
13257         to get a better distribution in hash tables.
13258         * *.c: use mono_aligned_addr_hash() where appropriate.
13259         * assembly.c: make var static.
13260
13261 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13262
13263         * domain-internals.h: Put MonoJitInfo on a diet.
13264
13265         * domain.c: Fix a warning.
13266
13267 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13268
13269         * gc.c: rework the gc handles code to reuse handles
13270         when freed.
13271
13272 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13273
13274         * domain.c: fixed long standing bug in mono_string_equal() which
13275         was brought to light with the ldstr changes.
13276
13277 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13278
13279         * reflection.c: Remove warning by adding missing include for marshal.h
13280
13281 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13282
13283         * domain.c, object.c: change the ldstr_table to hold
13284         MonoString* as keys: makes the runtime isinterned lookup
13285         faster and simplifies memory management.
13286
13287 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
13288  
13289         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
13290         possible to add imperative security checks before calling the icall.
13291         * reflection.c: Return security attributes on the original MonoMethod
13292         (and not the wrapped one). This fix permissions on icalls.
13293
13294 2005-01-25  Dick Porter  <dick@ximian.com>
13295
13296         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
13297         the check for mktime() support actually test the mktime() return
13298         value.  "Fixes" bug 71682, though the output is still different to
13299         MS.
13300
13301 2005-01-25  Martin Baulig  <martin@ximian.com>
13302
13303         * class.c (mono_class_is_assignable_from): Make this work for
13304         generic instances.
13305
13306 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
13307
13308         * marshal.c (mono_string_utf8_to_builder)
13309         (mono_string_builder_to_utf16): We might not have ownership of the
13310         string. In thise case, we need to create a new buffer.
13311
13312         * object-internals.h (mono_stringbuilder_capacity): sb->str might
13313         be null, in which case, use the default capacity.
13314
13315 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13316
13317         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
13318         GC events to the profiler.
13319
13320 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13321
13322         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
13323         if you don't want the GC to run.
13324
13325 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
13326
13327         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
13328         start providing a GC API and keeping different implementations in
13329         their own file.
13330         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
13331
13332 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13333
13334         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
13335         mmap rather than allocating a huge buffer.
13336         (mono_debug_close_mono_symbol_file): Free the buffer allocated
13337         above.
13338
13339 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13340
13341         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
13342         and CheckExecutionRights.
13343         * reflection.c|h: Keep the index of the declarative security to be 
13344         used, instead of the pointer, when AOT compiler is used. Also add 
13345         class initialization when requesting demands.
13346         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
13347         CheckExecutionRights. Both properties are now FALSE by default, and
13348         unmodifiable, unless the --security option is used.
13349
13350 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13351
13352         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
13353         reflection.c: properly refcount images and assemblies, many leaks fixed.
13354
13355 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13356
13357         * threadpool.c: increase the timeout for threads in the thread pool to
13358         10s.  Fixes bug #67159.
13359
13360 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
13361
13362         * class-internals.h: Sun's compiler insists on explicit
13363         signed on bit fields to handle then correctly.
13364
13365 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
13366
13367         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
13368         Make the size of the array fit only the number of invalid path
13369         chars that we have.
13370
13371         * class.c (_mono_class_get): Improve the error reporting when a
13372         class referenced is not found, to assist debugging. 
13373
13374 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
13375
13376         * threads.c: fix off-by-one error.
13377         * domain.c: free data allocated in the domain.
13378
13379 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13380
13381         * reflection.c (mono_method_body_get_object): Fill out exception info
13382         as well.
13383
13384         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
13385         structure.
13386         
13387 2005-01-19  Martin Baulig  <martin@ximian.com>
13388
13389         * loader.c (mono_get_method_constrained): Make this work again.
13390
13391 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13392
13393         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
13394         guint16 to match the managed side.
13395
13396         * reflection.c (mono_reflection_body_get_object): Fill out local
13397         variables array.
13398
13399         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
13400         as well.
13401
13402         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
13403         'local_var_sig_token'.
13404
13405 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13406
13407         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
13408         System.Drawing.
13409
13410         * reflection.c (mono_method_body_get_object): Handle abstract and
13411         runtime methods.
13412
13413 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
13414
13415         * marshal.c, loader.c, class-internals.h, reflection.c:
13416         store the emthod data for a wrapper in an array instead of a list.
13417
13418 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
13419
13420         * marshal.c: change the code to allocate memory more
13421         conservatively for method wrappers.
13422
13423 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13424
13425         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
13426         fields from MonoClass to the marshal info structure where they belong.
13427
13428 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13429
13430         * class.c, object.c, class-internals.h, marshal.c: rearrange
13431         some fields and tweak some types to lower memory usage.
13432
13433 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
13434
13435         * threads.c (signal_thread_state_change): Handle the case when the
13436         target thread is the current thread.
13437
13438         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
13439
13440         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
13441         emit_ptr_to_object_conv. 
13442
13443         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
13444         marshalling. Fixes #71352.
13445
13446 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13447
13448         * metadata.h, blob.h: move table enum to blob.h so it can be included
13449         in any header.
13450         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
13451         cut the size of MonoImage/MonoDynamicImage.
13452
13453 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
13454
13455         * profiler.c (mono_profiler_install_simple): Fix default arguments.
13456
13457 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
13458
13459         * reflection.c, reflection.h, icall.c: add a function to check
13460         if an attribute type is defined for a metadata object.
13461
13462 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
13463
13464         * object-internals.h: Added some needed fields from StringBuilder class.
13465         * marshal.c: Set the maxCapacity when creating a StringBuilder.
13466
13467 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
13468
13469         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
13470         threads before shutting down the runtime.
13471
13472         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
13473
13474 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13475
13476         * object-internal.h, threads.c: implement stacksize and 
13477         parameterized thread start functionality (requires
13478         matching corlib). Marked broken code for later removal.
13479
13480 2005-01-12  Martin Baulig  <martin@ximian.com>
13481
13482         * class-internals.h (MonoGenericClass): Moved the `initialized'
13483         flag to MonoDynamicGenericClass, removed `init_pending'.
13484         (MonoGenericInst): Added `is_reference' flag.
13485
13486 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
13487
13488         * reflection.c (mono_image_create_pefile): Only set the pe_offset
13489         inside the MSDOS header. Fixes #71201.
13490
13491         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
13492         gc thread.
13493         (mono_domain_finalize): Ditto.
13494
13495 2005-01-12  Martin Baulig  <martin@ximian.com>
13496
13497         * class.c (mono_get_shared_generic_class): Use the cache for
13498         non-dynamic generic classes.
13499
13500         * class-internals.h (mono_class_create_generic_2): Removed
13501         function prototype, this function is now static inside class.c.
13502
13503         * class.c (mono_class_create_generic_2): Made this static, only
13504         call it from mono_class_init() and mono_class_setup_parent().
13505         (collect_implemented_interfaces_aux): Call mono_class_init() on
13506         the interfaces we collect.
13507         (mono_class_setup_vtable): Call mono_class_init (class->parent).
13508
13509 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13510
13511         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
13512         it a real thread handle.
13513
13514         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
13515         MonoJitExceptionInfo, since each catch clause needs its own variable.
13516         
13517 2005-01-11  Dick Porter  <dick@ximian.com>
13518
13519         * image.c (mono_pe_file_open): New variant on mono_image_open()
13520         that does not set up the CLI metadata; used for FileVersionInfo so
13521         it can get the data for windows binaries too.
13522         
13523         * process.c (process_read_string_block): Don't read off the end of
13524         the StringTable block.
13525
13526         These both fix bug 70766.
13527
13528 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
13529
13530         * gc.c: set some fields to NULL at GC cleanup time.
13531         * threads.c: if we quit the main thread, call exit ().
13532
13533 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13534
13535         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
13536
13537 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
13538
13539         * threads.h, threads.c, object.c: added accessor and settor for
13540         main_thread. Handle it specially when exiting from it: wait
13541         for other foreground threads to exit.
13542
13543 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13544
13545         * process.c, verify.c: remove some bloat.
13546
13547 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13548
13549         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
13550         the calling convention to cdecl under win32.
13551
13552 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
13553
13554         * object.c (mono_object_get_size): New function to get the size of
13555         an object instance.
13556
13557         * profiler.c (simple_allocation): Use above.
13558
13559 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
13560
13561         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
13562         ves_icall_System_AppDomain_getRootDomain (as it's not required to
13563         get an appdomain by it's id and we can't assume the root's id is 0).
13564         * domain-internals.h: Change the function prototype to match.
13565         * icall.c: Change the icall table for AppDomain.
13566
13567 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
13568
13569         * locales.c (string_invariant_compare_char): Only compute
13570         GUnicodeTypes in the case where we need them.  Test for ordinality
13571         first and return if so.
13572
13573         From the commit:
13574
13575                 /*
13576                  * FIXME: here we must use the information from c1type and c2type
13577                  * to find out the proper collation, even on the InvariantCulture, the
13578                  * sorting is not done by computing the unicode values, but their
13579                  * actual sort order.
13580                  */
13581
13582 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13583
13584         * loader.c: for P/Invoke methods, allow the "Internal" shared
13585         library name to refer to the calling process symbol namespace.
13586
13587 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13588
13589         * Makefile.am: Add the security manager to the build.
13590         * security-manager.c|h: New. Initialization of the security manager.
13591
13592 2005-01-07  Dick Porter  <dick@ximian.com>
13593
13594         * threads.c: 
13595         * monitor.c: Update thread state during Monitor and WaitHandle
13596         waits.  Fixes bug 71031.
13597
13598 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13599
13600         * reflection.c (property_encode_signature): Correctly handle when the
13601         property has no methods.
13602
13603 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13604
13605         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
13606         
13607         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
13608         fields from mb, not rmb. Fixes #71017.
13609
13610         * marshal.c (emit_ptr_to_str_conv): Add support for 
13611         ByValTStr -> string conversion. Fixes #71015.
13612
13613         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
13614
13615         * mempool.c (mono_mempool_contains_addr): New helper function.
13616
13617 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13618
13619         * metadata.c (mono_metadata_compute_size): Fix size calculation of
13620         HasSematics encoded fields.
13621         
13622         * metadata.c (mono_type_to_unmanaged): Improve error message for 
13623         invalid string marshalling.
13624
13625         * metadata.c: Fix warnings.
13626         
13627 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13628
13629         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
13630         profiler support.
13631
13632 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13633
13634         * domain.c object.c domain-internals.h: Revert part of r38077 since the
13635         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
13636         tests.
13637
13638 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13639
13640         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
13641         so methods containing these can be AOTed.
13642
13643 2005-01-03  Martin Baulig  <martin@ximian.com>
13644
13645         * loader.c (find_method): Removed the hack for generic instances.
13646         (method_from_memberref): If our parent is a generic instance, pass
13647         its generic type definition to find_method() and then inflate the
13648         method.
13649         (mono_get_method_constrained): Pass the generic type definition to
13650         find_method() and inflate the method later.
13651
13652         * class-internals.h (MonoStats): Added `generic_class_count'.
13653
13654         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
13655         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
13656
13657         * reflection.c (mono_custom_attrs_from_params): Don't ignore
13658         generic type definitions.
13659
13660 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13661
13662         * loader.c icall.c: Fix warnings.
13663
13664 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
13665
13666         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
13667         blittable types. Fixes #70864.
13668
13669 2004-12-29  Martin Baulig  <martin@ximian.com>
13670
13671         * icall.c
13672         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
13673
13674         * reflection.c (mono_method_get_object): Create a
13675         "System.Reflection.MonoGenericMethod" for inflated methods; don't
13676         call mono_get_inflated_method().
13677
13678         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
13679
13680 2004-12-27  Martin Baulig  <martin@ximian.com>
13681
13682         * class-internals.h (MonoMethod): Added `is_inflated' flag.
13683         (MonoMethodInflated): Added `inflated' field.
13684
13685         * class.c (mono_class_inflate_generic_method): Don't really
13686         inflate the method here; just set the `is_inflated' flag in the
13687         MonoMethod.
13688         (mono_class_get_inflated_method): Actually inflate the method here
13689         if it's not already inflated; we use the MonoMethodInflated's new
13690         `inflated' field as a cache.
13691
13692 2004-12-26  Martin Baulig  <martin@ximian.com>
13693
13694         * class.c
13695         (inflate_generic_class): Moved some code out of inflate_generic_type().
13696         (mono_class_inflate_generic_method): If we're already inflated,
13697         inflate the context and use the declaring method; ie. make sure
13698         the declaring method of an inflated method is always the generic
13699         method definition.
13700         (mono_class_create_from_typedef): Create
13701         `class->generic_container->context->gclass'.
13702
13703 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13704
13705         * metadata-internals.h, marshal.c, reflection.c: More
13706         MonoGHashTable->GHashTable.
13707
13708         * domain-internals.h, class.c: Change MonoGHashTable's into
13709         GHashTables for some cases where no gc stuff is used
13710
13711         All users: update apis
13712
13713 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
13714
13715         * metadata.c (builtin_types): Make this `const'. Makes this get
13716         put into the shareable section.
13717         (mono_metadata_init): Casts to make gcc happy.
13718
13719 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
13720
13721         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
13722
13723 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
13724
13725         * icall.c: Added an internal call to retrieve the position and length
13726         of assembly-level declarative security attributes (RequestMinimum, 
13727         RequestOptional and RequestRefuse). This is used by the Assembly class
13728         to re-create the corresponding permission sets.
13729
13730 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13731
13732         * marshal.c: fix the stelemref wrapper to be type correct
13733         (and faster).
13734
13735 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13736
13737         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
13738         to do key & 0x7fffffff. Hashtable already does this. It just
13739         results in longer code.
13740
13741 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13742
13743         * appdomain.c: Bump corlib version.
13744         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
13745         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
13746         * reflection.c|h: Add functions to get declarative security infos
13747         (blob position and length) for assemblies, classes and methods.
13748
13749 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
13750
13751         * reflection.c: sort the constant table (bug #70693).
13752
13753 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
13754
13755         * object-internals.h, threads.c, domain.c: add accessors for
13756         the MonoThread and MonoDomain tls keys.
13757
13758 2004-12-18  Martin Baulig  <martin@ximian.com>
13759
13760         * class.c (inflate_generic_type): If we're inflating a generic
13761         instance, set `ngclass->context->container = context->container';
13762         ie. the container we inflated into.
13763
13764         * metadata.c (mono_metadata_parse_generic_param): Reflect above
13765         inflate_generic_type() changes.
13766
13767 2004-12-17  Martin Baulig  <martin@ximian.com>
13768
13769         * class-internals.h
13770         (MonoGenericClass): Replaced `MonoType *generic_type' with
13771         `MonoClass *generic_class'.  Removed `dynamic_info'; if
13772         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
13773         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
13774
13775 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13776
13777         * exception.c (mono_exception_from_token): New helper function.
13778
13779 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13780
13781         * assembly.c (mono_assembly_load_with_partial_name): Call 
13782         mono_assembly_loaded before invoking the preload hooks. Fixes
13783         #70564.
13784
13785         * object-internals.h (MonoThread): Change culture_info and 
13786         ui_culture_info into an array.
13787
13788         * threads.c: Cache culture info objects from more than one appdomain.
13789
13790         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
13791         current UI culture.
13792
13793 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13794
13795         * threads.h threads.c appdomain.c: Clear the culture_info field of
13796         all threads during unloading if they point to an object in the dying
13797         appdomain.
13798
13799 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
13800
13801         * culture-info.h (TextInfoEntry): New struct
13802         * object-internals.h: sync with managed
13803         * locales.c: fill the `text_info_data' field
13804         * culture-info-tables.h: update
13805
13806 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
13807
13808         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
13809         collector.
13810
13811 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
13812
13813         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
13814         (ves_icall_ModuleBuilder_getMethodToken): Ditto
13815
13816 2004-12-12  Martin Baulig  <martin@ximian.com>
13817
13818         * mono-debug-debugger.c (write_type): If we're an enum and the
13819         builtin types have already been initialized, call mono_class_init().
13820
13821 2004-12-11  Martin Baulig  <martin@ximian.com>
13822
13823         * metadata.c (mono_metadata_load_generic_params): Added
13824         `MonoGenericContainer *parent_container' argument; automatically
13825         compute `container->is_method'; pass the correct owner to
13826         get_constraints().      
13827
13828         * reflection.c (compare_genericparam): Sort the GenericParam table
13829         according to increasing owners. 
13830
13831 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13832
13833         * profiler.c: allow disabling the default profiler.
13834
13835 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
13836
13837         * decimal.c, icall.c: allow disabling System.Decimal support.
13838
13839 2004-12-09  Marek Safar <marek.safar@seznam.cz>
13840
13841         * reflection.c: Add support for null attribute arguments.
13842
13843 2004-12-09  Martin Baulig  <martin@ximian.com>
13844
13845         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
13846         names to get rid of compiler warnings.
13847
13848 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13849
13850         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
13851         mono_marshal_load_type_info (). Fixes #69625.
13852         (mono_marshal_get_ptr_to_struct): Likewise.
13853
13854 2004-12-08  Martin Baulig  <martin@ximian.com>
13855
13856         * mono-debug.h: Bumped version number to 47.
13857
13858         * mono-debug-debugger.c
13859         (mono_debugger_event_handler, mono_debugger_event): Take two
13860         guint64 arguments insteed of a gpointer and a guint32.  
13861
13862 2004-12-08  Martin Baulig  <martin@ximian.com>
13863
13864         * debug-mono-symfile.h
13865         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
13866         `address' to `native_offset'.
13867
13868 2004-12-08  Martin Baulig  <martin@ximian.com>
13869
13870         * class.c (mono_class_create_from_typespec): Only inflate if we
13871         either have `context->gclass' or `context->gmethod'.
13872
13873 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13874
13875         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
13876
13877         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
13878
13879         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
13880
13881         * reflection.c (mono_assembly_get_object): Remove the workaround put
13882         in for the release.
13883         
13884         * appdomain.c: Use the corlib_internal field from MonoAssembly.
13885
13886         * appdomain.c: Bump corlib version.
13887
13888         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
13889         be visible in other appdomains.
13890
13891 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
13892
13893         * threads.c: Interlocked inc and dec for longs were messed up,
13894         use a KISS based impl for this. Fixes 70234
13895
13896 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13897
13898         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
13899
13900 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
13901
13902         * icall.c: fix to follow policy not to allow struct
13903         arguments in icalls.
13904
13905 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13906
13907         * process.c: make the patch that handles spaces in file paths work
13908         on mono/windows too.
13909
13910 2004-12-06  Martin Baulig  <martin@ximian.com>
13911
13912         * class.c (mono_class_create_generic): Call
13913         mono_class_setup_supertypes() if we're dynamic.
13914         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
13915
13916 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13917
13918         * object-internals.h: Add new fields to MonoThread.
13919
13920         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13921
13922         * icall.c threads-types.h threads.c: Add new icalls.
13923
13924         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
13925
13926         * object-internals.h (MonoReflectionAssembly): Sync object layout with
13927         managed side.
13928
13929         * appdomain.c: Bump corlib version.
13930
13931         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
13932         internal assemblies. Fixes #69181.
13933
13934 2004-12-05  Martin Baulig  <martin@ximian.com>
13935
13936         * class.c (mono_class_inflate_generic_signature): Make this a
13937         no-op if `context' is NULL or we don't have any type parameters;
13938         also copy `sentinelpos'.        
13939
13940 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
13941
13942         * image.c: Add unbox_wrapper_cache.
13943
13944         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
13945
13946         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
13947         function generator.
13948         
13949         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
13950         Fixes #70173.
13951
13952         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
13953         
13954 2004-12-04  Martin Baulig  <martin@ximian.com>
13955
13956         * loader.c (mono_method_get_signature_full): New public function;
13957         like mono_method_get_signature(), but with an additional
13958         `MonoGenericContext *' argument.
13959
13960         * class.c (mono_class_inflate_generic_signature): Formerly known
13961         as inflate_generic_signature(); make this public.
13962
13963 2004-12-04  Martin Baulig  <martin@ximian.com>
13964
13965         * metadata.c
13966         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
13967         instead of a `MonoGenericContainer *'.  
13968         (mono_metadata_parse_array_full): Likewise.
13969         (mono_metadata_parse_signature_full): Likewise.
13970         (mono_metadata_parse_method_signature_full): Likewise.
13971         (mono_metadata_parse_generic_inst): Likewise.
13972         (mono_metadata_parse_generic_param): Likewise.
13973         (mono_metadata_parse_mh_full): Likewise.
13974         (mono_type_create_from_typespec_full): Likewise.
13975
13976 2004-12-03  Martin Baulig  <martin@ximian.com>
13977
13978         * class-internals.h (MonoGenericContainer): Replaced the
13979         `MonoGenericContext * pointer with a `MonoGenericContext'
13980         structure and made it the first element.
13981
13982 2004-12-03  Martin Baulig  <martin@ximian.com>
13983
13984         * class.c
13985         (inflate_generic_type): Set the `context->container' when creating
13986         a new MonoGenericContext.
13987         (mono_class_inflate_generic_method): Likewise.
13988         (mono_class_create_from_typespec): Just use `context->container'
13989         to get the container.
13990
13991         * loader.c (method_from_methodspec): Set `context->parent' from
13992         `context->container' - and if that's a method container, use its
13993         parent.  Also set the `context->container' when creating a new
13994         MonoGenericContext.
13995         (mono_get_method_from_token): Use just `context->container' to get
13996         the container.
13997
13998         * metadata.c (do_mono_metadata_parse_generic_class): Also set
13999         `gclass->context->container'.
14000
14001         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
14002         the `context->container' when creating a new MonoGenericContext.
14003
14004 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
14005
14006         * reflection.c (compare_genericparam): Sort params with identical
14007         owner by their number. Fixes gen-111 on sparc.
14008
14009 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14010
14011         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
14012         around the domain changes.
14013
14014         * appdomain.c (mono_domain_unload): Handle the case when the thread
14015         calling Unload is itself being aborted during unloading. Fixes #70022.
14016
14017         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
14018
14019         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
14020         checkpoint_func as an icall so it gets a wrapper.
14021         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
14022         in the cross-appdomain wrappers too.
14023
14024         * threads.c (mono_thread_has_appdomain_ref): Make this public.
14025
14026         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
14027
14028         * reflection.c: Fix some memory leaks.
14029         
14030 2004-12-02  Martin Baulig  <martin@ximian.com>
14031
14032         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
14033
14034         * metadata.c (generic_class_cache): New static hashtable.
14035         (mono_metadata_lookup_generic_class): New public method.
14036
14037 2004-12-02  Martin Baulig  <martin@ximian.com>
14038
14039         * class.c (mono_class_create_from_typedef): Call
14040         mono_class_setup_parent() and mono_class_create_mono_type() before
14041         parsing the interfaces.
14042
14043 2004-12-02  Martin Baulig  <martin@ximian.com>
14044
14045         * metadata.c (generic_inst_cache): New static hashtable.
14046         (mono_metadata_lookup_generic_inst): New public function.
14047         (mono_metadata_inflate_generic_inst): New public function.
14048         (mono_metadata_parse_generic_inst): New public function.
14049         (do_mono_metadata_parse_generic_class): Use the new
14050         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
14051         since this'll also use the cache.
14052
14053         * reflection.c (mono_reflection_bind_generic_method_parameters):
14054         Use mono_metadata_lookup_generic_inst() to use the new cache.
14055
14056         * class.c (inflate_mono_type): Use
14057         mono_metadata_inflate_generic_inst() to inflate a generic
14058         instance; this'll also use the new cache.
14059
14060         * loader.c (method_from_methodspec): Use
14061         mono_metadata_parse_generic_inst() and
14062         mono_metadata_inflate_generic_inst() rather than parsing it
14063         manually, so we can use the new cache.
14064
14065 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14066
14067         * threads.c (wait_for_tids): Do not incorrectly free threads when 
14068         the wait times out.
14069
14070 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14071
14072         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
14073         iter->args based on whether parameters are passed in registers (i.e.
14074         MONO_ARCH_REGPARMS is defined)
14075
14076 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
14077
14078         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
14079         the exception message. Fixes #70070.
14080         (method_from_methodspec): Fix warnings.
14081
14082 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14083
14084         * process.c: (complete_path) return the path quoted
14085
14086 2004-12-01  Martin Baulig  <martin@ximian.com>
14087
14088         * class-internals.h (MonoGenericInst): New structure.
14089         (MonoGenericClass): Replaced `type_argc', `type_argv' and
14090         `is_open' with `MonoGenericInst *inst'.
14091         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
14092         `is_open' with `MonoGenericInst *inst'.
14093
14094 2004-11-30  Martin Baulig  <martin@ximian.com>
14095
14096         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
14097
14098         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
14099         to `generic_class_cache'.
14100
14101         * metadata.c
14102         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
14103         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
14104         (mono_generic_inst_is_valuetype): Renamed to
14105         mono_generic_class_is_valuetype().
14106
14107         * class-internals.h
14108         (MonoGenericInst): Renamed to MonoGenericClass.
14109         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
14110         (MonoClass): Renamed `generic_inst' to `generic_class'.
14111         (MonoGenericContext): Renamed `ginst' to `gclass'.
14112
14113         * object-internals.h
14114         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
14115
14116         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
14117         mono_reflection_generic_class_initialize().
14118
14119         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
14120         now known as "System.Reflection.MonoGenericClass".
14121         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
14122
14123 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
14124
14125         * class-internals.h: Added a flag field to MonoClass to cache the
14126         declarative security attributes actions associated with the class.
14127         * domain-internals.h: Added booleans to MonoJitInfo to cache the
14128         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
14129         applicable to the JITted method.
14130         * reflection.c|h: Added functions to extract (as flags) which security
14131         actions are available (declaratively) for a method, class or assembly.
14132         * metadata.c|h: Added functions to search the declarative security
14133         table in the metadata.
14134         
14135 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
14136
14137         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
14138         EXPORTEDTYPES are already in the class name cache, so there is no
14139         need to add extra code here to look at them. Just removes a bit of
14140         cruft.
14141
14142         (ves_icall_System_Environment_get_TickCount): No need for #if
14143         WINDOWS. We already have the code in io-layer.
14144
14145 2004-11-28  Martin Baulig  <martin@ximian.com>
14146
14147         * loader.c
14148         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
14149         Fixes gen-112.cs.
14150
14151 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
14152
14153         * assembly.c (do_mono_assembly_open): Instead of having a
14154         conditional WITH_BUNDLE, incorporate support for bundles here, by
14155         having a global `bundles' variable holding a pointer to the actual
14156         bundles. 
14157
14158         (mono_register_bundled_assemblies): New API call used by the
14159         bundle code. 
14160
14161         See mkbundle.1 for details.
14162         
14163 2004-11-27  Martin Baulig  <martin@ximian.com>
14164
14165         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
14166         the vtable for generic methods.
14167
14168 2004-11-26  Martin Baulig  <martin@ximian.com>
14169
14170         * metadata.c
14171         (mono_metadata_generic_method_hash): New public function.
14172         (mono_metadata_generic_method_equal): Likewise.
14173
14174         * class-internals.h
14175         (MonoGenericContainer): Added `GHashTable *method_hash'.
14176
14177         * reflection.c (ReflectionMethodBuilder): Added
14178         `MonoGenericContainer *generic_container'.
14179         (reflection_methodbuilder_to_mono_method): Don't create a new
14180         MonoGenericContainer each time we're called.
14181         (mono_reflection_bind_generic_method_parameters): Use
14182         `container->method_hash' to cache the results so we don't create a
14183         different method if we're called several times with the same
14184         arguments.
14185
14186         * loader.c (method_from_methodspec): Use the new
14187         `container->method_hash' here, too.
14188
14189 2004-11-26  Martin Baulig  <martin@ximian.com>
14190
14191         * class.c (inflate_generic_signature): Correctly compute
14192         `res->has_type_parameters'.
14193         (mono_class_vtable): Use the `has_type_parameters' flag to
14194         determine whether we're a generic method.
14195
14196         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
14197
14198 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14199
14200         * object.c (mono_runtime_run_main): Fix a small memory leak.
14201
14202 2004-11-25  Martin Baulig  <martin@ximian.com>
14203
14204         * class.c (set_generic_param_owner): Fixed the loop.
14205
14206 2004-11-25  Martin Baulig  <martin@ximian.com>
14207
14208         * object.c (mono_class_vtable): Don't create any JIT wrappers for
14209         generic methods.
14210
14211 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14212
14213         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
14214         names. Fixes #69787.
14215
14216 2004-11-24  Martin Baulig  <martin@ximian.com>
14217
14218         * class.c (mono_class_create_generic_2): If we don't have a
14219         `ginst->parent', inflate `gklass->parent' to get our parent.
14220
14221 2004-11-24  Martin Baulig  <martin@ximian.com>
14222
14223         * reflection.c (compare_genericparam): Correctly sort the
14224         GenericParam table; fixes #69779.
14225
14226 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
14227
14228         * reflection.c: When writing a PE file, don't create a huge
14229         buffer in memory. Just write the arrays we have to the file.
14230         This reduces memory usage.
14231
14232         * metadata-internals.h: MonoDynamicStream pefile is no longer used
14233         globally.
14234
14235 2004-11-17  Martin Baulig  <martin@ximian.com>
14236
14237         * class.c (mono_class_init): Don't setup `class->parent' for
14238         dynamic instances; moved this to mono_class_generic_2().
14239         (mono_class_create_generic): Also set `klass->inited' for dynamic
14240         generic instances.
14241         (mono_class_create_generic_2): Don't do anything for dynamic
14242         generic instances.  Set `klass->parent' here and also call
14243         mono_class_setup_parent() here. 
14244
14245         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
14246         `MonoType *parent' argument; set `ginst->parent' before calling
14247         mono_class_create_generic_2(), so we set the correct parent.
14248
14249 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
14250
14251         * reflection.c: allow getting attributes from ModuleBuilder
14252         (used by ikvm).
14253
14254 2004-11-17  Martin Baulig  <martin@ximian.com>
14255
14256         * class.c (mono_class_create_from_typedef): If a type parameter is
14257         inherited from an outer class, set its owner to that class.
14258
14259 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
14260
14261         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
14262           for (int*) written size. This fixes bug #69592.
14263
14264 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14265
14266         * icall.c: Added IsAuthenticodePresnet internal call.
14267         * image.c|h: New function that check a MonoImage for an Authenticode
14268         signature in the certificate PE data directory.
14269         * security.c|h: New internal call to ask the runtime if an 
14270         Authenticode signature seems referenced in the PE header.
14271
14272 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
14273
14274         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
14275
14276         * reflection.c (mono_image_create_pefile): Free the assembly streams
14277         after writing out the assembly file.
14278
14279         * object.c (mono_runtime_run_main): Fix small memory leak.
14280
14281         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
14282         property access modifiers. Fixes #69389.
14283
14284 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14285
14286         * domain.c, object.c, object-internals.h, domain-internals.h,
14287         object.h, marshal.c: keep dynamic code info per domain.
14288
14289 2004-11-15  Martin Baulig  <martin@ximian.com>
14290
14291         * class.c (mono_type_get_name_recurse): Put type arguments in
14292         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
14293         see bug #68387.
14294
14295 2004-11-15  Martin Baulig  <martin@ximian.com>
14296
14297         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
14298         (mono_class_setup_vtable): When computing `the_cname' for a
14299         generic instance, don't include the namespace since we'd otherwise
14300         add it twice.
14301
14302 2004-11-15  Martin Baulig  <martin@ximian.com>
14303
14304         * class.c (mono_class_create_generic): Changed return type to void.
14305         (mono_class_create_generic_2): New public function; setup
14306         `class->method', `class->field' and `class->interfaces' here
14307         instead of in mono_class_init().
14308
14309         * class.h (mono_class_create_generic): Moved to class-internals.h.
14310
14311 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
14312
14313         * reflection.c (mono_image_create_pefile): take a file HANDLE.
14314         rather than writing to memory, write to this file. Right now,
14315         we are just writting into a buffer, and copying that. However
14316         we can avoid the buffer later.
14317
14318         (mono_dynamic_stream_reset): new function
14319
14320         * icall.c, object-internals.h: update for the above.
14321
14322 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
14323
14324         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
14325         have been using gc'd memory. First it is slower, unlikely
14326         the comment in the source code said, secondly, it increases
14327         our footprint to do it in the gc.
14328
14329         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
14330         the method so that it does not have to copy to managed code.
14331
14332 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14333
14334         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
14335
14336 2004-11-12  Martin Baulig  <martin@localhost>
14337
14338         * reflection.c (mono_image_create_token): Allow generic method
14339         definitions here, since they may appear in an `.override'; see
14340         gen-98/gen-99 for an example.
14341
14342 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
14343
14344         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
14345         #69365.
14346
14347         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
14348         descriptive.
14349
14350 2004-11-11  Martin Baulig  <martin@ximian.com>
14351
14352         * class.c (mono_class_setup_vtable): In an explicit interface
14353         implementation, the method name now includes the arity.
14354
14355 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
14356
14357         * object.c (mono_array_full_copy): Fix warning.
14358
14359 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
14360
14361         * appdomain.c: Removed look_for_method_by_name(). Use the new method
14362         mono_class_get_method_from_name() instead.
14363         
14364         * class-internals.h: Added two new types of wrappers. 
14365         Added MonoRemotingTarget enum. Added new trampoline function type, which
14366         takes an additional MonoRemotingTarget value as parameter, so it is
14367         possible to request a trampoline for a specific target.
14368         
14369         * class.c: Added new mono_class_get_method_from_name() method.
14370         
14371         * class.h: In MonoRemoteClass, we can have now to vtables, one for
14372         general remoting sinks and one specific for cross domain calls.
14373         
14374         * debug-helpers.c: Added new wrapper names.
14375         
14376         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
14377         of a remote class.
14378         
14379         * image.c: Porperly delete value objects form the remoting invoke hashtable.
14380         
14381         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
14382         with several other methods (mono_marshal_get_xappdomain_dispatch,
14383         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
14384         and others) can generate a fast remoting wrapper for cross domain calls.
14385         More information can be found in docs/remoting.
14386         Other changes: Removed mono_find_method_by_name, and used
14387         mono_class_get_method_from_name instead.
14388         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
14389         is stored in the remoting invoke hashtable.
14390         
14391         * marshal.h: published the new method for getting the xdomain wrapper,
14392         and also added a method for getting the adequate wrapper for a given
14393         method and target.
14394         
14395         * object-internals.h, object.c: Added a couple of methods for capying and
14396         cloning arrays.
14397         Modified mono_install_remoting_trampoline, which takes the new remoting
14398         trampoline that has a remoting target as parameter.
14399         mono_class_proxy_vtable now also takes a remoting target as parameter, and
14400         will return the most suitable vtable for the target.
14401         Added mono_remote_class_vtable, which returns the vtable of a remote class
14402         (which can be the normal remoting vtable or the xdomain vtable).
14403         
14404         * threads.c: the xdomain invoke and dispatch wrappers must also be
14405         protected against interruptions.
14406
14407 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14408
14409         * icall.c: use memmove in BlockCopyInternal when the source and
14410         destination arrays are the same.
14411
14412 2004-11-09  Martin Baulig  <martin@ximian.com>
14413
14414         * class-internals.h (MonoGenericContainer): Removed `method' and
14415         `signature', replaced them with `is_method' and `is_signature'
14416         flags.  Added `context'.
14417
14418         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
14419         instead of a `MonoGenericContainer *'.
14420
14421         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
14422         for dynamic type parameters.
14423         (mono_metadata_load_generic_params): Setup `container->context'.
14424
14425         * reflection.c (mono_reflection_setup_generic_class): Setup
14426         `tb->generic_container->context'.
14427         (do_mono_reflection_bind_generic_parameters): Use
14428         mono_class_inflate_generic_type() to correctly inflate types,
14429         rather than using our own hack just for MONO_TYPE_VAR.
14430
14431 2004-11-09  Martin Baulig  <martin@ximian.com>
14432
14433         * class.c (mono_class_inflate_generic_method): Small fix; don't
14434         crash here.
14435
14436         * icall.c
14437         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
14438         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
14439         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
14440         (ves_icall_Type_BindGenericParameters): Likewise.
14441         (ves_icall_Type_get_IsGenericInstance): Likewise.
14442         (ves_icall_Type_GetGenericParameterPosition): Likewise.
14443         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
14444         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
14445         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14446
14447 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14448
14449         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
14450         assembly versions and public key tokens. Fixes #69113.
14451
14452 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
14453
14454         * metadata.c: fix bug introduced with the type cache changes
14455         on 2004-11-06.
14456
14457 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
14458
14459         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
14460         the MonoClass pointer instead of the token in exception clauses.
14461         * reflection.c: updates for the above and make the code not depend
14462         on the structure of MonoExceptionClause.
14463
14464 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14465
14466         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14467         Add support for dynamic assemblies. Fixes #69114.
14468
14469         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
14470
14471 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
14472
14473         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
14474         since most only those methods use it. the code member of
14475         MonoMethodPInvoke was dead, so that can be removed too. Also,
14476         remove inline_count (again, not used), and move slot so that it
14477         can share bits with some other flags. This saves 8 bytes in the
14478         structure and gives us about 50 kb back for mcs helloworld.cs
14479
14480         * *.[ch]: Do naming changes for the above.
14481
14482         * loader.c (mono_method_get_header): Lazily init the header
14483         on first access.
14484         (mono_get_method_from_token): don't init the header here
14485         (mono_free_method): the header may never be allocated
14486
14487         Overall, this saves 150 kb of unmanaged allocations
14488         for mcs helloworld.cs. That accounts for 10% of the unmanaged
14489         memory at runtime.
14490         
14491         * loader.c, loader.h (mono_method_get_header): new accessor.
14492
14493         * *.[ch]: use the above method. Prepares us to lazily load
14494         the header.
14495
14496         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
14497         three warnings, which are actual bugs (see 69206).
14498
14499         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
14500         unused. Saves a cool 4 bytes / method.
14501
14502 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
14503
14504         * metadata.c (builtin_types): Add types for System.Object here.
14505         (mono_metadata_parse_type_full): Cache MonoType*'s that are
14506         for a class or valuetype from klass->this_arg or klass->byval_arg.
14507
14508         On mcs for a hello world, this gets us down from 21836 MonoType's
14509         to 14560.
14510
14511         (mono_metadata_free_type): Account for the above change.
14512
14513 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
14514
14515         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
14516         exception instead of asserting if name is null.
14517         (ves_icall_System_AppDomain_GetData): Ditto.
14518
14519 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
14520
14521         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
14522         EnumBuilder.
14523
14524         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
14525         Return NULL when the domain does not have entry_assembly set.
14526
14527         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
14528         Add a 'resource_modules' argument.
14529         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
14530
14531         * reflection.c (mono_reflection_create_runtime_class): Move setting
14532         of wastypebuilder here, so mono_get_type_object () returns a MonoType
14533         for enums too.
14534
14535         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
14536         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
14537         Throw an ArgumentNullException if 'ptr' is null.
14538
14539         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
14540         assemblies here. Fixes #69020.
14541
14542 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
14543
14544         * reflection.c (build_compressed_metadata): Fix the previous patch for
14545         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
14546         the stack.
14547
14548 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
14549
14550         * assembly.c (mono_assembly_names_equal): Allow a match if one of
14551         the cultures is false. Fixes #69090.
14552
14553         * reflection.c (build_compressed_metadata): Fix invalid memory read 
14554         detected by valgrind.
14555         
14556         * reflection.c (mono_reflection_get_type): Avoid triggering a 
14557         TypeResolve multiple times for the same type. Fixes #65577.
14558
14559 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
14560
14561         * marshal.c: Avoid using ldftn to call managed functions. It is
14562         much slower than just a call.
14563
14564         * reflection.c (mono_module_get_object): free the basename we
14565         allocate here from glib.
14566         
14567         * reflection.c (ensure_runtime_vtable): make sure to free
14568         overrides.  Also, we were allocating an array of MonoMethod not an
14569         array of MonoMethod*.
14570
14571         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
14572
14573         * image.c (mono_image_close): free image->guid here.
14574
14575 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
14576
14577         * reflection.c: Fix some spec conformance issues with the PE file
14578         structures so mcs compiled apps run on the Net 2.0 beta.
14579
14580 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
14581
14582         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
14583         Implement this. Fixes #67264.
14584
14585         * debug-helpers.h debug-helpers.c marshal.c: Move 
14586         mono_find_method_by_name to debug-helpers.c.
14587
14588 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
14589
14590         * object.c (mono_release_type_locks): type_initialization_hash is
14591         a GHashTable.
14592
14593         * reflection.c object.c object-internals.h: Fix warnings.
14594
14595         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
14596         without accessors. Fixes #61561.
14597
14598         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
14599         application base from the root domain if not set. Fixes #65641.
14600         (mono_runtime_init): Fix warning.
14601
14602 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14603
14604         * appdomain.c: call mono_thread_pool_init.
14605         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
14606         of worker threads based on the number of CPUs and the environment
14607         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
14608         for non-windows (windows) systems.
14609
14610 2004-10-27  Chris Toshok  <toshok@ximian.com>
14611
14612         * mono-debug-debugger.c (write_class): don't call mono_class_init
14613         here, as even with the check for (!klass->init_pending), we get
14614         into a situation where we're hitting cycles in class
14615         initialization.  Fixes #68816.
14616
14617 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
14618
14619         * image.c: Avoid overwriting values in the loaded_images_hash when an
14620         assembly is loaded multiple times. Fixes #61152.
14621
14622         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
14623         so multiple satellite assemblies for the same name can be loaded.
14624         Fixes #68259.
14625
14626         * mono_domain_assembly_preload: Actually return the loaded assembly, 
14627         not NULL.
14628
14629         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
14630         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
14631
14632         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
14633         pending finalizers are not invoked after the appdomain has been 
14634         unloaded. Fixes #67862.
14635
14636 2004-10-22  Martin Baulig  <martin@ximian.com>
14637
14638         * mono-debug-debugger.c
14639         (mono_debugger_runtime_invoke): Don't box valuetypes.
14640
14641 2004-10-22  Chris Toshok  <toshok@ximian.com>
14642
14643         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
14644         don't hide private methods.
14645
14646 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
14647
14648         * icall.c: Allows the runtime to "share" (when known) the public key
14649         token of an assembly. This avoid the need to recalculate the token 
14650         (from the public key) in managed code.
14651
14652 2004-10-21  Chris Toshok  <toshok@ximian.com>
14653
14654         * debug-helpers.c (append_class_name): argh, revert last patch.
14655         
14656 2004-10-21  Chris Toshok  <toshok@ximian.com>
14657
14658         * debug-helpers.c (append_class_name): use '+' as the delimiter,
14659         not '/', so that it matches what the debugger uses to look up
14660         methods.
14661
14662 2004-10-21  Martin Baulig  <martin@ximian.com>
14663
14664         * mono-debug-debugger.c (mono_debugger_throw_exception): New
14665         public method; this is called each time an exception is thrown and
14666         allows the debugger to use exception catch points.
14667
14668 2004-10-21  Martin Baulig  <martin@ximian.com>
14669
14670         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
14671         the stack pointer and the exception object in some struct and pass
14672         that to the debugger.
14673
14674 2004-10-21  Chris Toshok  <toshok@ximian.com>
14675
14676         * mono-debug-debugger.c (do_write_class): add instance/static
14677         event support.  We don't expose "raise" or "other" yet.
14678         (event_is_static): new method.
14679
14680 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
14681
14682         * mono-debug-debugger.c
14683         (mono_debugger_handle_exception): Remove
14684         bogus return value for fussy compilers.
14685
14686 2004-10-20  Martin Baulig  <martin@ximian.com>
14687
14688         * mono-debug-debugger.c
14689         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
14690         (mono_debugger_handled_exception): Likewise.
14691
14692 2004-10-20  Martin Baulig  <martin@ximian.com>
14693
14694         * mono-debug-debugger.h (MonoDebuggerEvent): Added
14695         MONO_DEBUGGER_EVENT_EXCEPTION.
14696
14697         * mono-debug-debugger.c (mono_debugger_handle_exception): New
14698         public function to send the debugger a notification for an
14699         exception and inform it about a catch/finally clause.
14700
14701 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
14702
14703         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
14704         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
14705         fix 2.95 build. 
14706
14707         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
14708
14709 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
14710
14711         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
14712         marshalled as [In,Out]. Fixes #58325.
14713
14714 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
14715
14716         * reflection.c (mono_method_body_get_object): Implement some fields.
14717
14718 2004-10-12  Martin Baulig  <martin@ximian.com>
14719
14720         * reflection.c (mono_reflection_bind_generic_parameters): Small
14721         fix, correctly retrieve our parent from a generic instance.
14722
14723 2004-10-12  Martin Baulig  <martin@ximian.com>
14724
14725         * metadata.c (mono_metadata_generic_param_equal): We always have
14726         an owner.
14727
14728         * class.c
14729         (mono_class_from_generic_parameter): We need to have an owner.
14730         (my_mono_class_from_generic_parameter): Likewise.
14731
14732         * reflection.c (mono_reflection_setup_generic_class): Renamed to
14733         mono_reflection_create_generic_class() and added a new
14734         mono_reflection_setup_generic_class().  
14735         (mono_reflection_initialize_generic_param): If we're a nested
14736         generic type and inherited from the containing class, set our
14737         owner to the outer class.
14738
14739 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
14740
14741         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
14742
14743         * reflection.c (mono_method_body_get_object): New function to create
14744         a MethodBody object.
14745
14746         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
14747
14748 2004-10-11  Martin Baulig  <martin@ximian.com>
14749
14750         * metadata.c (_mono_metadata_type_equal): Renamed to
14751         do_mono_metadata_type_equal() and made static.
14752
14753 2004-10-11  Martin Baulig  <martin@ximian.com>
14754
14755         * appdomain.c: Bump corlib version number to 28.
14756
14757 2004-10-10  Martin Baulig  <martin@ximian.com>
14758
14759         * class-internals.h
14760         (MonoGenericInst): Added `MonoGenericContainer *container'.
14761         (MonoGenericMethod): Likewise.
14762         (MonoGenericContext): Likewise.
14763         (MonoGenericParam): Added `MonoGenericContainer *owner'.
14764
14765         * metadata.c
14766         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
14767         (do_mono_metadata_parse_generic_inst): Likewise.
14768         (mono_metadata_parse_type_full): New public method.  This is the actual
14769         mono_metadata_parse_type() implementation - with an additional
14770         `MonoGenericContainer *' argument.
14771         (mono_metadata_parse_array_full): Likewise.
14772         (mono_metadata_parse_signature_full): Likewise.
14773         (mono_metadata_parse_method_signature_full): Likewise.
14774         (mono_metadata_parse_mh_full): Likewise.
14775         (mono_type_create_from_typespec): Likewise.
14776         (mono_metadata_interfaces_from_typedef_full): New public method;
14777         this is similar to the other _full() methods, but we take a
14778         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
14779         (mono_metadata_parse_generic_param): Take an additional
14780         `MonoGenericContainer *' argument and lookup the MonoGenericParam
14781         from that container.
14782         (mono_metadata_generic_param_equal): New static method to compare
14783         two type parameters.
14784         (_mono_metadata_type_equal): New static method; takes an
14785         additional `gboolean signature_only' argument - if true, we don't
14786         compare the owners of generic parameters.
14787         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
14788         with a TRUE argument - do a signature-only comparision.
14789
14790         * loader.c: Use the new _full() methods and pass the
14791         MonoGenericContainer to them.
14792
14793         * object-internals.h (MonoReflectionTypeBuilder): Added
14794         `MonoGenericContainer *generic_container' field.
14795         (MonoReflectionMethodBuilder): Likewise.
14796
14797 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14798
14799         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
14800         case initial images of dynamic assemblies.
14801
14802         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
14803
14804         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
14805
14806         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
14807         length of event->other array.
14808         (typebuilder_setup_events): Ditto.
14809
14810         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
14811         'assembly_by_name' and add an 'assemblies' list.
14812
14813         * assembly.h assembly.c: Add a new search hook for determining whenever
14814         an assembly is already loaded. Use this instead of searching in the
14815         loaded_assemblies list.
14816
14817         * domain.c appdomain.c: Implement the new search hook so loaded 
14818         assemblies are now scoped by appdomain. Fixes #67727.
14819
14820 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
14821
14822         * threads.c (mono_thread_attach): Initialize synch_lock field so
14823         mono_thread_detach works again.
14824
14825         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
14826         'lib' too. Fixes #63130.
14827
14828 2004-10-06  Jackson Harper  <jackson@ximian.com>
14829
14830         * culture-info-tables.h: regenerated.
14831
14832 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
14833
14834         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
14835         implemented by other interfaces in the result. Fixes #65764.
14836         
14837         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14838         Handle unloadable modules without crashing.
14839
14840         * image.c (load_modules): Revert the previous patch since modules must
14841         have a fixed index inside the array.
14842         
14843         * image.c (load_modules): Don't include native modules in the modules
14844         array.
14845
14846 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14847
14848         * reflection.h: Add param_defaults field.
14849
14850         * reflection.c: Add support for parameter defaults in dynamic methods.
14851         Fixes #64595.
14852
14853         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
14854         an empty string when a type has no namespace. Fixes #64230.
14855
14856 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
14857
14858         * tabledefs.h: Added "internal" security actions to support non-CAS
14859         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
14860         Note: they do not seems to be used anymore in 2.0 (new metadata format)
14861
14862 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
14863
14864         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
14865         constructor of abstract class. Fixes #61689.
14866
14867 2004-10-04  Martin Baulig  <martin@ximian.com>
14868
14869         * class-internals.h (MonoGenericContainer): New type.
14870         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
14871         `MonoGenericContainer *generic_container'.
14872         (MonoClass): Replaced `gen_params' and `num_gen_params' with
14873         `MonoGenericContainer *generic_container'.
14874
14875         * metadata.c (mono_metadata_load_generic_params): Return a
14876         `MonoGenericContainer *' instead of a `MonoGenericParam *';
14877         removed the `num' argument.
14878
14879 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14880
14881         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
14882         for dynamic images.
14883
14884         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
14885         machine fields.
14886
14887         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
14888
14889         * reflection.c: Save pe_kind and machine values into the generated
14890         image file.
14891
14892         * appdomain.c: Bump corlib version number.
14893
14894         * object-internals.h: Reorganize layout of LocalBuilder.
14895
14896         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
14897         New helper function.
14898
14899         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
14900         created MonoType for dynamic types. Fixes #66180.
14901
14902 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
14903
14904         * threadpool.c: the ares hashtable needs a critical section around it.
14905         this prevents some nasty segfaults
14906
14907 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14908
14909         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
14910         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
14911         bug 67324).
14912         
14913 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14914
14915         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
14916         
14917 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14918
14919         * image.c: Always canonicalize image file names, to avoid loading
14920         the same assembly twice when referenced using a relative path.
14921
14922 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14923
14924         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
14925
14926         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
14927
14928         * marshal.c: Fix warnings.
14929
14930 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
14931
14932         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
14933         attempting to marshal the delegate_trampoline as the method_addr.
14934         This patch has a static hashtable of marshalled delegates so that 
14935         we can map delegate_trampoline addresses back to delegates.  This
14936         allows a delegate passed to managed code to be passed back into native
14937         code.  Fixes #67039
14938
14939 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14940
14941         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
14942
14943         * reflection.c (method_encode_code): Align method headers properly.
14944         Fixes #66025.
14945
14946 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14947
14948         * marshal.c: In the runtime invoke wrapper, reset the abort
14949         exception if it is cached. This avoids the automatic rethrowal of 
14950         the exception after the catch of the wrapper. Also check for pending
14951         interruptions before calling the managed method. This is done using
14952         the new method emit_thread_force_interrupt_checkpoint, since the
14953         normal checkpoint method is ignored when running the invoke wrapper.
14954         * object.c: If the abort exception is rethrown, set the abort_exc
14955         field of the thread, so it will be rethrown aftere every catch.
14956         * threadpool.c: Only run an interruption checkpoint if what has been
14957         requested is a stop of the thread (aborts will be ignored).
14958         * threads.c: By default, a thread will now never be interrumped while
14959         running the runtime invoke wrapper (this ensures that runtime_invoke
14960         will always return to the caller if an exception pointer is provided).
14961         There is a new special method mono_thread_force_interruption_checkpoint()
14962         to force an interruption checkpoint even if running a protected
14963         wrapper, which is used by the same runtime invoke wrapper to do a check
14964         at a safe point.
14965
14966 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14967
14968         * object.c, object-internals.h: Implemented mono_release_type_locks,
14969         which releases the cctor locks held by a thread.
14970         * threads.c, threads.h: In thread_cleanup, release cctor locks held
14971         by a thread. Added mono_thread_exit() method to be used to safely stop
14972         a thread.
14973
14974 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14975
14976         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14977         Move null check before dereference.  Avoid indexing beyond the end
14978         of the 'modules' array.
14979
14980 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14981
14982         * metadata-internals.h (MonoImage): Add module_count field.
14983         * image.c (load_modules): Set image->module_count.
14984         (mono_image_load_file_for_image): Use image->module_count.
14985         * reflection.c (mono_image_load_module): Append to image->modules array 
14986         of dynamic assembly.
14987         (mono_module_get_object): Fix loop to actually increment index.
14988         Use image->module_count.
14989         * assembly.c (mono_assembly_load_references): Use image->module_count.
14990         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
14991         Likewise.
14992
14993 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14994
14995         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
14996         Avoid assert on generic types.
14997
14998 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
14999
15000         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
15001
15002         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
15003
15004         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
15005         function to convert a MarshalSpec structure to its managed counterpart.
15006
15007         * reflection.c: Fix warnings.
15008         
15009         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
15010         field.
15011
15012         * icall.c (mono_create_icall_signature): Fix build.
15013
15014 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15015
15016         * icall.c: Add MakePointType icall.
15017
15018         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
15019         warnings.
15020
15021 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15022
15023         * threadpool.c: reuse allocated slots in the queue.
15024
15025 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15026
15027         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
15028
15029         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
15030
15031         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
15032         previous change.
15033
15034         * tabledefs.h: Add constants for pinvoke attributes BestFit and
15035         ThrowOnUnmappableChar.
15036
15037         * icall.c (ves_icall_Type_GetPacking): New icall.
15038
15039 2004-09-24  Martin Baulig  <martin@ximian.com>
15040
15041         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
15042
15043 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15044
15045         * appdomain.c:
15046         (mono_domain_set): allow setting a domain that is being unloaded.
15047         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
15048         being unloaded.
15049
15050 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15051
15052         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
15053         the GetCustomAttributes icall.
15054
15055 2004-09-23  Martin Baulig  <martin@ximian.com>
15056
15057         * object-internals.h (MonoReflectionGenericParam): Replaced
15058         'has_ctor_constraint', `has_reference_type' and `has_value_type'
15059         with `guint32 attrs'.
15060
15061 2004-09-23  Martin Baulig  <martin@ximian.com>
15062
15063         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
15064
15065 2004-09-23  Martin Baulig  <martin@ximian.com>
15066
15067         * object-internals.h (GenericParameterAttributes): New enum.
15068
15069 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15070
15071         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
15072         
15073         * class.c (init_events): Fill out event->other field.
15074
15075         * class.c: Fix warnings.
15076
15077         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
15078
15079 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15080
15081         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
15082         walk which doesn't supply the IL offset.
15083
15084 2004-09-22  Martin Baulig  <martin@ximian.com>
15085
15086         * reflection.c (mono_reflection_setup_internal_class): If we're
15087         System.ValueType, System.Object or System.Enum, set
15088         `klass->instance_size' and create the vtable.
15089         (mono_reflection_create_internal_class): If we're an enum type,
15090         get the base class from our current corlib.
15091
15092 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
15093
15094         * reflection.h (MonoResolveTokenError): New type.
15095
15096         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
15097         icall.
15098
15099         * icall.c: Add an 'error' argument to the ResolveToken icalls.
15100
15101 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
15102
15103         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
15104         Support also calling constructors, but only for already allocated objects.
15105
15106 2004-09-17  Geoff Norton <gnorton@customerdna.com>
15107
15108         * reflection.c (type_get_qualified_name): If the klass is null
15109         return the typename to avoid a NullRefEx.
15110         (encode_cattr_value): Get the qualified name of the boxed type,
15111         not the underlying enumtype.  Fixes #62984.
15112
15113 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
15114
15115         * marshal.c: Fix problems with previous checkin.
15116
15117 2004-09-21    <vargaz@freemail.hu>
15118
15119         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
15120         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
15121
15122         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
15123
15124 2004-09-21  Geoff Norton <gnorton@customerdna.com>
15125
15126         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
15127         should only return a type for pointers, arrays, and passbyref types.
15128         Fixes bug #63841.
15129
15130 2004-09-21  Martin Baulig  <martin@ximian.com>
15131
15132         * domain.c (mono_debugger_check_runtime_version): New public
15133         function.
15134
15135         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
15136
15137 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
15138
15139         * reflection.c: Added missing sort to the declarative security 
15140         attributes table. MS implementation stops seeing the attributes if the
15141         token number regress in the table (as shown by ildasm and permview).
15142
15143 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
15144
15145         * object-internals.h (MonoReflectionModule): Add 'token' field.
15146         
15147         * reflection.c (mono_reflection_get_token): Add support for Module
15148         and Assembly.
15149         (mono_module_get_object): Set 'token' field.
15150         (mono_module_file_get_object): Set 'token' field.
15151
15152         * icall.c: Add new Assembly and Module icalls.
15153
15154         * appdomain.c: Bump corlib version.
15155
15156 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
15157
15158         * loader.h loader.c class.h class.c: Add helper functions for obtaining
15159         tokens of metadata objects.
15160
15161         * reflection.h reflection.c (mono_reflection_get_token): New function
15162         to obtain the token of a metadata object.
15163
15164         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
15165
15166 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15167
15168         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
15169         
15170         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
15171
15172 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
15173
15174         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
15175         * object-internals.h: Added 3 MonoArray* members to MonoReflection
15176         AssemblyBuilder to access the permissions set in the class lib.
15177         * reflection.c: Added security attributes encoding step in 
15178         mono_image_build_metadata.
15179         * tabledefs.h: Added new security actions defined in 2.0:
15180         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
15181
15182 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15183
15184         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
15185         macro parameter.
15186
15187 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15188  
15189         * locales.c: nullify the ICU_collator member of CompareInfo when it is
15190           finalized. There where random SIGSEVs at program termination, when
15191           an object being finalized was trying to do a string comparison and
15192           the current culture was already finalized.
15193  
15194 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15195
15196         * threads.c: call thread_cleanup before finishing the thread if we get
15197         there.
15198
15199 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
15200
15201         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
15202         assemblies from the parent. Fixes #65665.
15203
15204 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
15205
15206         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
15207         modifiers.
15208
15209 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
15210
15211         * reflection.h: add prototype for mono_get_dbnull_object
15212         * reflection.c: add prototypes for get_default_param_value_blobs 
15213         and mono_get_object_from_blob for fussier compilers
15214
15215 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
15216  
15217         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
15218         false deadlock checks in class initialization.
15219  
15220 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15221
15222         * image.c (mono_image_addref): Fix comment.
15223
15224         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
15225         possible.
15226
15227 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
15228
15229         * reflection.c (mono_param_get_objects): Modified to return
15230         ParameterInfo.DefaultValue object.
15231
15232         (get_default_param_value_blobs):
15233         (mono_get_object_from_blob):
15234         (mono_get_dbnull_object): New helper routines. 
15235
15236         * object.c (mono_get_constant_value_from_blob): New helper routine
15237         carved out from get_default_field_value ()
15238
15239         * object-internals.h (mono_get_constant_value_from_blob): Added
15240         function declaration.
15241
15242 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15243
15244         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
15245         referenced assemblies. Fixes #62135.
15246
15247         * exception.h exception.c (mono_get_exception_file_not_found2): New
15248         helper function.
15249
15250 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15251
15252         * class.h class.c: Add mono_type_get_underlying_type ().
15253
15254 2004-09-09  Geoff Norton <gnorton@customerndna.com>
15255
15256         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
15257         Fix GetTypes() to support dynamically created assemblies.
15258
15259 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
15260
15261         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
15262         
15263         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
15264         previous patch.
15265
15266         * reflection.h reflection.c loader.c: Allow dynamic construction of
15267         pinvoke methods. Fixes #65571.
15268         
15269         * reflection.c (mono_reflection_get_type): Revert previous change since
15270         it causes regressions.
15271
15272 2004-09-08  Martin Baulig  <martin@ximian.com>
15273
15274         * class.c (class_compute_field_layout): Don't call
15275         mono_class_layout_fields() for open generic instances.
15276
15277 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
15278         * threads.c appdomain.c: fix typo in GC macro
15279
15280 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15281
15282         * threads.c: don't call mono_thread_detach() in start_wrapper(),
15283         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
15284
15285 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * image.c (mono_image_close): Applied patch from 
15288         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
15289         assembly is loaded multiple times from data.
15290         
15291         * image.c (mono_image_open): Fix warning.
15292
15293 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
15296         once. Fixes #58334.
15297         
15298         * reflection.c (mono_reflection_create_runtime_class): Initialize
15299         klass->nested_classes. Fixes #61224.
15300
15301 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15302
15303         * threads.c: sched_yield() on exit, to allow threads to quit.
15304
15305 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15306
15307         * object.c (mono_unhandled_exception): Remove leftover debug code.
15308
15309 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
15310
15311         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
15312
15313 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15314
15315         * marshal.c (emit_marshal_array): Really null terminate string arrays.
15316         
15317         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
15318
15319 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15320
15321         * marshal.c (emit_marshal_array): Null terminate string arrays.
15322         
15323         * marshal.c (raise_auto_layout_exception): Fix warning.
15324
15325         * reflection.c (mono_param_get_objects): Initialize the default value
15326         with DBNull.Value, not null. Fixes #62123.
15327
15328 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
15329
15330         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
15331         throw an exception with a cute explanation.
15332
15333 2004-09-06  Dick Porter  <dick@ximian.com>
15334
15335         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
15336         Close the new process's thread handle, as we don't use it.  The
15337         handle stays around forever otherwise.
15338
15339 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15340
15341         * object.c (arith_overflow): Fix warning.
15342
15343         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
15344         calling conventions in method refs. Fixes #65352.
15345
15346         * reflection.c: Fix warnings.
15347
15348 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15349
15350         * icall.c: Add a new icall for Array.Clear
15351
15352 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15353
15354         * object.c: When allocating an array, we have to throw
15355         an overflow exception if any of the lengths are < 0.
15356
15357 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15358
15359         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
15360         properly. Also move implementation of string array marshalling to 
15361         managed code. Fixes #42316.
15362
15363 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15364
15365         * assembly.c: provide more information when loading an assembly fails.
15366
15367 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15368
15369         * filewatcher.c: don't expect the development fam package to be
15370         installed.
15371
15372 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
15373
15374         * marshal.c: Make a copy of the signature cookie since it will be
15375         freed by the caller.
15376         
15377         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
15378
15379         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
15380
15381         * metadata.c (mono_metadata_free_marshal_spec): New function to free
15382         marshal specs.
15383
15384         * marshal.c: More refactoring.
15385         
15386         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
15387         smaller functions.
15388
15389 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
15390
15391         * object.c: In mono_message_invoke, fill the output parameter array after
15392           calling the managed method (it was done before the call). This fixes
15393           bug #59299.
15394
15395 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15396
15397         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
15398         as well.
15399
15400 2004-09-02  Martin Baulig  <martin@ximian.com>
15401
15402         * class.c (mono_class_instance_size): Don't allow generic type
15403         definitions or open generic instances.
15404         (mono_class_array_element_size): If we're a value type, call
15405         mono_class_instance_size() on the original class.
15406
15407         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
15408         handle generic instances.
15409
15410         * mono-debug-debugger.c (write_type): Handle generic instances
15411         like classes.
15412
15413 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15414
15415         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
15416         the allocation request fails. Fixes #65089.
15417
15418         * object.c (mono_runtime_free_method): Do not call mono_free_method.
15419         
15420         * object.c (mono_runtime_free_method): New function to free a dynamic
15421         method.
15422
15423         * marshal.c (mono_delegate_free_ftnptr): New function to free the
15424         delegate trampoline.
15425
15426         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
15427         with hasthis as dynamic,
15428
15429         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
15430
15431         * domain.c (mono_jit_info_table_remove): New function to remove an
15432         entry from the jit info table.
15433
15434         * class-internals.h (MonoMethod): Add 'dynamic' field.
15435
15436         * loader.c: Fix warnings.
15437
15438 2004-09-01  Martin Baulig  <martin@ximian.com>
15439
15440         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
15441         instead of mono_debugger_lock() because the latter one is a no-op
15442         unless running in the debugger.
15443
15444 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15445
15446         * class.c (class_compute_field_layout): Classes with auto-layout or
15447         reference fields are not blittable.
15448         
15449 2004-09-01  Dick Porter  <dick@ximian.com>
15450
15451         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
15452         mono_image_get_filename() to get the assembly location.
15453
15454         * icall.c:
15455         * metadata.h: Fix compile warnings
15456
15457 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * class.c (class_compute_field_layout): System.Object is blittable.
15460
15461         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
15462         as in/out. Fixes #59909.
15463
15464 2004-09-01  Martin Baulig  <martin@ximian.com>
15465
15466         * metadata.h (MONO_TYPE_ISREFERENCE): Call
15467         mono_metadata_generic_inst_is_valuetype() if we're a generic
15468         instance to check whether our underlying type is a reference type.
15469
15470 2004-09-01  Martin Baulig  <martin@ximian.com>
15471
15472         * metadata.c (mono_type_size): If we're a generic instance, call
15473         mono_class_value_size() for value types.
15474
15475 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
15476
15477         * marshal.c: Implement more custom marshalling functionality. Fixes
15478         #64915.
15479
15480 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15481
15482         * mono-debug.c, debug-mono-symfile.c: add some locking love.
15483
15484 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
15487
15488         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
15489
15490         * icall.c: Fix some warnings.
15491
15492         * threads.c (abort_appdomain_thread): Fix unref errors.
15493         (mono_thread_current): Fix THREAD_DEBUG define.
15494
15495 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15496
15497         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
15498
15499         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
15500
15501 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
15502
15503         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
15504         string arrays.
15505
15506 2004-08-28  Martin Baulig  <martin@ximian.com>
15507
15508         * metadata.c
15509         (mono_metadata_generic_inst_is_valuetype): New public function.
15510
15511         * metadata.h (MONO_TYPE_ISSTRUCT): Call
15512         mono_metadata_generic_inst_is_valuetype() if we're a generic
15513         instance to check whether our underlying type is a valuetype.
15514
15515 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15516
15517         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
15518         #63768.
15519
15520 2004-08-25  Martin Baulig  <martin@ximian.com>
15521
15522         * loader.c (mono_get_method_from_token): Abstract methods can also
15523         be generic and thus have type parameters.
15524
15525         * metadata-internals.h
15526         (MonoDynamicImage): Added `GPtrArray *gen_params'.
15527
15528         * reflection.c (mono_image_get_generic_param_info): Don't create a
15529         metadata row, just add an entry to the `gen_params' array.
15530         (build_compressed_metadata): Sort the `gen_params' array and then
15531         actually create the metadata.
15532
15533 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15534
15535         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
15536
15537 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15538
15539         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
15540
15541 2004-08-24  Martin Baulig  <martin@ximian.com>
15542
15543         * class.cs (mono_class_is_subclass_of): Like an interface, a
15544         generic instance also derives from System.Object.
15545
15546 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
15547
15548         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
15549         custom modifiers to be in any order. Fixes #61990.
15550
15551 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
15552
15553         * object.c: Register mono_object_new_fast icall.
15554         
15555         * object.c (mono_class_get_allocation_ftn): Return to calling
15556         mono_object_new_fast, since it seems faster to compute the object 
15557         size in unmanaged code than passing it as a parameter.
15558
15559         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
15560
15561         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
15562         this function with Boehm as the oom handler, so we don't have to check
15563         the result of GC_malloc.
15564
15565         * object.c: Remove checks for oom.
15566
15567         * object.h object.c (mono_class_get_allocation_ftn): New function to
15568         return the icall which can be used to allocate an instance of a given
15569         class. 
15570
15571         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
15572
15573         * class-internals.h: Add 'enabled' field.
15574
15575 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
15576
15577         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
15578
15579 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
15580         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
15581         value 0x0010.
15582
15583 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15584
15585         * appdomain.c: use the Tls function for appdomain too,
15586         at Zoltan's request. Actually return in mono_context_get
15587
15588         * appdomain.c, profiler.c, threads.c: use __thread
15589
15590 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
15591
15592         * appdomain.c threads.c: Call GC_CreateThread on windows.
15593
15594         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
15595         multiple libraries since this don't work on windows.
15596
15597 2004-08-18  Martin Baulig  <martin@ximian.com>
15598
15599         * class-internals.h
15600         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
15601         MonoMethodHeader.
15602
15603         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
15604         MonoMethodNormal since we also need it for abstract and interface
15605         methods.
15606
15607         * reflection.c
15608         (build_compressed_metadata): Sort the GenericParam table.
15609         (mono_image_create_token): Added `gboolean create_methodspec'
15610         argument; this is false when generating a MethodImpl token.
15611         (reflection_methodbuilder_to_mono_method): Abstract and interface
15612         methods may also have generic parameters.
15613
15614 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15615
15616         * appdomain.c: thread local alloc
15617
15618 2004-08-17  Martin Baulig  <martin@ximian.com>
15619
15620         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
15621
15622         * icall.c
15623         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
15624         argument.
15625
15626         * class.c (mono_type_get_full_name): New public function.
15627         (mono_type_get_name): Don't include the type arguments.
15628
15629 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
15630
15631         * Makefile.am: Build static versions of libmetadata and libmonoruntime
15632         for inclusion into the mono executable.
15633
15634 2004-08-16  Martin Baulig  <martin@ximian.com>
15635
15636         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
15637         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
15638
15639 2004-08-14  Martin Baulig  <martin@ximian.com>
15640
15641         * class.c (dup_type): Also copy the `byref' field.
15642
15643 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
15644
15645         * reflection.c (create_dynamic_mono_image): Revert the last change 
15646         since it breaks bootstrap.
15647
15648 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15649
15650         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
15651
15652         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
15653         not free them with g_free.
15654
15655 2004-08-11  Martin Baulig  <martin@ximian.com>
15656
15657         * reflection.c (mono_reflection_setup_internal_class): Also call
15658         mono_class_setup_mono_type() if we already have a `tb->type.type'.
15659
15660 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
15661
15662         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
15663         called during default (first) AppDomain creation. Keep track of
15664         Evidence when loading assemblies.
15665
15666 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15667
15668         * opcodes.c, opcodes.h: reduce runtime relocations.
15669
15670 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15671
15672         * culture-info.h, locales.c: fixes and chages to sue the new
15673         optimized format of the locale data.
15674         * culture-info-tables.h: regenerated.
15675
15676 2004-08-06  Geoff Norton <gnorton@customerdna.com>
15677         
15678         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
15679
15680 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
15681
15682         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
15683         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
15684         * domain-internals.h: icall declaration.
15685         * icall.c: icall registration.
15686         * object-internals.h: New fields in MonoAssembly for CAS.
15687
15688 2004-08-05  Duncan Mak  <duncan@ximian.com>
15689
15690         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
15691         CEE_LDELEM_ANY.
15692
15693 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
15694
15695         * reflection.c: fix to deal with object[] arrays in custom ctors
15696         (bug #62550).
15697
15698 2004-08-05  Martin Baulig  <martin@ximian.com>
15699
15700         * class.c (mono_class_array_element_size): Added support for
15701         generic instances and correctly handle "recursive" types.
15702
15703 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15704
15705         * assembly.c: Fix warnings.
15706
15707 2004-08-04  Martin Baulig  <martin@ximian.com>
15708
15709         * class.c
15710         (mono_type_get_name_recurse): Added `gboolean include_arity'
15711         argument specifying whether or not we should include the generic
15712         arity in the type name.
15713         (_mono_type_get_name): New static function.
15714         (mono_class_setup_vtable): If we're a generic instance, don't
15715         include the generic arity in the names of explicit method
15716         implementations.        
15717
15718 2004-08-03  Martin Baulig  <martin@ximian.com>
15719
15720         * class.c (mono_type_get_name_recurse): Enclose the generic type
15721         arguments in `<', '>'.
15722
15723 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15724
15725         * gc.c: make GC warning messages use the trace API, they are just
15726         noise to most of the users.
15727
15728 2004-08-03  Martin Baulig  <martin@ximian.com>
15729
15730         * debug-mono-symfile.c (read_string): Correctly read the string.
15731
15732 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15733
15734         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
15735         
15736         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
15737         icalls.
15738         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
15739
15740 2004-07-30  Martin Baulig  <martin@ximian.com>
15741
15742         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
15743         Reflect latest symbol writer changes.   
15744
15745 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15746
15747         * object.c: always create an object if null is passed
15748         to Invoke() where a valuetype is expected.
15749
15750 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
15751
15752         * marshal.c (mono_marshal_init): make managed
15753         signatures match native ones better for 64bits.
15754
15755 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15756
15757         * appdomain.c: hack to build correctly the private bin path on windows.
15758         Fixes bug #61991.
15759
15760 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
15761
15762         * assembly.c: Load mscorlib from the correct framework directory
15763           (mono/<version>/mscorlib.dll).
15764         * appdomain.h: Added prototypes for new functions.
15765         * internals.h: Added some prototypes.
15766         * domain.c: When initializing the runtime, get from the executable and
15767           the configuration files the runtime version that the app supports.
15768           Added support methods for reading app.exe.config. Added list of versions
15769           supported by the JIT. Added two new methods: mono_init_from_assembly,
15770           which initializes the runtime and determines the required version from
15771           the provided exe file, and mono_init_version, which initializes
15772           the runtime using the provided version.
15773         * icall.c: Get machine.config from version-specific directory.
15774         * reflection.c: When generating an image, embed the version number
15775           of the current runtime.
15776
15777 2004-07-28  Dick Porter  <dick@ximian.com>
15778
15779         * socket-io.c
15780         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
15781         returned sockaddr size before creating the remote address object.
15782         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
15783         61608.
15784
15785 2004-07-28  Dick Porter  <dick@ximian.com>
15786
15787         * locales.c (string_invariant_compare_char): Fix invariant char
15788         compares between upper and lower cases.  Fixes bug 61458.
15789
15790 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
15791         
15792         * marshal.c: actually cache stelem.ref wrappers.
15793         
15794 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15795
15796         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
15797         sections and remove the mono_cli_rva_map () function.
15798
15799 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15800
15801         * debug-mono-symfile.c: fix one more endianess issue, from a patch
15802         by Geoff Norton (<gnorton@customerdna.com>).
15803
15804 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15805
15806         * class.c: fix class loads for pointer types (typeof(int) !=
15807         typeof(int*)).
15808
15809 2004-07-27  Martin Baulig  <martin@ximian.com>
15810
15811         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
15812         reading the debugging information from an external ".mdb" file.
15813
15814 2004-07-24  Martin Baulig  <martin@ximian.com>
15815
15816         * reflection.c (mono_image_get_type_info): Only write a class
15817         layout entry if we actually have a size or a packing size.
15818
15819 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15820
15821         * reflection.c (type_get_fully_qualified_name): 
15822         insert cast to get type checking of ?: with non-gcc compilers
15823
15824 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15825
15826         * rand.c: use g_getenv for both lookups of
15827         MONO_EGD_SOCKET
15828
15829 2004-07-17  Martin Baulig  <martin@ximian.com>
15830
15831         * reflection.c (mono_reflection_bind_generic_method_parameters):
15832         Set `gmethod->reflection_info'.
15833
15834 2004-07-17  Martin Baulig  <martin@ximian.com>
15835
15836         * class.c (mono_class_create_from_typedef): Insert the newly
15837         created class into the hash table before computing the interfaces
15838         since we could be called recursively.
15839
15840 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
15841
15842         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
15843         function to implement stelem.ref in managed code
15844         * class-internals.h, debug-helpers.c: a new wrapper type
15845         for the above.
15846
15847 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15848
15849         * gc.c: allow GC handles to work even when no GC is compiled in.
15850         Fix part of bug #61134 (GetAddrOfPinnedObject).
15851
15852 2004-07-13  Peter Williams  <peter@newton.cx>
15853  
15854         * process.c (complete_path): Make sure we don't attempt to execute
15855         directories.
15856  
15857 2004-07-12  Geoff Norton <gnorton@customerdna.com>
15858
15859         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
15860           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
15861           and will add/subtract the hour if needed
15862
15863 2004-07-12  Martin Baulig  <martin@ximian.com>
15864
15865         * reflection.c (mono_field_get_object): If we have
15866         `field->generic_info', take the attributes from
15867         `field->generic_info->generic_type'.    
15868
15869 2004-07-12  Martin Baulig  <martin@ximian.com>
15870
15871         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
15872         This function must be called before initializing the runtime.
15873         (mono_debug_init_1): New function; call this after initializing
15874         the runtime, but before loading the assembly.  It tells the
15875         debugger to load corlib and the builtin types.
15876
15877         * mono-debug-debugger.c: Did some larger changes in the debugging
15878         code; support recursive class declarations, make sure we actually
15879         add all classes.
15880
15881 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15882
15883         * debug-helpers.c: undo my previous patch and fixed the real issue in
15884         ../mini/exceptions-x86.c
15885
15886 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15887
15888         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
15889         when no HOME env. variable was set and a NullRef was thrown in a .cctor
15890         called from other .cctors.
15891
15892 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
15893
15894         * loader.c: Removed the mono_loader_wine_init hack now that we are
15895         doing a managed version of Windows.Forms.
15896
15897 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
15898
15899         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
15900         threadpool.c, threads.c: remove static data from rootset.
15901
15902 2004-07-09  Dick Porter  <dick@ximian.com>
15903
15904         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
15905         Don't do any more processing if the matched length was 0.  It was
15906         increasing the size of the string before.  Fixes bug 61167.
15907
15908 2004-07-09  Dick Porter  <dick@ximian.com>
15909
15910         * socket-io.h:
15911         * socket-io.c
15912         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15913         Add support for SO_PEERCRED if its available.
15914
15915 2004-07-09  Peter Bartok <pbartok@novell.com>
15916         * loader.c: winelib.exe.so error message is now only displayed if
15917         MONO_DEBUG is set. To help us avoid questions when people are trying
15918         out the new Managed.Windows.Forms.
15919
15920 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
15921
15922         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
15923         for isinst and castclass wrappers.
15924
15925         * class-internals.h icall.c: Move registration and lookup of JIT icalls
15926         to libmetadata from the JIT, so they could be used by the marshalling
15927         code and the interpreter.
15928
15929         * marshal.c: Register marshalling related JIT icalls here instead of
15930         in mini.c. Use CEE_MONO_ICALL instead of the family of 
15931         CEE_MONO_PROC<x> opcodes to call marshalling functions.
15932
15933         * metadata.h: Remove unneeded marshalling conversions.
15934
15935         * opcodes.c: Update for new opcodes.
15936         
15937 2004-07-08  Martin Baulig  <martin@ximian.com>
15938
15939         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
15940         (mono_debug_get_domain_data): Make this function static.
15941
15942 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
15943
15944         * gc.c, object.h: add nice GC handle API for embedders.
15945
15946 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
15947
15948         * reflection.c: more changes for the new api
15949
15950         * object.c: When we reflect on a field w/ a constant value, it
15951         will not have a memory location, so we must access metadata. Also,
15952         allow easier reading of strings so that we can read them from
15953         the constant data.
15954
15955         * class.c (mono_class_layout_fields): no need for literal fields here.
15956
15957         * class-internals.h: api changes for const fields
15958
15959         * icall.c (ves_icall_get_enum_info): use new apis for const fields
15960
15961 2004-07-06  Martin Baulig  <martin@ximian.com>
15962
15963         * mono-debug.h: Increment version number to 44.
15964
15965         * mono-debug.c (mono_debug_add_wrapper): The second argument is
15966         now a gpointer, rewrote this whole method.
15967
15968         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
15969         function.  Add information about the wrapper in a new "misc table".
15970
15971         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
15972         for the new misc table.
15973
15974 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
15975
15976         * metadata-internals.h image.c: Add a cache for helper signatures.
15977
15978         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
15979
15980 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
15981
15982         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
15983         delegates from a delegate. Fixes #61033.
15984         
15985         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
15986         marshalling of stringbuilder arrays. Fixes #59900.
15987
15988 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * icall.c: Add EnumBuilder:setup_enum_type icall.
15991
15992 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
15993
15994         * icall.c: Added a new icall for the property version of
15995         OffsetOfStringData.
15996
15997 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
15998
15999         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
16000         it has a constant size across platforms.
16001
16002         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
16003         stack trace.
16004
16005 2004-06-29  Martin Baulig  <martin@ximian.com>
16006
16007         * mono-debug.c (mono_debug_add_method): Protect the whole function
16008         in mono_debugger_lock(), not just parts of it.
16009
16010 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16011
16012         * reflection.c: make sure padding bytes in heaps are zeroed.
16013
16014 2004-06-24  David Waite  <mass@akuma.org>
16015
16016         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
16017         image.c, loader.c, locales.c, marshal.c, metadata.c,
16018         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
16019         string-icalls.c, threads.c: change to C90-style comments from C99 /
16020         C++ -style
16021
16022 2004-06-24  Dick Porter  <dick@ximian.com>
16023
16024         * threads.c
16025         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
16026         return createdNew.  Fixes bug 60412.
16027
16028         * threads-types.h: 
16029         * icall.c: Add createdNew parameter to CreateMutex icall
16030
16031 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16032
16033         * reflection.c, object-internals.h: save default value in params.
16034
16035 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16036
16037         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
16038         no need to build a new path combining that with the application base.
16039         Fixes bug #60442.
16040
16041 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16042
16043         * reflection.c: fixed minor standard compliance issues.
16044
16045 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16046
16047         * reflection.c: fixed issue with encoding some custom attributes
16048         (arrays in properties and fields, bug #60411).
16049
16050 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16051
16052         * reflection.c: fix start address when copying the public key token.
16053
16054 2004-06-23  Martin Baulig  <martin@ximian.com>
16055
16056         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
16057         the `exc' object in a static object to put it into the GC's root set.
16058
16059 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
16060
16061         * reflection.c: make mono_reflection_setup_internal_class ()
16062         callable a second time to setup a new parent class.
16063
16064 2004-06-23  Dick Porter  <dick@ximian.com>
16065
16066         * threads.c: Check for WAIT_IO_COMPLETION return values.
16067
16068 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
16069
16070         * appdomain.c: Removed the g_free on the public key token. Now copy 
16071         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
16072         * assembly.c: Added public key token string value when loading 
16073         assemblies. Fix bug #60439.
16074         * icall.c: Added missing informations (like public key) in 
16075         GetReferencedAssemblies. Fix #60519.
16076         * image.h: Changed definition for public key token from const char*
16077         public_tok_value to guchar public_key_token [17];
16078         * reflection.c: Updated for changes to public key token.
16079
16080 2004-06-22  Lluis Sanchez Gual
16081
16082         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
16083         for the field in base classes.
16084
16085 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16086
16087         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
16088         mark headers as not supported, they are installed only for use by the
16089         debugger.
16090
16091 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
16092
16093         * *.c, *.h: avoid namespace pollution in public headers.
16094
16095 2004-06-21  Martin Baulig  <martin@ximian.com>
16096
16097         * exception.c (mono_get_exception_security): It's in
16098         "System.Security", not in "System".
16099
16100         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
16101         the exception classes.
16102
16103 2004-06-21  Martin Baulig  <martin@ximian.com>
16104
16105         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
16106         Protect the exception object from being finalized.
16107
16108 2004-06-21  Martin Baulig  <martin@ximian.com>
16109
16110         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
16111         public function.
16112
16113 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
16114
16115         * reflection.c: Load the assembly in mono_reflection_type_from_name,
16116         if it was not loaded before. Fix parts of #60439.
16117
16118 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
16119
16120         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
16121         code that was broken since Ben's change: wrappers are now
16122         dependent on the method signature only again.
16123
16124 2004-06-21  Martin Baulig  <martin@ximian.com>
16125
16126         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
16127         added interface support.
16128
16129 2004-06-21  Martin Baulig  <martin@ximian.com>
16130
16131         * class.c (mono_vtable_get_static_field_data): New public method.
16132
16133 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
16134
16135         * filewatcher.c : Windows build fix to be compliant with API changes.
16136
16137 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16138
16139         * class.h, class.c: more accessors.
16140         * metadata.h, metadata.c: prepare for hiding MonoType and
16141         MonoMethodSignature: people should use the accessors from now on
16142         outside of the tree.
16143
16144 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16145
16146         * *.c, *.h: more API cleanups.
16147
16148 2004-06-18  Jackson Harper  <jackson@ximian.com>
16149
16150         * assembly.c: Trace loading assemblies.
16151         * loader.c: Trace loading native libraries.
16152         * mono-config.c: Trace loading config files.
16153         
16154 2004-06-18  Dick Porter  <dick@ximian.com>
16155
16156         * locales.c: Tell ICU the lengths of strings, it can cope with
16157         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
16158
16159 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16160
16161         * image.c: swapped name/filename;
16162
16163 2004-06-18  Martin Baulig  <martin@ximian.com>
16164
16165         * mono-debug-debugger.c (write_class): Write the parent class at
16166         the end of the header.
16167
16168 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16169
16170         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
16171
16172 2004-06-17  Raja R Harinath  <rharinath@novell.com>
16173
16174         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
16175         (bundle_obj): New conditional define.
16176         (BUILT_SOURCES): Remove.
16177         ($(bundle_srcs)): Make parallel-make safe.
16178         (libmonoruntime_la_LIBADD): Make unconditional.
16179         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
16180         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
16181
16182 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
16183
16184         * culture-info-tables.h: It was inconsistent with the latest
16185           supp info files.
16186
16187 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
16190         be loaded.
16191
16192         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
16193         with gcc 2.95.
16194
16195 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16196
16197         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
16198         cleaned up public header threads.h.
16199
16200 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16201
16202         * Makefile.am, *.c, *.h: more API cleanups.
16203
16204 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16205
16206         * Makefile.am: removed monosn from compilation.
16207         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
16208         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
16209         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
16210         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
16211         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
16212         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
16213
16214 2004-06-15  Jackson Harper  <jackson@ximian.com>
16215
16216         * assembly.c: Make locales lower case when searching the GAC for
16217         assemblies. gacutil will always make locales lowercase when
16218         installing so this effectively makes them case insensitive.
16219         
16220 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
16221
16222         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
16223         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
16224           parameter which allows to choose whether the wait can be interrupted or 
16225           not. Also added the method mono_monitor_enter(), which locks the monitor
16226           using an infinite wait and without allowing interruption.
16227           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
16228           interrupted.
16229         * object.h: Added new fields in MonoThread. suspend_event holds the event
16230           used to susped/resume the thread. synch_lock is the lock object to use for
16231           modifying the thread state.
16232         * threads.c: Use the new synch_lock object for locking, instead of "this",
16233           which can generate deadlocks.
16234           Moved thread state change in Thread.Sleep and Thread.Join from managed
16235           to unmanaged code. This avoids a deadlock when the thread was suspended
16236           just after acquiring the thread lock.
16237           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
16238           Implemented Thread.Suspend using an event instead of ThreadSuspend,
16239           which is not fully implemented in the io-layer.
16240         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
16241
16242 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
16243
16244         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
16245         threads-types.h: more API cleanups.
16246
16247 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16248
16249         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
16250         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
16251         threadpool.c, threads.c: first pass at the exported API cleanup.
16252
16253 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16254
16255         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
16256
16257 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16258
16259         * icall.c: added internalGetHome.
16260
16261 2004-06-14  Dick Porter  <dick@ximian.com>
16262
16263         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
16264         possible to return successfully when '.' or '..' were the only
16265         entries in a directory, but were skipped.  The MonoIOStat was not
16266         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
16267         Fixes bug 59574.
16268
16269 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16270
16271         * reflection.c: make binaries run on .Net 1.1 by default.
16272
16273 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16274
16275         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
16276
16277 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
16278
16279         * marshal.c: keep track of struct size with explicit layout
16280         (bug #59979).
16281
16282 2004-06-12  Martin Baulig  <martin@ximian.com>
16283
16284         * mono-debug-debugger.c: Comment out a debugging g_message().
16285
16286 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16287
16288         * reflection.c, reflection.h: do not free custom attrs that are cached.
16289         * icall.c: use braces to make code clearer.
16290
16291 2004-06-11  Martin Baulig  <martin@ximian.com>
16292
16293         * class.h (MonoInflatedField): New type.
16294         (MonoClassField): Replaced `MonoType *generic_type' with
16295         `MonoInflatedField *generic_info'.
16296
16297         * icall.c
16298         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
16299
16300 2004-06-11  Martin Baulig  <martin@ximian.com>
16301
16302         * reflection.c (mono_image_create_method_token): Correctly encode
16303         varargs methods.
16304
16305 2004-06-11  Martin Baulig  <martin@ximian.com>
16306
16307         * metadata.c (mono_metadata_parse_method_signature): When parsing
16308         a MethodDef which has VarArgs, also set sentinelpos if we don't
16309         have any parameters.
16310
16311 2004-06-11  Martin Baulig  <martin@ximian.com>
16312
16313         * verify.c (mono_method_verify): In CEE_CALL, use
16314         mono_method_get_signature() to get the method's signature, unless
16315         we're a PInvoke method.
16316
16317 2004-06-10  Jackson Harper  <jackson@ximian.com>
16318
16319         * assembly.c: Use <path>/lib/mono/gac for the extra paths
16320         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
16321         logical name as the supplied path is just a prefix to the gac not
16322         the direct path to it.
16323         
16324 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
16325
16326         * reflection.c: make the token for a created method match
16327         the token of the MethodBuilder it was created from
16328         (IKVM requires this behaviour now).
16329
16330 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
16331
16332         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
16333         reflection.c, socket-io.c: leak fixes.
16334
16335 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16336
16337         * icall.c: handle sentinel pos in vararg methods in position different
16338         from 0.
16339
16340 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16341
16342         * culture-info-tables.h: freshly generated.
16343
16344 2004-06-09  Martin Baulig  <martin@ximian.com>
16345
16346         * loader.c (mono_get_method_constrained): Call `mono_class_init
16347         (constrained_class)'.   
16348
16349 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
16350
16351         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
16352         any methods. Fixes #59629.
16353
16354 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16355
16356         * culture-info-tables.h: reflecting locale-builder updates.
16357
16358 2004-06-08  Dick Porter  <dick@ximian.com>
16359
16360         * object.h:
16361         * locales.c: Fixed compile warnings, including a real bug in
16362         CompareInfo_internal_compare.
16363         
16364 2004-06-08  Dick Porter  <dick@ximian.com>
16365
16366         * locales.c
16367         (ves_icall_System_Globalization_CompareInfo_internal_index):
16368         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16369         Double-check the resuls of usearches, because ICU currently
16370         ignores most of the collator settings here.  Fixes bug 59720.
16371         
16372 2004-06-08  Dick Porter  <dick@ximian.com>
16373
16374         * locales.c
16375         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16376         Fix memory leak and segfault-causing typo.  No idea how this one
16377         lasted so long without being noticed.
16378
16379 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
16380
16381         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
16382         any methods. Fixes #59629.
16383
16384 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16385
16386         * assembly.c:
16387         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
16388         own the critical section before). Removed dead code (that's done
16389         in the preload hook).
16390
16391         (mono_assembly_load_with_partial_name): call the preload hook.
16392
16393 2004-06-08  Martin Baulig  <martin@ximian.com>
16394
16395         * metadata.c (mono_metadata_signature_alloc): Default
16396         `sentinelpos' to -1.
16397
16398         * reflection.c (mono_image_get_array_token): Likewise.
16399
16400 2004-06-08  Martin Baulig  <martin@ximian.com>
16401
16402         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
16403
16404         * metadata.c (mono_metadata_parse_method_signature): When parsing
16405         a MethodDef which has VarArgs, set sentinelpos.
16406
16407         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
16408         `gint16' since we're using -1 for non-varargs methods.
16409
16410         * reflection.c
16411         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
16412         (method_encode_signature): Added varargs support.
16413         (method_builder_encode_signature): Likewise.
16414         (mono_image_get_varargs_method_token): New static method.
16415         (mono_image_create_method_token): New public method; this is
16416         called via an icall instead of mono_image_create_token() when
16417         calling a varargs method.       
16418
16419 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
16420
16421         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
16422
16423 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16424
16425         * culture-info-tables.h : Reflecting the latest locale-builder that
16426           fixed empty array representation ({} to {0}).
16427
16428 2004-06-07  Jackson Harper  <jackson@ximian.com>
16429
16430         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
16431         looking up extra gac paths. This allows MONO_GAC_PATH to act
16432         exactly like a prefix.
16433         
16434 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16435
16436         * reflection.c (mono_reflection_type_from_name): Make a copy of the
16437         type name before modifying it. Fixes #59405.
16438
16439 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16440
16441         * culture-info.h: added fields for "all datetime patterns".
16442         * locales.c: (  ves_icall_System_Globalization_CultureInfo
16443           _construct_datetime_format ()): fill xxx_patterns fields.
16444         * object.h: added fields for "all datetime patterns" to
16445           MonoDateTimeFormatInfo.
16446         * culture-info-tables.h: reflecting locale-builder updates.
16447
16448 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16449
16450         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
16451         the event has no add and remove methods. Fixes #59629.
16452
16453 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
16454
16455         * object.c: Fixed possible integer overflow when allocating large
16456         strings.
16457
16458 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16459
16460         * culture-info-tables.h: reflecting locale-builder updates.
16461
16462 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16463
16464         * culture-info-tables.h: reflecting locale-builder updates.
16465
16466 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
16467
16468         * culture-info-tables.h: reflecting locale-builder updates.
16469
16470 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
16471
16472         * threads.c: Made Thread.Sleep abortable.
16473
16474 2004-06-02  Martin Baulig  <martin@ximian.com>
16475
16476         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
16477
16478         * debug-mono-symfile.h: Bumped symbol file version number to 37.
16479
16480 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
16481
16482         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
16483
16484 2004-05-30  Jackson Harper  <jackson@ximian.com>
16485
16486         * reflection.c: Do not hardcode assembly versions or public key
16487         tokens anymore. All of this except the corlib section was dead
16488         code anyways.
16489         
16490 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16491
16492         * object.c (mono_runtime_invoke_array): Automatically create boxed
16493         objects for byref valuetypes if needed. Fixes #59300.
16494         
16495         * object.c (mono_method_return_message_restore): Handle 
16496         MONO_TYPE_OBJECT as well.
16497
16498 2004-05-28  Jackson Harper  <jackson@ximian.com>
16499
16500         * reflection.c: The modified type encoding was causing build
16501         problems. Reverted for now.
16502         
16503 2004-05-28  Jackson Harper  <jackson@ximian.com>
16504
16505         * reflection.c/h: Take an assembly ref so that we dont create
16506         fully qualified names when encoding types in the same assembly as
16507         the custom attribute being emitted.
16508         * appdomain.c: Increment version number.
16509         
16510 2004-05-26  Duncan Mak  <duncan@ximian.com>
16511
16512         * icall.c
16513         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
16514         Set the full version number (major, minor, build, revision).
16515
16516 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
16517
16518         * marshal.c (emit_struct_conv): increment src/dst after blit
16519         (mono_marshal_get_managed_wrapper,
16520         mono_marshal_get_native_wrapper): make sure we have marshalling
16521         info before marshalling params (info computation affects
16522         blittable)
16523
16524         * class.c (class_compute_field_layout): correctly deal with
16525         blittable
16526         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
16527         value types (as per what windows dows by default)
16528         (mono_class_setup_mono_type): System.ValueType is blittable
16529         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
16530         blittable
16531
16532         * marshal.c (mono_marshal_load_type_info): flag types  as
16533         non-blittable if the native layout doesn't match the managed
16534         layout
16535
16536 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16537
16538         * appdomain.c: don't add stuff in the private search path that is
16539         above the application base. If application base is not set, there's
16540         no private search path.
16541
16542 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16543
16544         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
16545         byref struct arguments in native->managed marshalling.
16546
16547 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
16548
16549         * marshal.c (mono_marshal_get_runtime_invoke): correctly
16550         cache methods using signature (special case for methods
16551         that are value type or string class)
16552         
16553         * image.c (mono_image_close): clean up allocated GSList's
16554         in runtime_invoke_cache.
16555
16556 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16557
16558         * mono-config.c: set the correct path for mono_cfg_dir on windows when
16559         there's no MONO_CFG_DIR environment variable defined.
16560
16561 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16562
16563         * threads.c: windows version must be >= 0x0500 to include OpenThread.
16564
16565 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
16566
16567         * threadpool.c: Really wait for 500ms after the async call, even if the wait
16568           is interrumped.
16569         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
16570           before waiting for it, and call CloseHandle after the wait to unref it.
16571           This will make sure that handles are not disposed too early.
16572
16573 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16574
16575         * appdomain.c:
16576         * appdomain.h:
16577         * icall.c: removed
16578         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
16579         needed now.
16580
16581         * object.c: se the application_base only for the domain that runs
16582         Main. Fixes bug #59216,
16583
16584 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16585
16586         * appdomain.c:
16587         * object.c: only the domain in which Main is run have
16588         SetupInformation.ConfigurationFile set, so moved a few lines from
16589         appdomain.c to object.c.
16590
16591 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16592
16593         * appdomain.c: we tried to load [name].(dll|exe), but according
16594         to bug #57710, we must also try [culture]/[name].(dll|exe) and
16595         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
16596         There's a test case attached to bug #58922.
16597
16598 2004-05-27  Dick Porter  <dick@ximian.com>
16599
16600         * icall.c:
16601         * file-io.c: Implemented icalls for locking and unlocking regions
16602         in a file.
16603         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
16604         FALSE on error (fixes both compiler warning and real bug.)
16605
16606 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
16607
16608         * culture-info-tables.h: reflecting locale-builder updates.
16609
16610           (Added missing ChangeLog entry for 05/26)
16611
16612 2004-05-27  Jackson Harper  <jackson@ximian.com>
16613
16614         * locales.c: Fix some cut and paste errors.
16615         
16616 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16617
16618         * mono-config.c: set the correct path for config. directory on windows.
16619
16620 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16621
16622         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
16623           on win32.
16624
16625 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16626
16627         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
16628         from pinvoke functions.
16629         
16630         * marshal.c (mono_ftnptr_to_delegate): Implement this.
16631
16632 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16633
16634         * culture-info-tables.h: reflecting locale-builder updates.
16635
16636 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16637
16638         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
16639         #59086.
16640
16641 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
16642
16643         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
16644         * icall.c: Modified icalls for RNG.
16645         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
16646         Windows (CryptoAPI).
16647
16648 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16649
16650         * locales.c: Fix build.
16651
16652 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16653
16654         * culture-info-tables.h: reflecting locale-builder updates.
16655
16656 2004-05-25  Jackson Harper  <jackson@ximian.com>
16657
16658         * locales.c: When creating the current culture use the $LANGs
16659         specific culture. So DateTimeFormat and NumberFormat entries are created.
16660         
16661 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16662
16663         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
16664         a char array as parameter.
16665
16666 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
16667
16668         * image.c: In mono_image_open(), always use an absolute path name to
16669           look for already loaded images.
16670
16671 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
16672
16673         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
16674         missing in the windows build (like older cygwin include files).
16675
16676 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
16677
16678         * icall.c: Fixed check for possible integer overflow in Buffer_
16679         BlockCopy icall. Replaced comments style // by /* */.
16680
16681 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16682
16683         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
16684         
16685         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
16686         check after MONO_VTADDR. Fixes pinvoke2.exe.
16687
16688         * marshal.h marshal.c metadata.h: Add beginnings of support for
16689         ftnptr -> delegate marshalling.
16690
16691 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16692
16693         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
16694         * threads.c: Fix warnings.
16695
16696 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16697
16698         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
16699         * icall.c: Registered icalls for Suspend and Resume.
16700         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
16701           Thread.Abort.
16702         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
16703         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
16704         * process.c: Use WaitForSingleObjectEx.
16705         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
16706           checkpoints.
16707         * threads.c, threads.h: Make use of new Ex wait methods. Improved
16708           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
16709           for Suspend and Resume. Added new mono_thread_stop, used for stoping
16710           background threads. Added basic support for Abort in Windows.
16711           Start new threads using a managed delegate invoke wrapper. This wrapper
16712           has an interruption checkpoint that is needed since an interruption
16713           can be requested before the thread leaves the unmanaged code that starts 
16714           the thread.
16715         * marshal.c: Added interruption checkpoint after every native call, and
16716           also before managed calls for wrappers called from unmanaged code to
16717           go into managed code.
16718         * object.h: Added new field in MonoThread to keep track of interruption
16719           requests.
16720
16721 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16722
16723         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
16724         calls.
16725
16726 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16727
16728         * appdomain.c:
16729         * assembly.c:
16730         * gc.c:
16731         * locales.c:
16732         * mono-config.c:
16733         * rand.c: getenv -> g_getenv (windows!)
16734
16735         * process.c: complete_path is also used on non-windows platforms.
16736
16737 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16738
16739         * icall.c: new signature for Process_Start.
16740
16741         * process.[ch]: new signature for Process_Start. If we're on windows
16742         and UseShellExecute is false, we have to search for the program by
16743         ourselves if we don't get a full path.
16744
16745 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16746
16747         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
16748         marshalling and call CleanUpNativeData if needed. Fixes #58646.
16749
16750 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16751
16752         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
16753         Fixes bug #58373.
16754
16755 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16756
16757         * process.c: use double quotes to quote program name and arguments on
16758         windows. Fixes bug #58575.
16759
16760 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16761
16762         * file-io.c: don't return "." and ".." when using windows Find*File.
16763
16764 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
16765
16766         * marshal.c: Don't pass wrappers to message init because method 
16767         addressed used to lookup metadata. part of remoting[2|3] fix.
16768
16769 2004-05-15  Jackson Harper  <jackson@ximian.com>
16770
16771         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
16772         path is essentially the same as MONO_PATH except that it points to
16773         GACs instead of lib directories.
16774         * loader.h: The user gac is gone so we dont need function to
16775         enable/disable it.
16776         * mono-config.c: user gac option is now gone.
16777         
16778 2004-05-15  Jackson Harper  <jackson@ximian.com>
16779
16780         * culture-info.h: Make defines more consistent, add calendar data
16781         to the culture info table.
16782         * culture-info-tables.h: Add basic calendar data. Basically
16783         everyone gets default gregorian until all the data is
16784         updated.
16785         * locales.c: Use the new consistent defines. Set calendar data for
16786         culture info objects.
16787         * object.h: add a field for calendar data to CultureInfo
16788         
16789 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
16790
16791         * image.c: image->runtime_invoke_cache is keyed on signatures now.
16792         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
16793         a signature.
16794         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
16795         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
16796         an extra param that is the pointer of the method to invoke. The IL for
16797         the invoke method is no longer specific to the method, but to the
16798         signature of the method. Thus, we can share the same code for multiple
16799         methods. This reduces the number of methods that have to be compiled.
16800
16801 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
16802
16803         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
16804
16805         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16806
16807         * icall.c: Optimize Buffer.BlockCopy.
16808
16809 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16810
16811         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
16812         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
16813         quote). Changed them to "MMMM yyyy".
16814
16815 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
16816
16817         * rand.c
16818         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
16819
16820 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
16821
16822         * reflection.h: Updated after changes to managed structures.
16823
16824         * appdomain.c: Bump corlib version.
16825
16826 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16827
16828         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
16829         windows.
16830
16831 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16832
16833         * Makefile.am: link to ../os/libmonoos.la on windows.
16834
16835         * assembly.c:
16836                 -If MONO_DEBUG, warn about non-existing directories in
16837                 MONO_PATH.
16838                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
16839                 compile time variable.
16840                 -Removed init_default_path and call mono_set_rootdir from
16841                 libmonoos.a instead (windows only).
16842
16843         * assembly.h: declare mono_assembly_getrootdir().
16844
16845         * domain.c:
16846         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
16847
16848         * loader.c: s/getenv/g_getenv/
16849
16850 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
16851
16852         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
16853
16854         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
16855
16856         * metadata.h: Add new marshalling conversions.
16857
16858         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
16859         function.
16860
16861         * reflection.c (mono_reflection_get_type): Lookup the type in all
16862         modules of a multi-module assembly. Fixes #58291.
16863
16864 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
16865
16866         * threads.c: Before aborting a background, set the StopRequested
16867         state.  This avoids throwing the Abort exception.
16868         In mono_thread_manage, don't continue with the shutdown until all
16869         aborted threads have actually stopped.
16870
16871 2004-05-10  Jackson Harper  <jackson@ximian.com>
16872
16873         * locales.c: Remove the modifier from culture names.
16874         
16875 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16876
16877         * Makefile.am: monosn is not installed any more. It has been deprecated
16878         in favor of sn.
16879
16880 2004-05-07  Jackson Harper  <jackson@ximian.com>
16881
16882         * locales.c
16883         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
16884         Fix array construction, add bailout if the length is 0.
16885
16886 2004-05-07  Dick Porter  <dick@ximian.com>
16887
16888         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
16889         machine doesn't have a DNS entry.  Patch by Urs Muff
16890         (umuff@quark.com), fixes bug 57928.
16891
16892 2004-05-06  Jackson Harper  <jackson@ximian.com>
16893
16894         * reflection.c: Handle null PublicTokens properly. alloc mem for
16895         assembly names culture so we dont crash when freeing it.
16896         
16897 2004-05-06  Jackson Harper  <jackson@ximian.com>
16898
16899         * assembly.c: Check the usergac when loading with partial names.
16900         
16901 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16902
16903         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
16904         does nothing for now (not required for Linux/Windows) but the class
16905         library can call it (and a newer or modified runtime could need it).
16906         * icall.c: Registred icall.
16907
16908 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16909
16910         * loader.c: prints a message on module loading error we set MONO_DEBUG
16911         environment variable.
16912
16913 2004-05-05  Jackson Harper  <jackson@ximian.com>
16914
16915         * appdomain.c: Handle PublicKeyToken=null properly.
16916         
16917 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16918
16919         * environment.c|h: Added icall ves_icall_System_Environment_
16920         GetOSVersionString to get the current OS version as a string.
16921         * icall.c: Registred icall.
16922
16923 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
16924
16925         * object.c: in mono_object_get_virtual_method(), take into account that
16926         non-virtual methods don't have a slot in the vtable. Check needed when
16927         the object is a proxy.
16928
16929 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
16932         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
16933
16934         * object.c (mono_class_compute_gc_descriptor): Fix warning.
16935
16936         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
16937         passed when a valuetype is expected.
16938
16939         * object.c (mono_unhandled_exception): Only set the exit code if the
16940         exception happens in the main thread. Fixes thread5.exe.
16941
16942         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
16943         invalid names. Fixes #58047.
16944
16945 2004-05-03  Jackson Harper  <jackson@ximian.com>
16946
16947         * assembly.c: This line was committed accidently and is unneeded.
16948         
16949 2004-05-03  Jackson Harper  <jackson@ximian.com>
16950
16951         * icall.c: Add new icall for Assembly::LoadWithPartialName
16952         * assembly.c/.h: new function that probes the GAC to load partial
16953         assembly names by Paolo Molaro.
16954         
16955 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16956
16957         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
16958         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
16959         (type_get_fully_qualified_name): Added PublicKeyToken when building a
16960         full type name.
16961
16962 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16963
16964         * appdomain.c: fixed check for 'neutral' culture and removed warning.
16965         * reflection.c: fix bug when parsing a full type name and Version is not
16966         the last thing in the string.
16967
16968 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
16969
16970         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
16971         crashes when it is freed.
16972
16973 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16974
16975         * assembly.c: print the compat warning to stderr.
16976
16977 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
16978
16979         * assembly.c (mono_assembly_load_references): Add a compatibility
16980         hack to run old applications that might be still referencing the
16981         3300-based assemblies, only do this for System.xxx.
16982
16983 2004-05-01  Jackson Harper  <jackson@ximian.com>
16984
16985         * appdomain.c: If the culture is neutral we set it to "".
16986         
16987 2004-04-29  Jackson Harper  <jackson@ximian.com>
16988
16989         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
16990
16991 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
16992  
16993         * string-icalls.c: added low overhead function for copying chars
16994         * icall.c: added needed icall for the above function
16995  
16996 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16997
16998         * icall.c: fix return value of get_global_assembly_cache.  Implemented
16999         Environment.GetLogicalDrives.
17000
17001 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
17002
17003         * rand.c: try and talk to egd or prngd
17004         for random bytes if opening devices fail.
17005
17006 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17007
17008         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
17009         alignment for the type using the native alignment of its members 
17010         instead of using klass->min_align.
17011
17012         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
17013
17014 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17015
17016         * file-io.c:
17017         * socket-io.c: added check for sys/aio.h.
17018
17019 2004-04-28  Dick Porter  <dick@ximian.com>
17020
17021         * threads.c: Don't abort a thread thats already aborting, when
17022         terminating everything.
17023
17024 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17025
17026         * icall.c: added 2 new async calls for Socket.
17027
17028         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
17029         IO on *nix systems.
17030
17031         * threadpool.c: removed unused variable.
17032
17033 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
17034
17035         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
17036
17037 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17038
17039         * locales.c: put back string_invariant_tolower () and
17040         string_invariant_toupper ().
17041
17042 2004-04-26 David Waite <mass@akuma.org>
17043
17044         * file-io.h:
17045         * socket-io.h:
17046         * threads.h:
17047         * unicode.h: remove comma from end of enumeration declarations
17048
17049 2004-04-26 David Waite <mass@akuma.org>
17050
17051         * debug-mono-symfile.h:
17052         * decimal.c:
17053         * mono_debug.h:
17054         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
17055
17056
17057 2004-04-26  Jackson Harper  <jackson@ximian.com>
17058
17059         * appdomain.c: Increment version number.
17060         
17061 2004-04-26  Jackson Harper  <jackson@ximian.com>
17062
17063         * appdomain.c: Set assembly references public token value when
17064         PublicKeyToken is specified, not the hash_value. Free public token
17065         values when free assembly name data. Previously the public key
17066         token was hex decoded, however we are using hex encoded public key
17067         tokens, so this is not neccasary.
17068         * assembly.c: Lookup assemblies in the gac if their public token
17069         value is set. Add function to allow enabling user gac
17070         lookups. Specify whether or not the assembly was loaded from the
17071         GAC. Compare full assembly names when checking the cache for
17072         assemblies (Temporarily disabled see comment in code). Remove
17073         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
17074         specifies trace-loader they get extra info to stdout on the
17075         loading of assemblies.
17076         * image.h: Add a field for an assembly references public token
17077         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
17078         whether an assembly has been loaded from the GAC.
17079         * image.c: Remove a corlib -> mscorlib name mapping.
17080         * loader.h: Add function to enable/disable the user gac.
17081         * mono-config.c: Check if the usergac is enabled in the config
17082         file.
17083         * icall.c: New icall to determine whether or not an assembly has
17084         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
17085         * tabldefs.h: Add constant for assemblyref flag that specifies a
17086         full public key is used instead of a public token.
17087         * reflection.c: Remove mscorlib -> corlib mappings. Set
17088         PublicTokenValue instead of hash value. This value is a hex
17089         string so it does not need to be expanded.
17090
17091 2004-04-26  Martin Baulig  <martin@ximian.com>
17092
17093         * mono-debug-debugger.c (mono_debugger_initialize): Set
17094         `mono_debugger_initialized' before calling mono_debug_lock().
17095
17096 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
17097
17098         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
17099           InternalToUpper/InternalToLower.
17100         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
17101           removed invariant culture shortcut.  This is now done in managed code.
17102         * locales.c: (string_invariant_toupper/tolower) removed.
17103
17104 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17105
17106         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
17107         Added Poll internal call.
17108
17109         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
17110         call for Poll. Select was too heavy for polling a single socket.
17111
17112         * threadpool.[ch]: added mono_threadpool_cleanup.
17113         * threads.c: use it. Don't use Thread_Abort on windows.
17114
17115 2004-04-23  Martin Baulig  <martin@ximian.com>
17116
17117         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
17118
17119 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
17120
17121         * icall.c: Registred new icalls for key pair protection and added an
17122         icall for Environment.GetFolderPath on Windows.
17123         * security.c|h: Added new icalls for key pair protection.
17124
17125 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17126
17127         * socket-io.c: don't display the non-supported family warning for known
17128         families. Now this is not displayed on windows when checking support
17129         for IPv4/IPv6.
17130
17131 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17132
17133         * class.c: don't display the layout warning for static fields.
17134
17135 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
17136
17137         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
17138         * locales.c, locales.h: Added new icalls for culture-specific
17139         Char.ToLower and Char.ToUpper.
17140
17141 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17142
17143         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
17144         by David Waite.
17145
17146 2004-04-20  Martin Baulig  <martin@ximian.com>
17147
17148         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
17149         of the type name before passing it to mono_reflection_type_from_name().
17150
17151 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17152
17153         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
17154         encodings here. Fixes #56965.
17155
17156 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
17157
17158         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17159         fix test on strstr result not that I can see anything that
17160         relies on the result.
17161
17162 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17163
17164         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
17165         Fixes #57081.
17166
17167         * marshal.c (mono_marshal_get_string_encoding): New helper function.
17168
17169         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
17170         function to determine which marshalling to use for strings. Fixes
17171         #56965.
17172
17173         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
17174
17175         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
17176
17177 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
17178
17179         * icall.c: #include mono-config.h
17180
17181 2004-04-15  Jackson Harper  <jackson@ximian.com>
17182
17183         * culture-info-tables.h: Fix date formats for en-US culture.
17184         
17185 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
17186
17187         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
17188         ThreadPool.SetMinThreads.
17189         * threadpool.c: Implemented ThreadPool.GetMinThreads and
17190         ThreadPool.SetMinThreads.
17191
17192 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17193
17194         * mono-config.c: also load the .config file in the directory
17195         where the assembly was found.
17196
17197 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17198
17199         * assembly.c: load per-assembly config files.
17200         * icall.c: decrapified code to get the config dir and moved to
17201         mono-config.c.
17202         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
17203         per-assembly config files. When doing a dll map lookup give precedence
17204         to the per-assembly data.
17205
17206 2004-04-14  Martin Baulig  <martin@ximian.com>
17207
17208         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
17209         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
17210         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
17211
17212         * mono-debugger-debugger.c: While the debugger is locked, remember
17213         whether the symbol tables have changes and send one single
17214         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
17215
17216 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17217
17218         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
17219
17220         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
17221         function.
17222
17223         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
17224         account when marshalling string arrays. Fixes #56965.
17225
17226 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
17227
17228         * icall.c: Add new icalls mapping for security.
17229         * security.c|h: Add internal calls for WindowsIdentity,
17230         WindowsImpersonationContext and WindowsPrincipal.
17231
17232 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
17233
17234         * class.c: Added comment to ensure the System.MonoDummy class
17235         is removed when no longer necessary
17236
17237 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17238
17239         * appdomain.c: Pass arguments to the bootstraping exceptions to
17240         minimize JITed methods at boot
17241
17242         * metadata.c (mono_exception_from_name_two_strings): Allow for the
17243         second string to be null.
17244
17245         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17246         Change the protocol to minimize the JIT methods at startup.  Now
17247         it Returns the internal codepage, if the value of "int_code_page"
17248         is 1 at entry, and we can not compute a suitable code page
17249         number, returns the code page as a string.
17250
17251 2004-04-13  Jackson Harper  <jackson@ximian.com>
17252
17253         * culture-info-tables.h: Fix number of decimal digits for all
17254         english locales.
17255
17256 2004-04-13  Jackson Harper  <jackson@ximian.com>
17257
17258         * icall.c: Clairfy out of sync error message. It is not always
17259         your corlib that is out of sync.
17260
17261 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
17262
17263         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
17264         properties when only the set accessor is overriden. Fixes #55874.
17265
17266 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
17267
17268         * assembly.c (mono_assembly_load_references): Make this thread safe.
17269         Fixes #56327.
17270
17271 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * monosn.c: Add missing initialization calls.
17274
17275 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
17276
17277         * locales.c:
17278         ves_icall_System_Globalization_CultureInfo_construct_number_format
17279         Fix g_assert so it compiles on fussier compilers re int/ptr
17280         mismatch
17281
17282 2004-04-08  Dick Porter  <dick@ximian.com>
17283
17284         * socket-io.h:
17285         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
17286         53992.  Also rearrange the code so that the internal calls return
17287         an error value and exceptions are thrown from managed code.
17288
17289         * icall.c: Add type info to the socket icalls.
17290
17291 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17292
17293         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
17294         owes me a beer.
17295
17296 2004-04-07  Martin Baulig  <martin@ximian.com>
17297
17298         * class.c (mono_class_from_generic_parameter): Don't default
17299         `klass->parent' to `mono_defaults.object_type'.
17300
17301 2004-04-07  Martin Baulig  <martin@ximian.com>
17302
17303         * reflection.c (mono_reflection_initialize_generic_parameter): Set
17304         `param->pklass->reflection_info'.       
17305
17306 2004-04-07  Jackson Harper  <jackson@ximian.com>
17307
17308         * culture-info-tables.h: Fix date separator symbol.
17309         
17310 2004-04-07  Martin Baulig  <martin@ximian.com>
17311
17312         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
17313         from System.Type to System.MonoType.
17314
17315 2004-04-07  Martin Baulig  <martin@ximian.com>
17316
17317         * reflection.h
17318         (MonoReflectionGenericParam): Added `has_reference_type' and
17319         `has_value_type' fields.
17320
17321         * reflection.c (mono_image_get_generic_param_info): Encode the
17322         correct flags if we have the `class' or `struct' constraint.
17323
17324 2004-04-07  Martin Baulig  <martin@ximian.com>
17325
17326         * reflection.h
17327         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
17328
17329 2004-04-07  Jackson Harper  <jackson@ximian.com>
17330
17331         * appdomain.c: Revert extra patches, just wanted to bump the
17332         version number.
17333         
17334 2004-04-07  Jackson Harper  <jackson@ximian.com>
17335
17336         * Makefile.am: Add culture-info private headers.
17337         * icall.c: Add new icalls for contructing locales.
17338         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
17339         * locales.h: Declare new culture info construction methods.
17340         * object.h: Add new fields used to avoid the CultureMap to
17341         MonoCultureInfo.
17342         * culture-info.h: Definition of structs used in the culture info
17343         tables.
17344         * culture-info-tables.h: Autogenerated tables that contain culture
17345         info data. This file was generated with the locale-builder tool.
17346         * appdomain.c: Incement corlib version number.
17347         
17348 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
17349
17350         * appdomain.c: (mono_runtime_init) move mono_thread_init
17351         to before mono_object_new calls so critical sections
17352         are initialized before use.
17353
17354 2004-04-07  Martin Baulig  <martin@ximian.com>
17355
17356         * icall.c
17357         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
17358         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
17359         (ves_icall_MonoGenericParam_initialize): Removed.
17360         (monogenericparam_icalls): Removed.
17361         (generictypeparambuilder_icalls): Added new table for
17362         System.Reflection.Emit.GenericTypeParameterBuilder.
17363
17364         * reflection.c
17365         (mono_reflection_define_generic_parameter): Removed.
17366         (mono_reflection_initialize_generic_parameter): This is now called
17367         from GenericTypeParameterBuilder's .ctor.
17368
17369 2004-04-06  Martin Baulig  <martin@ximian.com>
17370
17371         * class.c (mono_class_init): Don't inflate nested classes in a
17372         generic instance.
17373         (mono_type_get_name_recurse): Include the generic arguments for
17374         generic instances and generic type declarations.
17375         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
17376         (_mono_class_get_instantiation_name): Removed.
17377         (mono_class_create_generic): Always use `gklass->name' as our name.
17378
17379         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
17380
17381         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
17382         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
17383         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
17384         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
17385         closed generic methods here.
17386
17387         * reflection.c
17388         (mono_reflection_generic_inst_get_nested_types): Removed.
17389         (inflate_mono_method): Copy the generic parameters from the
17390         MonoMethodHeader into out MonoGenericMethod.
17391
17392 2004-04-06  Martin Baulig  <martin@ximian.com>
17393
17394         * row-indexes.h
17395         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
17396
17397         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
17398
17399         * reflection.c (build_compressed_metadata): If we have any entries
17400         in the GenericParam, MethodSpec or GenericParamConstraint tables,
17401         set the header version to 1.1.
17402
17403 2004-04-06  Martin Baulig  <martin@ximian.com>
17404
17405         * class.c (mono_class_init): If we're a generic instance,
17406         initialize our nested classes, too.
17407         (_mono_class_get_instantiation_name): Deal with the new `!%d'
17408         suffix. 
17409
17410 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17411
17412         * process.c: quote the argument passed to the shell on windows.
17413
17414 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17415
17416         * threads.c (mono_alloc_special_static_data): Allow this to be
17417         called during startup.
17418
17419 2004-04-02  Martin Baulig  <martin@ximian.com>
17420
17421         * icall.c
17422         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
17423
17424 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17425
17426         * icall.c: Fix build.
17427
17428 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
17429
17430         * Makefile.am: Added security.c|h.
17431         * icall.c: Added icall for get_UserName;
17432         * security.c: New file for security related icalls. Added function
17433         get_UserName for System.Environment (fix #56144).
17434         * security.h: New. Header file for security.c
17435
17436 2004-04-02  Dick Porter  <dick@ximian.com>
17437
17438         * icall.c: Deleted the icalls that were obsoleted some time ago
17439         by the ICU string code, and which were mixed into the icall
17440         rearranging.  Fixes bug 55969.
17441
17442         * string-icalls.h: 
17443         * string-icalls.c: Deleted the code that those icalls reference.
17444
17445 2004-04-01  Martin Baulig  <martin@ximian.com>
17446
17447         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
17448
17449         * class.c (mono_class_from_generic_parameter): Don't set 
17450         TYPE_ATTRIBUTE_INTERFACE.
17451         (my_mono_class_from_generic_parameter): Likewise.
17452
17453 2004-04-01  Martin Baulig  <martin@ximian.com>
17454
17455         * loader.c (find_method): Added an optional `MonoClass *ic'
17456         argument to search in a specific interface.
17457         (mono_get_method_constrained): New public function.
17458
17459 2004-04-01  Martin Baulig  <martin@ximian.com>
17460
17461         * reflection.c (mono_image_get_generic_field_token): Use the
17462         `handleref' cache here.
17463
17464 2004-04-01  Martin Baulig  <martin@ximian.com>
17465
17466         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
17467
17468         * reflection.c (create_generic_typespec): Use the `typespec' hash
17469         here, not the `typeref' one.    
17470
17471 2004-04-01  Martin Baulig  <martin@ximian.com>
17472
17473         * class.c (mono_class_inflate_generic_type): Moved the
17474         functionality into a new static inflate_generic_type() which
17475         returns NULL if it didn't do anything.  Only increment the
17476         `mono_stats.inflated_type_count' if we actually inflated
17477         something.
17478         (mono_class_get_full): Check the classes type to see whether we
17479         need to inflate it; also inflate MONO_TYPE_(M)VAR.
17480
17481 2004-04-01  Jackson Harper  <jackson@ximian.com>
17482
17483         * reflection.c: Set culture for assembly references.
17484         
17485 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
17486
17487         * reflection.[ch], icall.[ch], Fix support for pinning variables.
17488
17489 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17490
17491         * assembly.c:
17492         (do_mono_assembly_open): the critical section also covers
17493         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
17494
17495 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17496
17497         * threads.c:
17498         (mono_manage_threads): abort the background threads when finishing.
17499         Fixes bug #47232.
17500
17501 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17502
17503         * gc.c: only close the done_event handle if there was no timeout.
17504         C-ified comments.
17505
17506 2004-03-30  Martin Baulig  <martin@ximian.com>
17507
17508         * icall.c (icall_entries): It's called "System.Activator", not
17509         "System.Activation".    
17510
17511 2004-03-30  Martin Baulig  <martin@ximian.com>
17512
17513         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
17514         (mono_class_create_from_typespec): Likewise.
17515
17516 2004-03-30  Martin Baulig  <martin@ximian.com>
17517
17518         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
17519         `has_ctor_constraint' and `initialized'.
17520
17521 2004-03-30  Martin Baulig  <martin@ximian.com>
17522
17523         * reflection.c (encode_new_constraint): New static function to add
17524         the constructor constraint attribute to a type parameter.
17525         (encode_constraints): Call encode_new_constraint() if necessary.
17526
17527         * reflection.h
17528         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
17529
17530         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
17531         
17532 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
17533
17534         * reflection.c, icall.c: add support for pinning variables. 
17535
17536 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
17537
17538         * marshal.c (mono_marshal_get_managed_wrapper):
17539         init bool local with zero rather than null.
17540
17541 2004-03-29  Martin Baulig  <martin@ximian.com>
17542
17543         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
17544         the "official" behavior here.
17545         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
17546
17547 2004-03-29  Martin Baulig  <martin@ximian.com>
17548
17549         * icall.c: Reflect latest API changes.
17550
17551 2004-03-29  Martin Baulig  <martin@ximian.com>
17552
17553         * loader.c (mono_get_method_from_token): Also call
17554         mono_metadata_load_generic_params () for abstract and interface
17555         methods; replace the type arguments in the method signature with
17556         the ones which are loaded from the metadata.
17557
17558 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
17559
17560         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
17561         of the lock is not the current thread. MS.NET don't do it, in spite of
17562         what the documentation says. See bug #56157.
17563
17564 2004-03-28  Martin Baulig  <martin@ximian.com>
17565
17566         * class.c (mono_class_init): Don't call init_properties() and
17567         init_events() for generic instances; set `prop->parent' when
17568         inflating properties.
17569
17570         * reflection.c (mono_generic_inst_get_object): Call
17571         `mono_class_init (ginst->klass)'.
17572         (mono_type_get_object): Only create a MonoGenericInst if your
17573         generic type is a TypeBuilder.
17574         (do_mono_reflection_bind_generic_parameters): Only set
17575         `ginst->is_dynamic' if our generic type is a TypeBuilder.
17576
17577 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
17580         Fixes #56091.
17581
17582 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17583
17584         * icall.c: added Kill_internal icall.
17585         * process.[ch]: added Kill_internal icall.
17586
17587 2004-03-25  Martin Baulig  <martin@ximian.com>
17588
17589         * class.h (MonoStats): Added `generic_instance_count',
17590         `inflated_method_count', `inflated_type_count' and
17591         `generics_metadata_size'.       
17592
17593 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17594
17595         * reflection.c: no warnings now.
17596
17597 2004-03-25  Martin Baulig  <martin@ximian.com>
17598
17599         * class.c (mono_class_get_full): New public function; does a
17600         mono_class_get(), but also takes a `MonoGenericContext *'.
17601
17602         * loader.c (mono_field_from_memberref): Renamed to
17603         `field_from_memberref', made static and added `MonoGenericContext *'
17604         argument.
17605         (mono_field_from_token): Added `MonoGenericInst *' argument.
17606         (method_from_memberef): Likewise.
17607         (mono_get_method_from_token): Likewise.
17608         (mono_get_method_full): New public function; does a
17609         mono_get_method(), but also takes a `MonoGenericContext *'.
17610
17611         * verify.c (mono_method_verify): Get the method's generic context
17612         and pass it to mono_field_from_token(), mono_get_method_full() and
17613         mono_class_get_full().
17614
17615 2004-03-25  Martin Baulig  <martin@ximian.com>
17616
17617         * class.c (mono_class_inflate_generic_type): Take a
17618         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
17619         `MonoGenericMethod *'.
17620
17621 2004-03-25  Martin Baulig  <martin@ximian.com>
17622
17623         * loader.h (MonoMethodInflated): Store the MonoGenericContext
17624         instead of the MonoGenericMethod here.
17625
17626 2004-03-25  Martin Baulig  <martin@ximian.com>
17627
17628         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
17629         each time we create a new MonoGenericInst, we also create a new
17630         context which points back to us.
17631
17632         * class.c (inflate_method): Use `ginst->context' instead of
17633         creating a new context.
17634
17635         * loader.c (method_from_memberref): Use
17636         `klass->generic_inst->context' instead of creating a new context.
17637
17638 2004-03-25  Martin Baulig  <martin@ximian.com>
17639
17640         * class.h (MonoGenericContext): New struct.
17641         (MonoGenericMethod): Removed `generic_inst'.
17642
17643         * class.c (mono_class_inflate_generic_method): Take a
17644         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
17645
17646 2004-03-25  Martin Baulig  <martin@ximian.com>
17647
17648         * loader.h (MonoMethodInflated): New typedef.
17649
17650         * metadata.h (MonoMethodSignature): Removed `gen_method', make
17651         `generic_param_count' consume just 30 bits, added `is_inflated'
17652         and `has_type_parameters' flags (one bit each).
17653
17654         * class.c (mono_class_inflate_generic_method): Create a
17655         MonoMethodInflated instead of a MonoMethodNormal and set
17656         `is_inflated' in the method signature.
17657
17658         * class.h (MonoGenericMethod): Removed `generic_method'.
17659
17660 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
17661
17662         * image.c: Make sure the name of a MonoImage is always an absolute path.
17663           This fixes bug #54415.
17664
17665 2004-03-24  Martin Baulig  <martin@ximian.com>
17666
17667         * class.c (mono_class_setup_vtable): If we're a generic instance,
17668         use our generic type's vtable size.
17669
17670 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17671
17672         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
17673         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
17674         problems.
17675
17676 2004-03-23  Martin Baulig  <martin@ximian.com>
17677
17678         * class.h (MonoDynamicGenericInst): Added `int count_events' and
17679         `MonoEvent *events'.
17680
17681         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
17682         (typebuilder_icalls): Added "get_event_info"; calls
17683         mono_reflection_event_builder_get_event_info(). 
17684
17685         * reflection.c (mono_reflection_generic_inst_initialize): Added
17686         `MonoArray *events'.
17687         (mono_reflection_event_builder_get_event_info): New function.
17688
17689 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
17690
17691         * object.h: add mono_type_initialization_init
17692
17693         * object.c (mono_runtime_class_init): 
17694         implement class constructor synchronization rules
17695         to cope with threading issues.  
17696         add mono_type_initialization_init
17697
17698         * appdomain.c (mono_runtime_init): call 
17699         mono_type_initialization_init
17700
17701         * class.h: removing initializing field from MonoVTable
17702
17703 2004-03-23  Martin Baulig  <martin@ximian.com>
17704
17705         * class.c (my_mono_class_from_generic_parameter): Use
17706         `param->name' if it's not NULL. 
17707
17708 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
17709
17710         * class.c: do not insert non-virtual methods in the vtable.
17711         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
17712         that means the method is non-virtual. This never would have
17713         happened before.
17714
17715 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17716
17717         * profiler.c: Added lock for accessing coverage_hash.
17718
17719 2004-03-22  Martin Baulig  <martin@ximian.com>
17720
17721         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
17722         `method->method->signature->generic_param_count != 0' to make it
17723         work for interface methods.
17724
17725 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17726
17727         * process.c: quote the string passed to the shell using g_shell_quote.
17728
17729 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17730
17731         * threads.c:
17732         (mono_threads_manage): don't remove the finalizer thread and self
17733         from the threads hash table so that mono_thread_manage can be called
17734         more than once.
17735
17736 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17737
17738         * process.c: quote the arguments when UseShellExecute is true. Fixes
17739         bug #55790.
17740
17741 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17742
17743         * threads.c: set mono_thread_detach as a cleanup routine for every
17744         thread. This way it's always executed upon thread termination, either
17745         aborted or finished normally. No more xsp hangs!
17746
17747 2004-03-17  Martin Baulig  <martin@ximian.com>
17748
17749         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
17750         `int count_nested' and a `MonoType **nested'.
17751
17752         * reflection.c (mono_reflection_bind_generic_parameters): Moved
17753         most of the functionality into a new static
17754         do_mono_reflection_bind_generic_parameters() and don't take a
17755         `MonoType *nested_in' argument any more.  Don't compute nested
17756         types here.
17757         (mono_reflection_generic_inst_get_nested_types): New public method
17758         to get nested types.
17759
17760         * class.c (mono_class_create_generic): Set `klass->nested_in' if
17761         we're a nested class.
17762
17763         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
17764         mono_reflection_generic_inst_get_nested_types() to compute the
17765         nested types.
17766
17767 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
17770         descriptive error message under windows.
17771         
17772 2004-03-17  Martin Baulig  <martin@ximian.com>
17773
17774         * class.c (dup_type): Added `const MonoType *original' argument;
17775         copy the attrs from the original type.
17776
17777 2004-03-17  Martin Baulig  <martin@ximian.com>
17778
17779         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
17780         `m->generic_inst_cache' here.
17781
17782 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17783
17784         * exception.h exception.c: Add stack_overflow_exception.
17785
17786 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17787
17788         * threadpool.c:
17789         (overlapped_callback): call SetEvent *after* invoking the callback.
17790         No need to call CloseHandle.
17791
17792 2004-03-16  Martin Baulig  <martin@ximian.com>
17793
17794         * reflection.c (mono_image_get_fieldref_token): Take a
17795         `MonoReflectionField *' instead of a `MonoClassField *' and a
17796         `MonoClass *'; store the `MonoReflectionField *' in the hash.
17797
17798 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17799
17800         * appdomain.c: don't add the culture to the filename we're looking for
17801         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
17802
17803 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17804
17805         * locales.c: don't ignore symbols when doing case insensitive compares.
17806         Thanks Dick! Fixes bug #54046.
17807
17808         * threads.c: surround 'threads' usage with enter/leave in
17809         mono_thread_manage.
17810
17811 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17812
17813         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
17814         implicitly marshalled as [Out]. Fixes #55450.
17815
17816         (mono_marshal_get_runtime_invoke): Zero out the result if there is
17817         an exception.
17818
17819 2004-03-16  Martin Baulig  <martin@ximian.com>
17820
17821         * class.c (mono_class_from_generic_parameter): Use the actual
17822         parameter name. 
17823
17824 2004-03-16  Martin Baulig  <martin@ximian.com>
17825
17826         * reflection.c (type_get_signature_size): New static function.
17827         Compues the size of the type in a method signature.
17828         (method_get_signature_size): New static function; calls
17829         type_get_signature_size() to compute the actual size of the
17830         method's signature.
17831         (method_encode_signature): Use method_get_signature_size() to get
17832         the signature's size rather than using `nparams * 10'.
17833
17834 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17835
17836         * file-io.h: define here WapiOverlapped on windows. I don't want the
17837         regular OVERLAPPED one.
17838
17839         * file-io.c:
17840         * threadpool.c: somehow, BindIoCompletionCallback is not found.
17841         Disabling AIO on windows.
17842
17843 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17844
17845         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
17846         bug #55385.
17847
17848 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17849
17850         * appdomain.c: upgraded corlib version.
17851
17852         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
17853         and BeginWrite. Allow opening files for asynchrnous operations.
17854
17855         * file-io.h: new struct that maps FileStreamAsyncResult.
17856         * icall.c: added new icalls.
17857         * process.[ch]: support setting child process environment variables
17858         and use the SHELL or COMSPEC when UseShellExecute is true.
17859
17860         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
17861         callback for async. IO is here and also BindHandle.
17862
17863         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
17864         from here.
17865
17866 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17867
17868         * reflection.c (create_custom_attr): Allow len == 0.
17869
17870         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
17871         computation on big-endian machines.
17872
17873 2004-03-13  Martin Baulig  <martin@ximian.com>
17874
17875         * class.h (MonoGenericInst): Added `int count_ifaces'.
17876
17877         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
17878         `ginst->count_ifaces' instead `klass->interface_count' since we
17879         may get called before the vtable is created.
17880
17881         * loader.c (mono_method_get_param_names): If we're a generic
17882         instance, return and don't initialize the class.
17883
17884         * reflection.c (mono_reflection_setup_generic_class): Don't call
17885         ensure_runtime_vtable().
17886         (mono_reflection_bind_generic_parameters): Set
17887         `ginst->count_ifaces'.
17888
17889 2004-03-11  Jackson Harper <jackson@ximian.com>
17890
17891         * icall.c:
17892         * unicode.c:
17893         * unicode.h: Remove unused System.Char icalls.
17894         
17895 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
17896
17897         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
17898         code when we P/Invoke the first library in Windows.Forms, instead
17899         of when we first open the assembly.
17900
17901         * assembly.c: Drop the lookup from here.
17902
17903 2004-03-10  Martin Baulig  <martin@ximian.com>
17904
17905         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
17906         class for properties, fields and events.  Finally fixes #54945.
17907
17908 2004-03-10  Martin Baulig  <martin@ximian.com>
17909
17910         * metadata.c (mono_metadata_class_equal): New static function;
17911         checks whether two generic instances or two generic parameters are
17912         equal.
17913         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
17914         compare classes.        
17915
17916 2004-03-10  Martin Baulig  <martin@ximian.com>
17917
17918         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
17919
17920         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
17921         argument and write it into the `reflection_info' field.
17922
17923         * icall.c
17924         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
17925         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
17926
17927 2004-03-09  Jackson Harper  <jackson@ximian.com>
17928
17929         * char-conversions.h: use 8 bits for numeric data its all we need
17930         * icall.c: numeric data is only 8 bits now.
17931
17932 2004-03-09  Martin Baulig  <martin@ximian.com>
17933
17934         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
17935
17936         * class.c (init_properties, init_events): Initialize the new
17937         `parent' field.
17938
17939         * reflection.c (typebuilder_setup_properties): Likewise.
17940         (typebuilder_setup_events): Likewise.
17941
17942         * reflection.h (MonoEventInfo): Replaced `parent with
17943         `declaring_type' and `reflected_type'.
17944
17945         * icall.c (ves_icall_get_property_info): Distinguish between
17946         declaring and reflected type.
17947         (ves_icall_get_event_info): Likewise.
17948
17949 2004-03-09  Martin Baulig  <martin@ximian.com>
17950
17951         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
17952         (ves_icall_Type_GetField): Correctly set field->klass.
17953
17954 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * loader.h: Fix warning.
17957
17958 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
17959
17960         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
17961         library routine if present.  Notice that it will still continue
17962         executing even if its missing, for those working on the Gtk#
17963         edition of Windows.Forms.
17964
17965         * assembly.c (do_mono_assembly_open): If loading the
17966         System.Windows.Forms call mono_loader_wini_init.
17967
17968 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17969
17970         * class.h: Added MonoRemoteClass struct.
17971         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
17972         function for MonoStrings.
17973         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
17974         Added internal call for getting the proxy type.
17975         * marshal.c: Get the type of transparent proxies from its remote_class.
17976         Added methods that generate the IL for type checks and casts:
17977         mono_marshal_get_isinst, mono_marshal_get_castclass, 
17978         mono_marshal_get_proxy_cancast.
17979         * marshal.h: Declaration of the previous new methods.
17980         * object.c: Added new moethods for creating and updating MonoRemoteClass
17981         instances: mono_remote_class, mono_upgrade_remote_class, 
17982         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
17983         * verify.c: FIx transparent_proxy_fields layout.
17984         * appdomain.c: Bump corlib version.
17985
17986 2004-03-04  Jackson Harper  <jackson@ximian.com>
17987
17988         * icall.c: Add icall to access char conversion tables.
17989         * char-conversions.h: Character conversion tables.
17990         * Makefile.am: Add char-conversions.h private header file.
17991         
17992 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
17993
17994         * appdomain.c (unload_thread_main): Increase unloading timeout to
17995         10 sec as a temporary workaround for Nant problems.
17996
17997 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
17998
17999         * gc.c: Add checks for GC_enable and GC_disable.
18000
18001         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
18002         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
18003         (bug #54988).
18004         
18005 2004-02-27  Martin Baulig  <martin@ximian.com>
18006
18007         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18008         `MonoReflectionType *' instead of a `MonoType *'.
18009
18010 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * gc.c (run_finalize): Avoid finalizing the object representing the
18013         finalizer thread.
18014         (finalizer_thread): Fix warning.
18015
18016 2004-02-25  Martin Baulig  <martin@ximian.com>
18017
18018         * class.c (_mono_class_get_instantiation_name): Added `int offset'
18019         argument for nested types.
18020         (mono_class_create_generic): Added support for nested generictypes.
18021
18022         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
18023         `GList *nested'.
18024
18025         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
18026
18027         * reflection.c (method_encode_signature): Increase the minimum
18028         value of `size' from 10 to 11.
18029         (mono_reflection_bind_generic_parameters): Take `int type_argc'
18030         and `MonoType **types' arguments instead of the `MonoArray
18031         *types'; added `MonoType *nested_in'.  Recursively instantiate
18032         nested classes. 
18033
18034 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18035
18036         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
18037         stack_overflow_ex members which are used by exception handling.
18038
18039         * appdomain.c (mono_runtime_init): Initialize the new members.
18040
18041         * gc.c (mono_gc_enable): New helper function.
18042         * gc.c (mono_gc_disable): New helper function.
18043
18044 2004-02-23  Martin Baulig  <martin@ximian.com>
18045
18046         * icall.c: I must have been really stupid - make it actually work
18047         this time ;-)
18048
18049 2004-02-23  Martin Baulig  <martin@ximian.com>
18050
18051         * loader.c (method_from_memberref): Only inflate the method if
18052         it's in another klass.
18053
18054 2004-02-23  Martin Baulig  <martin@ximian.com>
18055
18056         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
18057         (mono_class_init): If we're a generic instance and an interface,
18058         compute `class->interface_id'; also create `class->interfaces'
18059         here and inflate them.
18060
18061         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
18062         `ginst->is_open'.
18063         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
18064
18065         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
18066
18067 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
18068
18069         * reflection.c (method_encode_code): Improved the error message
18070         generated by the exception.
18071
18072 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18073
18074         * icall.c: Martin did not do what he said in the ChangeLog for
18075         2004-02-18, but put back the changes for properties and events.
18076         Commenting those changes out again and adding comment to bug #54518.
18077         
18078         * process.c: removed warning.
18079
18080 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
18081
18082         * marshal.c (emit_struct_conv): Print an error message instead of
18083         asserting when a type does not have the StructLayout attribute.
18084
18085 2004-02-20  Martin Baulig  <martin@ximian.com>
18086
18087         * reflection.c (mono_type_get_object): Also use the cache for
18088         generic instances.
18089         (mono_reflection_bind_generic_parameters): Always compute
18090         `ginst->ifaces'.        
18091
18092 2004-02-20  Martin Baulig  <martin@ximian.com>
18093
18094         * class.h (MonoGenericMethod): Removed `klass'.
18095
18096         * class.c (mono_class_inflate_generic_method): Added `MonoClass
18097         *klass' argument.
18098
18099 2004-02-20  Martin Baulig  <martin@ximian.com>
18100
18101         * reflection.c (method_encode_methodspec): Actually use the
18102         uninflated signature for the memberref.
18103
18104 2004-02-20  Martin Baulig  <martin@ximian.com>
18105
18106         * class.h (MonoGenericMethod): Removed `declaring'.
18107
18108         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
18109         is NULL, compute it here.
18110
18111 2004-02-20  Martin Baulig  <martin@ximian.com>
18112
18113         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
18114
18115         * metadata.c (mono_metadata_generic_inst_hash): New method.
18116         (mono_metadata_generic_inst_equal): New method.
18117
18118         * reflection.c (mono_reflection_bind_generic_parameters): Use the
18119         `klass->image->generic_inst_cache' cache to avoid creating
18120         duplicate MonoGenericInst's.
18121
18122         * class.c (mono_class_inflate_generic_type): Use the cache.
18123
18124 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18125
18126         * object.c: fixed gc descriptor calculation for embedded valuetypes.
18127
18128 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18129
18130         * icall.c: added Socket.WSAIoctl icall.
18131
18132         * socket-io.[ch]: implemented
18133         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
18134
18135 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
18136
18137         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
18138
18139 2004-02-18  Urs C Muff  <umuff@quark.com>
18140
18141         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
18142         this work on PPC and other big-endian architectures.
18143
18144         * debug-mono-symfile.h: Prepended the names of all the `guint32'
18145         fields with an underscore to make sure they're only accessed by
18146         the read32() macro.
18147
18148 2004-02-18  Martin Baulig  <martin@ximian.com>
18149
18150         * icall.c: Put the klass->refclass changes back for methods and
18151         fields, but not for properties and events.  We're currently not
18152         distinguishing between DeclaringType and ReflectedType for
18153         properties and events, that's what caused the regressions.
18154
18155 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18156
18157         * object.c:
18158         (mono_async_result_new): the handle can be NULL.
18159
18160         * threadpool.c: Use an event instead of a semaphore, don't initialize
18161         it until needed. This saves quite a few semaphores from being created
18162         when using the threadpool.
18163
18164 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * object.c (mono_string_is_interned_lookup): Fix interning of long
18167         strings. Fixes #54473.
18168
18169         * domain.c (ldstr_equal): Optimize if the two strings are equal.
18170
18171         * icall.c: Revert the klass->refclass changes since they introduce
18172         regressions (bug #54518).
18173
18174 2004-02-18  Martin Baulig  <martin@ximian.com>
18175
18176         * class.c (mono_class_init): If we're a generic instance and don't
18177         come from a TypeBuilder, inflate our members here.
18178         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
18179         (mono_class_create_generic): New public method.
18180         (mono_class_initialize_generic): Removed.
18181         (get_instantiation_name): Renamed to
18182         _mono_class_get_instantiation_name() and made it public.
18183
18184 2004-02-18  Martin Baulig  <martin@ximian.com>
18185
18186         * class.c (mono_class_inflate_generic_type): Clear the new
18187         instance's `nginst->klass' when inflating a generic instance.
18188         (mono_class_is_subclass_of): Added (basic) support for generic
18189         instances.
18190
18191 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
18192
18193         * appdomain.h, domain.c: use a MonoCodeManager instead of a
18194         MonoMempool to hold compiled native code.
18195
18196 2004-02-17  Martin Baulig  <martin@ximian.com>
18197
18198         * class.h (MonoDynamicGenericInst): Added `count_properties' and
18199         `properties'.
18200
18201         * reflection.c (mono_reflection_generic_inst_initialize): Added
18202         `MonoArray *properties' argument.
18203
18204         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
18205
18206 2004-02-17  Martin Baulig  <martin@ximian.com>
18207
18208         * icall.c (ves_icall_Type_GetFields): Renamed to
18209         ves_icall_Type_GetFields_internal() and added a
18210         `MonoReflectionType *rtype' argument; pass it to
18211         mono_field_get_object() to set the field's "reflected" type.
18212         (ves_icall_Type_GetConstructors): Likewise.
18213         (ves_icall_Type_GetEvents): Likewise.
18214         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
18215         argument; pass it to mono_method_get_object() to set the method's
18216         "reflected" type.       
18217
18218 2004-02-17  Martin Baulig  <martin@ximian.com>
18219
18220         * class.h (MonoDynamicGenericInst): New type.
18221         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
18222
18223         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
18224         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
18225         (ves_icall_MonoGenericInst_GetFields): New interncall.
18226
18227         * class.c (mono_class_from_generic): Don't call
18228         mono_class_initialize_generic() if this is a dynamic instance;
18229         ie. it's being created from a TypeBuilder.
18230         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
18231         `class->byval_arg.type'.
18232
18233         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
18234         to `inflate_method' and made static.
18235         (mono_reflection_inflate_field): Removed.
18236         (mono_reflection_generic_inst_initialize): New public method.
18237
18238         * reflection.h (MonoReflectionGenericInst): Removed `methods',
18239         `ctors' and `fields'; added `initialized'.
18240
18241 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18242
18243         * debug-helpers.c (mono_method_full_name): Fix output for empty
18244         namespaces.
18245
18246 2004-02-12  Martin Baulig  <martin@ximian.com>
18247
18248         * class.h (MonoClassField): Added `MonoType *generic_type'.
18249
18250         * reflection.c (mono_image_get_fieldref_token): Added support for
18251         instantiated generic types.
18252         (field_encode_inflated_field): Removed.
18253         (mono_image_get_inflated_field_token): Removed.
18254         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
18255
18256         * reflection.h (MonoReflectionInflatedField): Removed.
18257
18258 2004-02-12  Martin Baulig  <martin@ximian.com>
18259
18260         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
18261         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
18262
18263         * reflection.c (mono_image_get_methodspec_token): Take a
18264         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
18265         (mono_image_create_token): Check whether we have a
18266         `method->signature->gen_method' and call
18267         mono_image_get_methodspec_token() if appropriate.
18268         (inflated_method_get_object): Removed.
18269         (mono_reflection_bind_generic_method_parameters): Return a
18270         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
18271         (mono_reflection_inflate_method_or_ctor): Likewise.
18272
18273         * reflection.h (MonoReflectionInflatedMethod): Removed.
18274
18275 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
18276
18277         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
18278         for custom valuetype marshalling.
18279
18280         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
18281
18282 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18283
18284         * icall.c: fixed WSAGetLastError_internal name.
18285
18286 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18287
18288         * threads.c (mono_thread_attach): Allow this to be called multiple
18289         times for a thread.
18290         
18291         * threads.c (build_wait_tids): Do not wait for ourselves.
18292
18293         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
18294         appdomain list is empty.
18295
18296         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
18297         memory returned by mono_string_builder_to_utf16, since it points into
18298         managed memory. Thanks to Bernie Solomon for noticing this.
18299
18300         * icall.c: Add AppDomainSetup icalls.
18301
18302         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
18303
18304         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
18305         types.
18306
18307         * reflection.c (reflection_methodbuilder_to_mono_method): Save
18308         custom attributes to the method_aux struct. Also fix array indexes etc.
18309
18310         * loader.c (mono_method_get_param_names): Make dynamic case work again.
18311         
18312 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
18313
18314         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
18315         (both static and runtime) and reduce startup time.
18316
18317 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
18320         AsAny marshalling conversion instead of crashing.
18321
18322         * marshal.c: Fix warnings.
18323
18324 2004-02-09  Martin Baulig  <martin@ximian.com>
18325
18326         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
18327
18328         * reflection.h (MonoReflectionInflatedMethod): Removed the
18329         `declaring' field, it's now in the unmanaged MonoGenericMethod.
18330
18331         * reflection.c (method_encode_methodspec): Removed the `method'
18332         argument; we get it from `gmethod->declaring'.
18333         (inflated_method_get_object): Removed the `declaring' argument.
18334
18335 2004-02-09  Martin Baulig  <martin@ximian.com>
18336
18337         * class.h (MonoGenericMethod): New type.
18338         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
18339         `generic_method'.
18340
18341         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
18342         a `MonoGenericMethod *gen_method' one.
18343
18344         * class.c (mono_class_inflate_generic_type): Take an additional
18345         `MonoGenericMethod * argument.  This is only non-NULL if we're
18346         inflating types for a generic method.   
18347         (mono_class_inflate_generic_signature): Renamed to
18348         inflate_generic_signature() and made static; take a
18349         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18350         (inflate_generic_header): Take a `MonoGenericMethod *' argument
18351         instead of a `MonoGenericInst *' one.
18352         (mono_class_inflate_generic_method): Likewise.
18353
18354         * reflection.c (encode_generic_method_sig): Take a
18355         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18356         (method_encode_methodspec): Likewise.
18357         (inflated_method_get_object): Likewise. 
18358
18359         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
18360         field with a `MonoGenericMethod *gmethod' one.  
18361
18362 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
18363
18364         * class.h (mono_class_has_parent): add parens to expansion
18365         so you can ! this.
18366
18367 2004-02-08  Martin Baulig  <martin@ximian.com>
18368
18369         * image.h (MonoImage): Removed `generics_cache'.
18370
18371         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
18372         instead of a `MonoType *' argument; removed the `inflate_methods'
18373         argument.  Don't inflate methods here.
18374
18375         * loader.c (find_method): If it's a generic instance, call
18376         mono_class_init() on the `sclass->generic_inst->generic_type'.
18377
18378         * metadata.c (mono_type_size): Make this work on uninitialized
18379         generic instances; call it on the `ginst->generic_type's class.
18380
18381         * reflection.c (mono_reflection_bind_generic_parameters): Call
18382         mono_class_from_generic() to create the `ginst->klass'.
18383
18384 2004-02-08  Martin Baulig  <martin@ximian.com>
18385
18386         * class.h (MonoClass): Changed type of `generic_inst' from
18387         `MonoType *' to `MonoGenericInst *'.
18388
18389 2004-02-08  Martin Baulig  <martin@ximian.com>
18390
18391         * icall.c (ves_icall_Type_BindGenericParameters): Just call
18392         mono_type_get_object(), this is now creating a `MonoGenericInst'
18393         for MONO_TYPE_GENERICINST.
18394         (ves_icall_MonoGenericInst_GetParentType): Likewise.
18395         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
18396
18397         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
18398         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
18399         (inflated_method_get_object): Added `MonoClass *refclass' argument.
18400         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
18401         and reflected type.
18402
18403         * reflection.h (MonoReflectionInflatedMethod): Removed
18404         `declaring_type' and `reflected_type'.
18405
18406 2004-02-08  Martin Baulig  <martin@ximian.com>
18407
18408         * class.h (MonoGenericInst): Added `MonoType *parent' and
18409         `MonoType **ifaces'.
18410
18411         * reflection.h (MonoReflectionGenericInst): Removed `klass',
18412         `parent' and `interfaces'.
18413
18414         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18415         `MonoType *' argument and return a `MonoType *'.
18416
18417         * icall.c
18418         (ves_icall_MonoGenericInst_GetParentType): New interncall.
18419         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
18420
18421 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
18424         valuetype marshalling.
18425
18426 2004-02-06  Martin Baulig  <martin@ximian.com>
18427
18428         * class.c
18429         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
18430         (my_mono_class_from_generic_parameter): Likewise.
18431
18432 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
18435         contents of the symbol files lazily.
18436
18437         * object.h (MonoThread): Add 'name' and 'name_len' fields.
18438
18439         * threads.h threads.c icall.c: New icalls for getting and setting the
18440         threads name.
18441
18442 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
18443
18444         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
18445         Raise an exception when the domain is not found.
18446
18447 2004-02-03  Martin Baulig  <martin@ximian.com>
18448
18449         * reflection.c (mono_image_get_methodspec_token): Use the
18450         uninflated signature; fixes gen-33.
18451
18452 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18453
18454         * gc.c threads.c: Make the finalizer thread a normal managed thread so
18455         the finalizer code can use thread functionality.
18456
18457         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
18458         the finalizer thread.
18459
18460         * threads.c: Make some functions more robust.
18461
18462         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
18463
18464         * metadata.h: Add new marshalling conventions.
18465
18466         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
18467         stringbuilder marshalling. Fixes #53700.
18468
18469         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
18470
18471         * reflection.c (mono_image_get_type_info): Save declarative security
18472         info.
18473
18474         * reflection.c (mono_image_get_field_info): Handle uninitialized 
18475         unmanaged fields as well.
18476
18477         * appdomain.c: Bump corlib version.
18478
18479 2004-02-01  Martin Baulig  <martin@ximian.com>
18480
18481         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
18482         method type arguments.  
18483
18484 2004-01-30  Duncan Mak  <duncan@ximian.com>
18485
18486         * marshal.h: Add prototype for
18487         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
18488         and
18489         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
18490         fix the build.
18491
18492 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
18493
18494         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
18495         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
18496
18497 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18498
18499         * marshal.c (mono_marshal_get_native_wrapper): Add support for
18500         custom marshalling of valuetypes.
18501
18502         * marshal.c: Fix some warnings.
18503
18504 2004-01-29  Martin Baulig  <martin@ximian.com>
18505
18506         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
18507         for generic method parameters.
18508
18509         * reflection.c (method_encode_methodspec): Write the uninflated
18510         signature into the methodspec table.
18511         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
18512         is always the uninflated method.
18513         (reflection_methodbuilder_to_mono_method): Copy the generic
18514         parameters from the MethodBuilder into `header->gen_params'.
18515
18516 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18517
18518         * class.c (mono_class_from_generic_parameter): Fix warning.
18519
18520 2004-01-27  Martin Baulig  <martin@ximian.com>
18521
18522         * class.c (mono_class_from_generic_parameter): Don't create
18523         `klass->methods' here.  
18524
18525 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
18528         extension since it does not work with libraries named lib<FOO>.dll.so.
18529
18530 2004-01-25  Martin Baulig  <martin@ximian.com>
18531
18532         * class.c (mono_class_inflate_generic_type): Added support for
18533         MONO_TYPE_GENERICINST.
18534
18535         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
18536         inflate methods on open constructed types.      
18537
18538 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18539
18540         * object.c: fire ProcessExit event in the root AppDomain after running
18541         Main. Fixes bug #53299.
18542
18543 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18544
18545         * socket-io.c: include the new socket-wrappers.h header.
18546         Use the wrappers instead of the unix socket functions to make the code
18547         more clear.
18548
18549 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18550
18551         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
18552
18553         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18554         Fixes #22532.
18555
18556 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * reflection.c (mono_image_create_pefile): Handle the case when the
18559         entry point is not a MethodBuilder.
18560
18561         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18562         field to ReflectionMethod since it is not allways a builder.
18563
18564         * reflection.c (type_get_fully_qualified_name): New helper function to
18565         return the fully qualified name of a type.
18566
18567         * reflection.c (encode_marshal_blob): Always emit the fully qualified
18568         type name for custom marshallers.
18569
18570         * reflection.c (mono_marshal_spec_from_builder): Ditto.
18571
18572         * class.c (mono_class_setup_vtable): If a parent class already 
18573         implements an interface, use the implementing methods from that class.
18574         Fixes #53148.
18575
18576 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18577
18578         * threadpool.c: just return instead of ExitThread to allow for thread
18579         clean up earlier.
18580
18581 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
18582
18583         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
18584         when closing resource modules.
18585
18586         * reflection.c (mono_image_create_pefile): Handle the case when the
18587         entry point is not a MethodBuilder.
18588
18589         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18590         field to ReflectionMethod since it is not allways a builder.
18591
18592 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18593
18594         * marshal.c (mono_marshal_get_managed_wrapper): 
18595         mono_marshal_alloc takes native int so CONV_I
18596         the arg for 64bits.
18597
18598 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * reflection.c (fixup_cattrs): New function to fixup the methoddef
18601         tokens in the cattr table. Fixes #53108.
18602
18603 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18604
18605         * loader.c: don't trim ".dll" before looking up in the config file.
18606         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
18607
18608 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18609
18610         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
18611         Return the module which contains the resource as well.
18612         (ves_icall_System_Reflection_Module_Close): New icall.
18613
18614         * appdomain.c: Bump corlib version number.
18615
18616         * image.c (mono_image_addref): New public function.
18617
18618         * assembly.c: Call mono_image_addref.
18619
18620         * reflection.c (mono_module_get_object): Increase reference count of 
18621         the image.
18622
18623         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18624         Fixes #22532.
18625
18626         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
18627         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
18628         proper exceptions on DllImport problems.
18629
18630 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
18631
18632         * class.c, metadata.c: eliminate CSIZE macro.
18633
18634 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
18635
18636         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
18637         * object.h: Added async_callback field in MonoAsyncResult.
18638         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
18639         * verify.c: Added async_callback in MonoAsyncResult layout.
18640
18641 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * reflection.c (mono_reflection_get_custom_attrs): Add support
18644         for Modules.
18645
18646 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18647
18648         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
18649         marshalling.
18650         (mono_marshal_method_from_wrapper): Add null pointer check.
18651
18652 2004-01-16  Martin Baulig  <martin@ximian.com>
18653
18654         * debug-mono-symfile.h: Set version number to 36 and reflect
18655         latest symbol writer changes.
18656
18657 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18658
18659         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
18660         multi-dimensional arrays.
18661         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
18662         (mono_class_from_mono_type): Use bounded_array_class_get.
18663         
18664         * class.c (mono_bounded_array_class_get): New function which takes
18665         a 'bounded' bool argument to distinguish vectors from one dimensional
18666         arrays.
18667
18668         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
18669         bounded_array_class_get if the array has bounds.
18670
18671         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18672         Search modules loaded using AssemblyBuilder:AddModule as well.
18673
18674 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18675
18676         * appdomain.c: increased corlib version.
18677         * filewatcher.c: removed g_print.
18678         * icall.c:
18679         (get_property_info): only allocate what is actually requested.
18680         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
18681
18682 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18683
18684         * Makefile.am: added filewatcher.[ch]
18685         * filewatcher.[ch]: FileSystemWatcher runtime support.
18686         * icall.c: added new FSW icalls.
18687
18688 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18689
18690         * string-icalls.c: fix stringbuilder regression as suggested by
18691         Iain McCoy <iain@mccoy.id.au>.
18692
18693 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * process.c (process_read_stringtable_block): Recognize '007f' as
18696         a language neutral stringtable block.
18697
18698 2004-01-12  Patrik Torstensson
18699
18700         * object.h (MonoStringBuilder) : Changed layout to support our
18701         new stringbuilder class.
18702         * marshal.c: Change marshalling to support the new layout of 
18703         string builder.
18704         * appdomain.c: increased version number because new layout of
18705         string builder.
18706
18707 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
18708
18709         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
18710         assembly name as an string instead of an AssemblyName, since it is
18711         easier to extract info from it.
18712
18713         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
18714         the culture subdirectories too. Fixes #52231.
18715
18716 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18717
18718         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
18719         It takes 2 new parameters with an optional name for the method to look
18720         for and case ignoring info.
18721
18722         * threadpool.c: removed unused variable.
18723
18724 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18725
18726         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
18727         It takes 2 new parameters with an optional name for the property to look
18728         for and case ignoring info.
18729         Fixes bug #52753.
18730
18731 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18732
18733         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
18734         Fix #52451.
18735
18736 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18737
18738         * appdomain.c:
18739         * assembly.c: escape the uri before passing it to g_filename_from_uri.
18740         Fixes bug #52630.
18741
18742 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
18743
18744         * reflection.c: Add support for more than one unmanaged resource.
18745
18746         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
18747         in field->def_value, as done in all other cases.
18748
18749         * reflection.c (mono_reflection_get_custom_attrs): Add support for
18750         TypeBuilders.
18751
18752         * reflection.c (mono_reflection_create_runtime_class): Remove 
18753         errorneous assignment to klass->element_class, since it is already
18754         done in mono_reflection_setup_internal_class.
18755
18756 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18757
18758         * gc.c: added missing LeaveCriticalSection.
18759         * icall.c: indented a couple of lines.
18760         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
18761         if we call EndInvoke inside a callback. Fixes bug #52601.
18762
18763 2004-01-07  Martin Baulig  <martin@ximian.com>
18764
18765         * mono-debug-debugger.h
18766         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
18767
18768 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
18769
18770         * appdomain.c: Use messages in NotImplementedException.
18771
18772         * exception.c (mono_get_exception_not_implemented): Now this takes
18773         a message argument.
18774
18775         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
18776         exception instead of g_asserting an aborting when something is not
18777         implemented.
18778
18779         Add some inline docs.
18780
18781 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
18782
18783         * reflection.h: Update after changes to object layout.
18784
18785         * reflection.c: Implement saving of unmanaged aka win32 resources.
18786
18787         * appdomain.c: Bump version number.
18788
18789         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
18790         Handle missing domains gracefully.
18791
18792 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
18793
18794         * file-io.c : On Windows, there are much more invalid_path_chars.
18795
18796 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18797
18798         * class.h, object.c: prepare for GetType () speedup.
18799
18800 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
18801
18802         * profiler.c: workaround for --profile null reference exception on
18803           cygwin. Patch by Patrik Torstensson.
18804
18805 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
18806
18807         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
18808         make work for unaligned access.
18809
18810 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
18811
18812         * class.c: small cleanup (class->fields [i] -> field).
18813         * image.c: check address of metadata is valid.
18814
18815 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * assembly.h assembly.c (mono_assembly_loaded): New public function to
18818         search the list of loaded assemblies.
18819
18820         * reflection.c (mono_reflection_type_from_name): Use 
18821         mono_assembly_loaded instead of mono_image_loaded.
18822
18823         * reflection.c: Fix warnings.
18824
18825 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
18828         is dynamic. This is needed since an assembly can contain both dynamic and
18829         non-dynamic images.
18830
18831         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
18832         assembly->dynamic.
18833
18834         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
18835
18836         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
18837         to store modules loaded using AddModule.
18838
18839         * reflection.c (mono_image_fill_file_table): Generalize this so it works
18840         on Modules.
18841
18842         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
18843
18844         * reflection.c (mono_image_fill_export_table_from_module): New function to
18845         fill out the EXPORTEDTYPES table from a module.
18846
18847         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
18848         into a separate function. Also handle loaded non-dynamic modules.
18849
18850         * reflection.c (mono_image_basic_init): Fix memory allocation.
18851
18852         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18853
18854         * assembly.c (mono_assembly_load_references): Make this public.
18855
18856 2003-12-19  Martin Baulig  <martin@ximian.com>
18857
18858         * class.c (mono_class_initialize_generic): Made this static, take
18859         a `MonoGenericInst *' instead of a `MonoClass *'.
18860         (mono_class_from_generic): Call mono_class_initialize_generic()
18861         unless we're already initialized or being called from
18862         do_mono_metadata_parse_generic_inst().
18863
18864         * class.h (MonoGenericInst): Added `initialized' and
18865         `init_pending' flags.
18866
18867         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
18868         `mono_class_init (gklass)' or mono_class_initialize_generic()
18869         here; set `generic_inst->init_pending' while parsing the
18870         `type_argv'.
18871
18872 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
18873
18874         * locales.c: include string.h for memxxx prototypes
18875
18876 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18877
18878         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
18879         constructor when accessing literal fields.
18880
18881 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18884
18885         * reflection.c (assembly_add_resource_manifest): New function to fill
18886         the MANIFESTRESOURCE table.
18887
18888         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
18889
18890         * reflection.h: Update to changes in class layout.
18891
18892         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
18893         Reenable call to mono_runtime_is_shutting_down ().
18894
18895         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
18896         determine if the runtime is shutting down.
18897
18898 2003-12-16  Jackson Harper <jackson@ximian.com>
18899
18900         * icall.c: comment out call to mono_runtime_is_shutting_down to
18901         fix build.
18902         
18903 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
18906         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
18907
18908 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
18909
18910         * reflection.c: move definition of swap_with_size
18911         to before its first call
18912
18913 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
18914
18915         * appdomain.c (mono_runtime_is_shutting_down): New public function.
18916
18917         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
18918         icall.
18919
18920         * object.c: Fix warnings.
18921
18922         * icall.c (ves_icall_Type_Get...): Only consider inherited static
18923         members if FlattenHierarchy is set.
18924
18925         * reflection.c (mono_image_add_decl_security): New function to emit
18926         declarative security.
18927
18928         * reflection.h reflection.c: Add support for declarative security.
18929
18930         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18931         
18932 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18935         
18936         * appdomain.c verify.c: Moved corlib version checking into its own
18937         function in appdomain.c since it needs to create vtables etc.
18938
18939 2003-12-13  Patrik Torstensson <p@rxc.se>
18940
18941         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
18942         instead of unwrapped server.
18943
18944 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
18945
18946         * verify.c (check_corlib): Fix field index.
18947
18948 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
18951         GetGacPath icall.
18952
18953 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
18954
18955         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
18956         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
18957         cope with sizeof(size_t) != sizeof(guint32).
18958
18959 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18960
18961         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
18962         in case of failure.
18963
18964 2003-12-10  Mark Crichton <crichton@gimp.org>
18965
18966         * icall.c: removed the GetNonZeroBytes.  We now handle this case
18967         in managed code.
18968
18969         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
18970
18971 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
18972
18973         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
18974         marked as deleted.
18975
18976 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18977
18978         * verify.c (check_corlib): Handle the case when the version field is 
18979         initialized by a static constructor.
18980
18981 2003-12-08  Patrik Torstensson  <p@rxc.se>
18982
18983     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
18984
18985 2003-12-08  Martin Baulig  <martin@ximian.com>
18986
18987         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
18988         a MonoReflectionGenericParameter, also take the parameter index
18989         and name as arguments.
18990         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
18991         (ves_icall_MonoGenericParam_initialize): New interncall.
18992         (ves_icall_Type_make_byref_type): New interncall.
18993
18994         * reflection.h (MonoReflectionGenericParam): Derive from
18995         MonoReflectionType, not just from MonoObject.  Added `refobj' and
18996         `index' fields.
18997
18998         * reflection.c (mono_reflection_define_generic_parameter): Create
18999         and return a new MonoReflectionGenericParam; don't initialize the
19000         constraints here.
19001         (mono_reflection_initialize_generic_parameter): New public method;
19002         initializes the constraints and creates the `param->pklass'.
19003
19004 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * reflection.h reflection.c: Use the new fields 'num_types', 
19007         'num_fields' and 'num_methods' to track the number of types etc.
19008
19009         * verify.c (check_corlib): Check corlib version number.
19010
19011 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
19012
19013         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
19014         function works on all methods.
19015
19016 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19017
19018         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
19019         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
19020         the custom_type_info flag of the transparent proxy.
19021         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
19022         objects that supports IRemotingTypeInfo.
19023         * object.h: Added custom_type_info field in transparent proxy.
19024
19025 2003-12-06  Martin Baulig  <martin@ximian.com>
19026
19027         * class.c (mono_class_create_from_generic): Removed.
19028         (mono_class_from_generic): Check `ginst->klass' before doing
19029         anything else.  This is important to fully support "recursive"
19030         generic types.
19031
19032         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
19033         empty `generic_inst->klass' before doing anything else.
19034
19035 2003-12-06  Dick Porter  <dick@ximian.com>
19036
19037         * verify.c: 
19038         * object.h:
19039         * icall.c:
19040         * locales.c: Use C structs to access class fields.  Don't do a
19041         conversion between MonoString and UChar because both are
19042         platform-endian UTF-16.  Compare now takes startindex and count
19043         parameters.  Add a char overload for IndexOf.  Speed up the
19044         invariant string IndexOf.
19045
19046 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
19047
19048         * Makefile.am (monosn_LDADD): Fix parallel build.
19049
19050 2003-12-04  Martin Baulig  <martin@ximian.com>
19051
19052         * icall.c
19053         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19054         (ves_icall_Type_make_array_type): New interncall.       
19055
19056 2003-12-04  Martin Baulig  <martin@ximian.com>
19057
19058         * locales.c: also change it in the !HAVE_ICU case.
19059
19060 2003-12-04  Dick Porter  <dick@ximian.com>
19061
19062         * icall.c:
19063         * locales.c: construct_compareinfo is now in CompareInfo, not
19064         CultureInfo.
19065
19066 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * image.c (mono_image_load_file_for_image): Cache loaded images in the
19069         image->files array.
19070
19071         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
19072         table as well.
19073
19074         * assembly.c (mono_assembly_load_references): Only load references
19075         once.
19076
19077         * class.c (mono_class_from_name): Avoid linear search of the 
19078         EXPORTEDTYPE table.
19079
19080         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
19081
19082 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19083
19084         * image.h (MonoImage): Add 'field_cache' field.
19085
19086         * loader.c (mono_field_from_token): Cache field lookups.
19087         
19088         * reflection.c (mono_module_get_object): Fix name property.
19089
19090         * icall.c (ves_icall_get_enum_info): Update after changes to 
19091         mono_metadata_get_constant_index ().
19092
19093         * icall.c: Get rid of get_type_info icall, use a separate icall for
19094         each type property to avoid needless memory allocations. Fixes #51514.
19095
19096         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
19097         to avoid needless binary searches.
19098
19099         * class.c (class_compute_field_layout): Move the initialization of
19100         field->def_value to mono_class_vtable ().
19101
19102         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
19103         non-corlib types.
19104
19105         * object.c (mono_object_allocate): Make it inline.
19106
19107         * object.c (mono_object_allocate_spec): Make it inline.
19108         
19109 2003-12-02  Dick Porter  <dick@ximian.com>
19110
19111         * locales.c (create_NumberFormat): NumberFormatInfo construction.
19112         Patch by Mohammad DAMT (mdamt@cdl2000.com).
19113
19114 2003-12-01  Dick Porter  <dick@ximian.com>
19115
19116         * threads.c: Fix signature and call in CreateMutex and
19117         CreateEvent.
19118
19119 2003-12-01  Dick Porter  <dick@ximian.com>
19120
19121         * icall.c: 
19122         * locales.c: Implement string compares and searching
19123
19124         * object.h: Add extra Thread field
19125
19126 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
19127
19128         * reflection.c (fixup_method): Add support for MonoCMethod.
19129
19130 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
19133
19134         * reflection.c (assembly_name_to_aname): Allow extra characters in
19135         assembly names. Fixes #51468.
19136
19137 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * exception.c (mono_exception_from_name_domain): New helper function.
19140
19141         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
19142         exception object in the correct domain.
19143
19144         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
19145         formatting + make a copy a the input data.
19146
19147         * loader.c (mono_get_method_from_token): Methods which contain
19148         native code do not have entries in the ImplMap.
19149
19150         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
19151         Thanks to Gonzalo for spotting this.
19152         
19153         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
19154         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
19155
19156         * assembly.h (mono_assembly_load_from): Split the second part of 
19157         assembly loading into a new public function.
19158
19159         * exception.h (mono_get_exception_bad_image_format): New function.
19160
19161 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19164         Enumerate all modules inside a dynamic assembly. Fixes #51293.
19165         
19166         * icall.c: Add new icall for creating dynamic methods.
19167
19168         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
19169
19170         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
19171
19172         * reflection.c (mono_reflection_create_dynamic_method): New icall to
19173         create a dynamic method.
19174
19175         * reflection.c (resolve_object): New helper function.
19176
19177         * reflection.c: Generalize ReflectionMethodBuilder and the functions
19178         which manipulate it so they can also work on dynamic methods.
19179
19180         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
19181         creating the MonoReflectionMethodAux structure if it is not needed.
19182         
19183         * reflection.h verify.c: Update after changes to object layout.
19184
19185         * reflection.c (method_builder_encode_signature): Fix compilation on
19186         gcc 2.95.x.
19187
19188 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
19189
19190         * appdomain.h: Added support for context static fields. Added static_data
19191           field to MonoAppContext and renamed thread_static_fields to a more
19192           generic special_static_fields in MonoAppDomain, since it can now contain
19193           context static fields.
19194         * domain.c: Updated hashtable name.
19195         * object.c: Replaced field_is_thread_static() for a more generic
19196           field_is_special_static() which also checks for context static attribute.
19197           In mono_class_vtable(), added support for static context fields.
19198         * threads.c: Changed methods that manage thread static fields to more
19199           generic methods so they can be reused both for thread and context static
19200           data.
19201         * threads.h: Declared some new methods.
19202
19203 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
19204
19205         * reflection.h: Update after changes to the managed types.
19206
19207         * reflection.c (encode_custom_modifiers): New helper function.
19208
19209         * reflection.c (method_encode_signature): Emit custom modifiers.
19210
19211         * reflection.c (field_encode_signature): Emit custom modifiers.
19212
19213 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
19216
19217         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
19218         implementation.
19219
19220         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
19221         icall.
19222
19223         * object.c (mono_field_get_value_object): New function.
19224
19225         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
19226         specific.
19227
19228 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
19231         return a preallocated out-of-memory exception instance.
19232
19233         * object.c (out_of_memory): Use the new function.
19234
19235         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
19236         flag is before the custom modifiers. Fixes #49802.
19237
19238 2003-11-16  Martin Baulig  <martin@ximian.com>
19239
19240         * class.c (mono_class_is_open_constructed_type): Implemented the
19241         MONO_TYPE_GENERICINST case.
19242
19243 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19244
19245         * assembly.c (mono_assembly_fill_assembly_name): New function to
19246         fill out the MonoAssemblyName structure.
19247         (mono_assembly_open): Use the new function.
19248
19249         * icall.c (fill_reflection_assembly_name): New helper function.
19250
19251         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
19252         new function.
19253
19254         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
19255
19256 2003-11-15  Martin Baulig  <martin@ximian.com>
19257
19258         * class.c (mono_class_is_open_constructed_type): New public
19259         function; checks whether a type is an open constructed type,
19260         ie. whether it still contains type parameters.
19261         (mono_class_inflate_generic_type): If we're a type parameter and
19262         the inflated type is also a MONO_TYPE_(M)VAR, return the original
19263         type.
19264
19265         * class.h (MonoGenericInst): Added `guint32 is_open'.
19266
19267         * loader.c (method_from_methodspec): Check whether we're an open
19268         or closed constructed type and set `ginst->is_open'.
19269
19270         * reflection.c (mono_reflection_bind_generic_parameters): Check
19271         whether we're an open or closed constructed type and set
19272         `ginst->is_open'.
19273         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
19274         from open constructed types.
19275
19276 2003-11-15  Martin Baulig  <martin@ximian.com>
19277
19278         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19279         a generic instance (instead of a generic type declaration) with
19280         unbound generic parameters, bind them to our actual types.
19281
19282 2003-11-14  Martin Baulig  <martin@ximian.com>
19283
19284         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
19285
19286         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19287         an interface type, populate `res->interfaces' with instantiated
19288         versions of all the interfaces we inherit.
19289
19290 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
19291
19292         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
19293         when MONO_PATH is set but doesn't contain the install dir.
19294
19295 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19296
19297         * icall.c:
19298         (ves_icall_Type_GetInterfaces): don't return an interface twice when
19299         it's also implemented in base classes. Fixes bug #50927.
19300
19301 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
19304         if this method is called from a finalizer. Fixes #50913.
19305
19306 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
19307
19308         * threads.c: Implement VolatileRead/VolatileWrite
19309
19310         * icall.c: Add new icalls for VolatileRead/VolatileWrite
19311
19312 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
19315         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
19316         2.95.3.
19317
19318         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
19319         from Peter Ross (pro@missioncriticalit.com).
19320         
19321 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
19322
19323         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
19324
19325 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * assembly.c (mono_assembly_load_references): Disable check because it
19328         triggers on older corlibs which lots of people have.
19329
19330 2003-11-12  Jackson Harper  <jackson@ximian.com>
19331
19332         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
19333         load corlib.dll if mscorlib.dll is not found.
19334         * assembly.h: Remove corlib name define.
19335         * class.c:
19336         * domain.c:
19337         * image.c: Change corlib name to mscorlib.
19338         
19339 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
19342
19343 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
19344
19345         * appdomain.h: Added loader_optimization here to sync with the C#
19346         code, and add disallow_binding_redirects field.
19347
19348 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
19351
19352         * reflection.c (mono_image_build_metadata): Fix crash on modules
19353         with no types.
19354
19355         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
19356
19357         * icall.c (ves_icall_get_method_info): Return callingConvention as
19358         well.
19359
19360         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
19361         namespaces from the EXPORTEDTYPE table as well.
19362
19363         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
19364         from all modules inside the assembly.
19365         
19366 2003-11-11  Martin Baulig  <martin@ximian.com>
19367
19368         * reflection.c (mono_reflection_bind_generic_parameters): Make
19369         this work for interfaces.
19370
19371 2003-11-11  Martin Baulig  <martin@ximian.com>
19372
19373         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
19374
19375 2003-11-11  Martin Baulig  <martin@ximian.com>
19376
19377         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
19378         "MonoInflatedMethod" and "MonoInflatedCtor".
19379
19380 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * reflection.c (resolution_scope_from_image): Use the assembly table
19383         from the manifest module, since other modules don't have it.
19384
19385         * debug-helpers.c (mono_type_full_name): New helper function.
19386
19387         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
19388
19389         * image.c (mono_image_load_file_for_image): New public function which
19390         is a replacement for the load_file_for_image in class.c.
19391
19392         * assembly.c (mono_assembly_load_module): A wrapper for the function
19393         above which does assembly association and reference loading too.
19394
19395         * class.c (mono_class_from_name): Call mono_assembly_load_module.
19396
19397 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19398
19399         * appdomain.c: not all of the attributes for the full assembly name
19400         are required and the order doesn't matter. Fixes bug #50787.
19401
19402 2003-11-10  Dick Porter  <dick@ximian.com>
19403
19404         * locales.c: Use platform-endian UTF16
19405
19406 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19409         
19410 2003-11-10  Martin Baulig  <martin@ximian.com>
19411
19412         * metadata.c
19413         (mono_metadata_load_generic_params): Make this actually work.
19414
19415         * reflection.c (mono_reflection_bind_generic_parameters): If our
19416         parent is a generic instance, pass all the `types' to it, no
19417         matter whether it has the same number of type parameters or not.
19418
19419 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19422
19423         * assembly.c (mono_assembly_load_references): Move the image<->assembly
19424         assignment code to this function so it gets called recursively for all
19425         modules.
19426
19427         * image.c (load_modules): Remove the assembly assignment since it is
19428         now done by mono_assembly_load_references.
19429         
19430         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19431         Add 'module' argument.
19432         (mono_module_get_types): New helper function.
19433         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
19434
19435 2003-11-08  Martin Baulig  <martin@ximian.com>
19436
19437         * class.c (mono_class_inflate_generic_method): Interface method
19438         don't have a header.
19439
19440         * reflection.c (mono_image_get_methodspec_token): Take an
19441         additional `MonoGenericInst *' argument instead of reading it from
19442         the header; this is necessary to support interfaces.
19443         (mono_image_create_token): Pass the `MonoGenericInst *' from the
19444         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
19445         (inflated_method_get_object): Take an additional `MonoGenericInst *'
19446         argument.
19447
19448         * reflection.h (MonoReflectionInflatedMethod): Added
19449         `MonoGenericInst *ginst'.
19450
19451 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
19454
19455 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
19456
19457         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
19458
19459 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19460
19461         * reflection.c 
19462         (reflection_methodbuilder_from_method_builder):
19463         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
19464         initialize a ReflectionMethodBuilder structure.
19465         (mono_image_get_methodbuilder_token):
19466         (mono_image_get_ctorbuilder_token): New functions to emit memberref
19467         tokens which point to types in another module inside the same assembly.
19468
19469         * reflection.c: Use the new helper functions.
19470         
19471         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
19472
19473         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
19474         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
19475
19476         * reflection.c (resolution_scope_from_image): Emit a moduleref if
19477         neccesary.
19478
19479         * reflection.c (mono_image_build_metadata): Emit metadata only for the
19480         current module. Emit the manifest only for the main module.
19481
19482         * reflection.c (mono_image_create_token): Add assertion when a 
19483         memberref needs to be created.
19484
19485         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
19486
19487         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
19488         larger buffer for the custom attribute blob. Fixes #50637.
19489         
19490 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19491
19492         * threadpool.c: notify listener on async processing handles after
19493         invoking the async callback. Thanks to Zoltan.
19494
19495 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
19498         avoid code duplication.
19499
19500         * reflection.h (MonoDynamicImage): New type which is currently unused,
19501         but will be used through the ref.emit code in place of 
19502         MonoDynamicAssembly.
19503
19504         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19505         object layout.
19506
19507         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
19508         a MonoDynamicImage instead of just a MonoImage.
19509         
19510         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
19511         icalls to ModuleBuilder but keep their semantics, so they will work
19512         with moduleb->assemblyb. This will change later.
19513         
19514 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19517         object layout.
19518
19519         * reflection.c (mono_image_build_metadata): Avoid creation of a default
19520         main module, since it is now done by the managed code.
19521
19522 2003-11-03  Martin Baulig  <martin@ximian.com>
19523
19524         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
19525         `ginst->klass' here.
19526         (method_encode_methodspec): Don't use the `ginst->generic_method's
19527         klass if it's a generic instance, use `ginst->klass' in this case.
19528
19529 2003-11-03  Martin Baulig  <martin@ximian.com>
19530
19531         * reflection.c (mono_image_get_generic_method_param_info):
19532         Removed, use mono_image_get_generic_param_info() instead.
19533         (mono_image_get_type_info): Write the GenericParam table before
19534         the Method table.  This is neccessary because in the GenericParam
19535         table, type parameters of the class (ie. '!0' etc.) must come
19536         before the ones from its generic methods (ie. '!!0' etc).
19537
19538 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
19541
19542 2003-11-02  Martin Baulig  <martin@ximian.com>
19543
19544         * reflection.c (create_generic_typespec): Take a
19545         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
19546         the generic parameters from it.
19547
19548 2003-11-02  Martin Baulig  <martin@ximian.com>
19549
19550         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
19551         instead of a `MonoClassField *' since we just need the type.
19552         (create_generic_typespec): New static function.  Creates a
19553         TypeSpec token for a generic type declaration.
19554         (mono_image_get_generic_field_token): New static function.
19555         (mono_image_create_token): If we're a FieldBuilder in a generic
19556         type declaration, call mono_image_get_generic_field_token() to get
19557         the token.
19558
19559 2003-11-02  Martin Baulig  <martin@ximian.com>
19560
19561         * reflection.h
19562         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
19563         `MonoReflectionGenericInst *declaring_type' and
19564         `MonoReflectionGenericInst *reflected_type' fields.
19565
19566         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
19567         `MonoReflectionGenericInst *declaring_type' and a
19568         `MonoReflectionGenericInst *reflected_type' argument instead of a
19569         single `MonoReflectionGenericInst *type' one.  Set
19570         `res->declaring_type' and `res->reflected_type' from them.
19571         (mono_reflection_inflate_field): Likewise.      
19572
19573 2003-11-02  Martin Baulig  <martin@ximian.com>
19574
19575         * class.c (mono_class_setup_vtable): Don't store generic methods
19576         in the vtable.  
19577
19578 2003-11-02  Martin Baulig  <martin@ximian.com>
19579
19580         * reflection.h (MonoReflectionGenericInst): Added
19581         `MonoReflectionType *declaring_type'.
19582
19583         * reflection.c (mono_reflection_bind_generic_parameters): Use
19584         `if (tb->parent)' instead of `klass->parent'.
19585
19586 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
19589         with an empty ASSEMBLY table.
19590
19591         * reflection.c (mono_image_build_metadata): Avoid using the same loop
19592         variable in the inner and outer loops.
19593
19594 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * metadata.h (mono_metadata_make_token): Put parentheses around macro
19597         argument.
19598
19599         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
19600         
19601         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
19602         icalls. Instead, do everything in managed code. This is needed since
19603         it is hard to restore the original domain etc. in unmanaged code in the
19604         presence of undeniable exceptions.
19605
19606         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
19607         New icalls to push and pop appdomain refs.
19608
19609 2003-10-31  Martin Baulig  <martin@ximian.com>
19610
19611         * class.c (inflate_generic_type): Renamed to
19612         mono_class_inflate_generic_type() and made it public.
19613
19614         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
19615         New interncall.
19616
19617         * loader.c (mono_field_from_memberref): Also set the retklass for
19618         typespecs.
19619
19620         * fielder.c (mono_image_get_inflated_field_token): New static
19621         method; creates a metadata token for an inflated field.
19622         (mono_image_create_token, fixup_method): Added support for
19623         "MonoInflatedField".
19624         (fieldbuilder_to_mono_class_field): New static function.
19625         (mono_reflection_inflate_field): New public function.
19626
19627         * reflection.h
19628         (MonoReflectionGenericInst): Added `MonoArray *fields'.
19629         (MonoReflectionInflatedField): New typedef.     
19630
19631 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
19632
19633         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
19634         for Solaris and other platforms without s6_addr16
19635
19636 2003-10-30  Martin Baulig  <martin@ximian.com>
19637
19638         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
19639         argument instead of two.
19640         (mono_class_inflate_generic_signature): Likewise.
19641         (inflate_generic_header): Likewise.
19642         (mono_class_inflate_generic_method): Likewise.  In addition, if
19643         `ginst->klass' is set, it becomes the new `method->klass'.
19644
19645         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
19646         field.
19647
19648         * reflection.c (encode_generic_method_sig): Write a 0xa as the
19649         first byte. [FIXME]
19650         (method_encode_methodspec): If we have generic parameters, create
19651         a MethodSpec instead of a MethodRef.
19652         (fixup_method): Added support for "MonoInflatedMethod" and
19653         "MonoInflatedCtor".
19654         (mono_image_create_token): Added support for "MonoInflatedMethod"
19655         and "MonoInflatedCtor".
19656         (inflated_method_get_object): New static function; returns a
19657         managed "System.Reflection.MonoInflatedMethod" object.
19658         (mono_reflection_bind_generic_method_parameters): Return a
19659         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
19660         (mono_reflection_inflate_method_or_ctor): Likewise.
19661         (mono_image_get_generic_method_param_info): Initialize unused
19662         fields to zero.
19663         (mono_image_get_generic_param_info): Likewise.
19664
19665         * reflection.h (MonoReflectionInflatedMethod): New public
19666         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
19667         "S.R.MonoInflatedCtor" classes.
19668
19669         * loader.c (method_from_memberref): If we're a TypeSpec and it
19670         resolves to a generic instance, inflate the method.
19671
19672 2003-10-28  Dick Porter  <dick@ximian.com>
19673
19674         * object.c (mono_runtime_run_main): Convert command-line arguments
19675         into utf8, falling back to the user's locale encoding to do so.
19676
19677 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
19680         at this time.
19681
19682         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
19683
19684         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
19685         up icalls at method definition time. Partially fixes #33569.
19686
19687 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
19688
19689         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
19690         marshalling of arrays. Fixes #50116.
19691
19692         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
19693
19694         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
19695         points to a vtable in the dying appdomain.
19696
19697         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
19698         listeners into unmanaged code inside the lock.
19699
19700         * object.c (mono_class_vtable): Turn off typed allocation in non-root
19701         domains and add some comments.
19702
19703 2003-10-25  Martin Baulig  <martin@ximian.com>
19704
19705         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
19706
19707         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
19708
19709         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
19710         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
19711         currently parsing.  Create the generic class and store it in
19712         `generic_inst->klass' before parsing the type arguments.  This is
19713         required to support "recursive" definitions; see mcs/tests/gen-23.cs
19714         for an example.
19715         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
19716         to support recursive typespec entries.
19717
19718         * class.c (mono_class_setup_parent): If our parent is a generic
19719         instance, we may get called before it has its name set.
19720         (mono_class_from_generic): Splitted into
19721         mono_class_create_from_generic() and mono_class_initialize_generic().
19722
19723 2003-10-25  Martin Baulig  <martin@ximian.com>
19724
19725         * icall.c (ves_icall_Type_BindGenericParameters): Return a
19726         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
19727         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
19728         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
19729
19730         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
19731         (create_typespec): Likewise.
19732         (mono_reflection_bind_generic_parameters): Return a
19733         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
19734         (mono_reflection_inflate_method_or_ctor): New public function.
19735
19736         * reflection.h (MonoReflectionGenericInst): New typedef.        
19737
19738 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
19741         inside the domain lock. Fixes #49993.
19742         
19743         * object.c (mono_class_vtable): When typed allocation is used, 
19744         allocate vtables in the GC heap instead of in the mempool, since the
19745         vtables contain GC descriptors which are used by the collector even
19746         after the domain owning the mempool is unloaded.
19747
19748         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
19749
19750         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
19751         reflect what it does. Also invalidate mempools instead of freeing
19752         them if a define is set.
19753
19754         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
19755         of the appdomain.
19756         
19757         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
19758         hold the finalizable objects in this domain.
19759
19760         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
19761         appdomain.
19762
19763         * appdomain.c (mono_domain_set): New function to set the current
19764         appdomain, but only if it is not being unloaded.
19765
19766         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
19767         appdomain which is being unloaded.
19768         
19769         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
19770         unloading of the root appdomain.
19771
19772         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
19773         icall to execute a method in another appdomain. Intended as a 
19774         replacement for InternalSetDomain, which can confuse the code 
19775         generation in the JIT.
19776
19777         * appdomain.c (mono_domain_is_unloading): New function to determine
19778         whenever an appdomain is unloading.
19779
19780         * appdomain.c (mono_domain_unload): New function to correctly unload
19781         an appdomain.
19782
19783         * assembly.c (mono_assembly_load_references): Check that an assembly
19784         does not references itself.
19785
19786         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
19787         domain manually, it asks the finalizer thread to do it, then waits for
19788         the result. Also added a timeout.
19789
19790         * icall.c: Register the new icalls.
19791
19792         * threads.h threads.c: Export the mono_gc_stop_world and 
19793         mono_gc_start_world functions.
19794         
19795         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
19796         function to fill out the mempool with 0x2a.
19797
19798 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * reflection.h (MonoReflectionMethodAux): New structure to store
19801         information which is rarely used, thus is not in the MonoMethod
19802         structure.
19803
19804         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
19805         store the aux info.
19806
19807         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
19808         and marshalling info into the aux structure.
19809
19810         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
19811         from the aux structure.
19812
19813         * loader.c (mono_method_get_param_names): Retrieve the param names from
19814         the aux structure.
19815         
19816 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
19817
19818         * exception.h exception.c: Add AppDomainUnloadedException && fix 
19819         warning.
19820
19821 2003-10-21  Dick Porter  <dick@ximian.com>
19822
19823         * socket-io.c
19824         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
19825         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
19826
19827 2003-10-21  Martin Baulig  <martin@ximian.com>
19828
19829         * reflection.c (mono_reflection_bind_generic_parameters):
19830         `klass->parent' is NULL for interfaces.
19831
19832 2003-10-21  Martin Baulig  <martin@ximian.com>
19833
19834         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19835
19836 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
19837
19838         * exception.c (mono_exception_from_name_msg): New helper function for
19839         creating exceptions and initializing their message field.
19840
19841         * exception.c: Simplify functions using the new helper.
19842
19843         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
19844         New function.
19845
19846         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
19847         mono_raise_exception, since otherwise gcc doesn't generate the function
19848         epilog for raise_exception, confusing the stack unwinding in the JIT.
19849         Fixes #45043.
19850
19851         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
19852         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
19853         Fixes #49499.
19854
19855 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19856
19857         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
19858         utf8.
19859
19860 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
19861
19862         * icall.c: Removed GetUninitializedObject method because
19863           AllocateUninitializedClassInstance does the same.
19864
19865 2003-10-18  Martin Baulig  <martin@ximian.com>
19866
19867         * class.c (inflate_generic_signature): Renamed to
19868         mono_class_inflate_generic_signature() and made it public.
19869         (my_mono_class_from_generic_parameter): New static function; if we
19870         don't already have the generic parameter's MonoClass, create a
19871         very simple one which is just used internally in the runtime and
19872         not passed back to managed code.
19873
19874         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
19875
19876         * metadata.h (MonoMethodSignature): Moved the
19877         `MonoGenericParam *gen_params' to the MonoMethodHeader.
19878         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
19879
19880         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
19881         ves_icall_MonoMethod_GetGenericArguments(); this is now an
19882         interncall on the MonoMethod class, not on MethodInfo.
19883         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
19884         calling mono_reflection_bind_generic_method_parameters() directly.
19885
19886         * loader.c (mono_method_get_signature): If this is a MethodSpec;
19887         return the already computed `method->signature'.
19888         (method_from_methodspec): New static function to load a method
19889         from a MethodSpec entry.
19890         (mono_get_method_from_token): Call the new method_from_methodspec()
19891         for MethodSpec tokens.  
19892         (mono_get_method_from_token): If we're a generic method, load the
19893         type parameters.
19894
19895         * reflection.c (mono_image_get_memberref_token): Allow
19896         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
19897         table.
19898         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
19899         (mono_image_create_token): First check whether it's a generic
19900         method (so we'd need to create a MethodSpec), then do the other
19901         two alternatives.
19902         (mono_reflection_bind_generic_method_parameters): Return a
19903         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
19904         called directly from the interncall.
19905
19906 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * reflection.c (load_public_key): Move loading of the public key
19909         into managed code.
19910
19911         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
19912
19913         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
19914         fields.
19915
19916         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
19917         culture, hash_alg and public_key. Fixes #49555.
19918
19919 2003-10-17  Martin Baulig  <martin@ximian.com>
19920
19921         * class.h (MonoGenericInst): Moved this declaration here and added
19922         `MonoMethod *generic_method'.
19923
19924         * icall.c
19925         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
19926         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
19927
19928         * metadata.c (mono_metadata_type_equal): Two types of
19929         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
19930         index; ie. don't compare the address of the `MonoGenericParam'
19931         structure.
19932         (mono_metadata_load_generic_params): Removed the `MonoMethod
19933         *method' argument.
19934
19935         * metadata.h (MonoGenericInst): Moved declaration to class.h.
19936         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
19937
19938         * reflection.c (method_encode_signature): Encode the number of
19939         generic parameters.
19940         (encode_generic_method_sig): New static function.
19941         (method_encode_methodspec): New static function; creates an entry
19942         in the MethodSpec table for a generic method.
19943         (mono_image_get_methodspec_token): New static function.
19944         (mono_image_create_token): Call mono_image_get_methodspec_token()
19945         for generic methods.
19946         (mono_reflection_bind_generic_method_parameters): New public
19947         function.  Instantiates a generic method.
19948
19949 2003-10-16  Martin Baulig  <martin@ximian.com>
19950
19951         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
19952         *gen_params' here from MonoMethodHeader.
19953
19954         * metadata.c (mono_metadata_parse_method_signature): If we have
19955         generic parameters, initialize `method->gen_params' and then set
19956         the correct `type->data.generic_param' in all the parameters.
19957
19958 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * threads.c (mono_threads_get_default_stacksize): New function to 
19961         return the default stacksize.
19962
19963         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
19964         termination of the finalizer thread, since the previous method had
19965         race conditions. Fixes #49628.
19966
19967         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
19968         as for the other managed threads.
19969
19970 2003-10-16  Martin Baulig  <martin@ximian.com>
19971
19972         * class.c (inflate_generic_signature): Copy `generic_param_count'
19973         and `gen_params'.
19974
19975         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
19976         New interncall.
19977
19978         * metadata.c (mono_metadata_parse_method_signature): Actually set
19979         the `method->generic_param_count' here.
19980         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
19981
19982 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19983
19984         * object.h: Add a new field to TypedRef to simplify the implementation
19985         of the REFANY opcodes in the JIT.
19986
19987         * icall.c: Make use of the new field.
19988
19989         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
19990         dynamically.
19991
19992 2003-10-15  Martin Baulig  <martin@ximian.com>
19993
19994         * class.c (mono_class_from_gen_param): Renamed to
19995         mono_class_from_generic_parameter() and moved most of the
19996         functionality from mono_reflection_define_generic_parameter()
19997         here; ie. we create a "real" class here.
19998         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
19999         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
20000         previously been called.
20001
20002         * class.h (MonoGenericParam): Moved the declaration of this struct
20003         here from metadata.h and added `MonoMethod *method'.
20004
20005         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
20006         interncall.
20007
20008         * loader.c (mono_get_method_from_token): If we have any generic
20009         parameters, call mono_metadata_load_generic_params() to read them
20010         from the MONO_TABLE_GENERICPAR.
20011
20012         * metadata.c (mono_metadata_load_generic_params): Added
20013         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
20014
20015         * metadata.h (MonoMethodSignature): Replaced
20016         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
20017         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
20018
20019         * reflection.c (mono_reflection_define_generic_parameter): Moved
20020         most of the functionality into the new
20021         mono_class_from_generic_parameter(); set the `method' field if
20022         we're a method parameter.       
20023
20024 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
20025
20026         * marshal.c (emit_struct_conv): if native size is 0
20027         emit no code.
20028
20029 2003-10-14  Martin Baulig  <martin@ximian.com>
20030
20031         * icall.c: The generics API has changed in the spec since it was
20032         added to System.Type; these modifications make it match the spec
20033         again.
20034         (ves_icall_Type_GetGenericParameters): Renamed to
20035         `ves_icall_Type_GetGenericArguments'.
20036         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
20037         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
20038         `ves_icall_MonoType_get_HasGenericArguments'.
20039         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
20040         `ves_icall_MonoType_get_IsGenericParameter'.
20041         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
20042         this is no interncall anymore.
20043         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
20044         `ves_icall_TypeBuilder_get_IsGenericParameter'.
20045
20046 2003-10-14  Martin Baulig  <martin@ximian.com>
20047
20048         * reflection.c (mono_reflection_bind_generic_parameters): Also
20049         inflate generic methods if we're reading the class from IL.
20050
20051 2003-10-13  Martin Baulig  <martin@ximian.com>
20052
20053         * reflection.c (mono_reflection_define_generic_parameter): This
20054         method isn't called directly from the icall anymore; take a
20055         `MonoReflectionAssemblyBuilder *' so we can use this for type and
20056         method generic parameters.
20057         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
20058         (method_builder_encode_signature): Encode generic parameters.
20059         (mono_image_get_method_info): Write generic params to the
20060         MONO_TABLE_GENERICPARAM table.
20061
20062         * reflection.h (MonoReflectionMethodBuilder): Added
20063         `MonoArray *generic_params'.
20064
20065         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
20066
20067         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
20068         wrapper for mono_reflection_define_generic_parameter().
20069         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
20070
20071 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * marshal.h: Add missing function to fix build.
20074
20075         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
20076         the SetLastError pinvoke attribute.
20077
20078         * marshal.c (mono_marshal_set_last_error): New helper function called
20079         by the generated code.
20080         
20081         * marshal.c (mono_mb_emit_branch): New helper function.
20082
20083         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
20084
20085         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20086         classes as parameters and return values of delegates. Fixes #29256. 
20087
20088 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
20089
20090         * locales.c: use gint32 in non HAVE_ICU case
20091
20092 2003-10-11  Martin Baulig  <martin@ximian.com>
20093
20094         * mono-debug.c (mono_debug_add_method): Added a workaround for
20095         bug #48591.
20096
20097 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
20100         delegates passed to native code must use the STDCALL calling 
20101         convention. Fixes #35987.
20102
20103 2003-10-10  Martin Baulig  <martin@ximian.com>
20104
20105         * class.c (inflate_generic_type): If we're inflating for a generic
20106         type instance (and not for a generic method), return
20107         MONO_TYPE_MVAR unchanged.
20108
20109 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20110
20111         * string-icalls.c: Join ignores null strings in the source array.
20112         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
20113         * threads.c: GetAvailableTheads is slightly more accurate.
20114
20115 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
20116
20117         * threads.h threads.c : add mono_threads_set_default_stacksize
20118         and pass default to CreateThread calls.
20119
20120 2003-10-09  Dick Porter  <dick@ximian.com>
20121
20122         * icall.c:
20123         * locales.h:
20124         * locales.c: Internal calls for constructing CultureInfo and
20125         related objects from libicu (if its available.)
20126
20127 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20128
20129         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
20130
20131 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20132
20133         * threadpool.c: added an argument to async_invoke_thread that is the
20134         item to process, pass the MonoAsyncResult to the thread start function
20135         when creating a new thread. This way we don't need to acquire any lock
20136         when we're creating a new thread. Readded a semaphore for faster
20137         response times (instead of that Sleep i added).
20138
20139 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
20140
20141         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
20142         get daylight change dates better on Windows, fix handling
20143         of platforms without tm_gmtoff.
20144
20145 2003-10-06  Martin Baulig  <martin@ximian.com>
20146
20147         * class.c (inflate_generic_method): Renamed to
20148         mono_class_inflate_generic_method() and made public.
20149         (mono_class_init): Don't inflate the generic methods here.
20150         (mono_class_from_generic): Added `gboolean inflate_methods'
20151         argument.  Inflate the methods here.
20152
20153         * loader.c (mono_method_get_param_names): Ignore instances of
20154         generic types for the moment.
20155
20156         * reflection.c (fixup_method): Added support for inflated methods.
20157         (mono_image_create_token): Use mono_image_get_methodref_token()
20158         for inflated methods.
20159         (mono_custom_attrs_from_param): Ignore instances of generic types
20160         for the moment.
20161         (mono_reflection_bind_generic_parameters): New public function.
20162         Moved all the functionality from
20163         ves_icall_Type_BindGenericParameters() here and added support for
20164         dynamic types.
20165         (mono_reflection_define_generic_parameter): Initialize
20166         `klass->methods' here.
20167
20168         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
20169         functionality into mono_reflection_define_generic_parameter().
20170         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
20171         TypeBuilder, return that TypeBuilder.
20172
20173 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20174
20175         * appdomain.c: removed mono_delegate_semaphore.
20176
20177         * threadpool.c:
20178         (mono_thread_pool_add): moved hash table creation inside and the thread 
20179         creation outside of the critical region.
20180         (mono_thread_pool_finish): removed obsolete code.
20181         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
20182         continue or exit the thread depending on the queue.
20183
20184 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
20185
20186         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
20187         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
20188         handle more bool marshalling options
20189
20190 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
20191
20192         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
20193         arrays of structs. Also add a more descriptive error message when
20194         a structure member is marshalled as LPArray.
20195
20196 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20199         marshalling arrays of complex types. Fixes #29098. Also remove an
20200         usused and incomplete function.
20201
20202 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20203
20204         * gc.c: report heap_size - free_bytes as total memory allocated
20205         (bug#49362).
20206
20207 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
20210         fix timezone handling problems on Windows.
20211         
20212         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
20213         asserts when the year is outside the range handled by ms the functions.
20214
20215         * class.c (setup_interface_offsets): If the class is an interface,
20216         fill out its interface_offsets slot.
20217
20218 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20219
20220         * threadpool.c: mark threadpool threads as background.
20221
20222 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
20223
20224         * decimal.c - define DECINLINE to nothing if not using GCC
20225
20226 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * assembly.c: More refcount fixes.
20229
20230 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20231
20232         * string-icalls.c: if we're not trimming, return the same string.
20233         When not splitting, don't create a new string.
20234
20235 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20236
20237         * image.c:
20238         (mono_image_open): increment the ref_count inside the critical section.
20239
20240 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * image.c (mono_image_open): Fix reference counting bug.
20243
20244 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
20245
20246         * marshal.c (mono_marshal_type_size) struct alignment changed for 
20247         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
20248         64bits. Avoid leak in mono_marshal_get_native_wrapper when
20249         mono_lookup_pinvoke_call throws.        
20250
20251 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20252
20253         * reflection.c (mono_reflection_parse_type): Fix #49114.
20254
20255         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
20256         temporary workaround for cygwin header problem.
20257
20258         * object.c (mono_object_isinst): Synchronize this with the code
20259         generated by the JIT for casts.
20260
20261 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20262
20263         * reflection.c (encode_type): Fix #38332.
20264
20265 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20266
20267         * marshal.c (mono_marshal_method_from_wrapper): New function to return
20268         the original method from the wrapper method.
20269
20270 2003-09-25  Martin Baulig  <martin@ximian.com>
20271
20272         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
20273         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
20274         (ves_icall_Type_get_IsGenericInstance): New interncall.
20275
20276 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
20277
20278         * object.c: fix cast warning in big endian code.
20279
20280 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
20281
20282         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
20283         
20284 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20285
20286         * assembly.c: don't call check_env from mono_assembly_load. It's
20287         already done once in mono_assemblies_init and may cause headaches when
20288         multiple threads are loading assemblies.
20289
20290 2003-09-19  Martin Baulig  <martin@ximian.com>
20291
20292         * reflection.c (mono_reflection_define_generic_parameter): Don't
20293         allocate `klass->methods', set `klass->flags' to
20294         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
20295
20296 2003-09-18  Martin Baulig  <martin@ximian.com>
20297
20298         * class.c (mono_class_init): Don't create `class->methods' if it's
20299         already initialized.
20300
20301         * metadata.c (mono_metadata_load_generic_params): Make this
20302         actually work.
20303
20304         * reflection.c (mono_reflection_define_generic_parameter): Set
20305         parent class and interfaces from the constraints.
20306
20307         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
20308         to keep this struct in sync with the declaration in TypeBuilder.cs.
20309
20310 2003-09-17  Martin Baulig  <martin@ximian.com>
20311
20312         * metadata.h (MonoType): Replaced the data's `int type_param'
20313         field with `MonoGenericParam *generic_param'.
20314         (MonoGenericParam): Added `MonoClass *klass'.
20315
20316         * class.c (mono_class_from_gen_param): Removed the
20317         `MonoImage *image' and `int type_num' arguments.
20318
20319         * metadata.c (mono_metadata_parse_generic_param): New static
20320         method; creates a MonoGenericParam which just contains the index.
20321         (do_mono_metadata_parse_type): Call
20322         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
20323         MONO_TYPE_MVAR.
20324
20325         * reflection.c (mono_image_typedef_or_ref): Generic type
20326         parameters may be in the same assembly, but never use a typedef
20327         for them.
20328         (mono_reflection_define_generic_parameter): We're now creating a
20329         "real" class for the type parameter; it's now safe to call
20330         mono_class_from_mono_type() on the class'es type, it'll do the
20331         right thing.
20332
20333 2003-09-16  Martin Baulig  <martin@ximian.com>
20334
20335         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
20336         `symfile->range_entry_size' and `symfile->class_entry_size' here;
20337         the `symfile' data structure must be fully initialized before it
20338         gets added to the table.
20339
20340 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20341
20342         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
20343
20344         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
20345         class init trampolines.
20346
20347 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20348
20349         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
20350         to the built-in profiler to turn off time and allocation profiling
20351         respectively.
20352
20353 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
20356         g_direct_equal.
20357
20358         * debug-helpers.c (mono_method_full_name): Print the wrapper type
20359         in human readable form.
20360
20361 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * reflection.c icall.c: Fixed warnings.
20364
20365         * image.c (load_class_names): Use a temporary hash table to hold the
20366         namespaces in order to avoid doing many string comparisons.
20367
20368         * image.h: Fix typo.
20369
20370         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
20371         Pass NULL instead of g_direct_equal to the GHashTable constructor 
20372         since the NULL case is short-circuited inside g_hash_table_lookup, 
20373         leading to better performance.  
20374
20375         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
20376         obtain the first custom attribute for a given index. Depends on the
20377         CustomAttribute table being sorted by the parent field.
20378
20379         * reflection.c (mono_custom_attrs_from_index): Use the new function 
20380         for better performance.
20381
20382 2003-09-07  Martin Baulig  <martin@ximian.com>
20383
20384         * class.c (mono_class_init): If we're a generic instance, inflate
20385         all our methods instead of loading them from the image.
20386         (mono_class_from_generic): Set `class->methods = gklass->methods'.
20387
20388 2003-09-07  Martin Baulig  <martin@ximian.com>
20389
20390         * mono-debug-debugger.c: Added support for constructors.
20391
20392 2003-09-06  Martin Baulig  <martin@ximian.com>
20393
20394         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
20395         New interncall.
20396
20397         * reflection.c (mono_reflection_setup_generic_class): Call
20398         ensure_runtime_vtable() to create the vtable.
20399
20400 2003-09-05  Martin Baulig  <martin@ximian.com>
20401
20402         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
20403         MONO_TYPE_MVAR.
20404
20405 2003-09-04  Martin Baulig  <martin@ximian.com>
20406
20407         * reflection.c (mono_reflection_define_generic_parameter): Generic
20408         parameters start with zero.
20409
20410 2003-09-04  Martin Baulig  <martin@ximian.com>
20411
20412         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20413
20414         * reflection.h (MonoReflectionGenericParam): New typedef.
20415         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
20416         the generic parameters from the managed TypeBuilder.
20417
20418         * reflection.c (mono_reflection_define_generic_parameter): New function.
20419         (mono_reflection_create_runtime_class): Encode generic parameters.
20420         (mono_reflection_setup_generic_class): New function; this is
20421         called after adding adding all generic params to the TypeBuilder.
20422         (encode_type): Added MONO_TYPE_VAR.
20423
20424 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * class.h class.c (mono_class_needs_cctor_run): Moved this method
20427         here from the JIT.
20428
20429         * assembly.h assembly.c: Moved the AOT loading code into an assembly
20430         load hook.
20431
20432 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * reflection.h reflection.c class.h class.c: Delete duplicate 
20435         definition of mono_type_get_name () from reflection.c and export the
20436         one in class.c.
20437
20438         * class.c: Class loading fixes from Bernie Solomon 
20439         (bernard@ugsolutions.com).
20440
20441         * reflection.c: Endianness fixes from Bernie Solomon 
20442         (bernard@ugsolutions.com).
20443         
20444 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * assembly.h assembly.c: Define a file format version for AOT
20447         libraries.
20448         
20449         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
20450
20451         * appdomain.h (MonoJitInfo): New field to determine whenever the
20452         code is domain neutral.
20453         
20454 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
20455
20456         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
20457
20458 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
20461         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
20462         Avoid caching the result since strings must be domain specific. Fixes
20463         #48050.
20464
20465 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20466
20467         * marshal.c (mono_marshal_init): Make this callable multiple times
20468         since it is hard to find a correct place to call it.
20469
20470         * object.c (mono_runtime_class_init): Execute static constructors in
20471         the correct appdomain.
20472
20473         * image.c (build_guid_table): Handle the case when multiple images have
20474         the same GUID.
20475
20476 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20477
20478         * icall.c: added a couple of icalls for System.Web.
20479
20480 2003-08-28  Martin Baulig  <martin@ximian.com>
20481
20482         * icall.c (ves_icall_Type_BindGenericParameters): Use
20483         `klass->generic_inst' instead of `&klass->byval_arg' in the
20484         mono_type_get_object() call.  The returned type must be
20485         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
20486
20487 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20488
20489         * NOTES: New file.
20490
20491         * object.c (mono_class_proxy_vtable): Make it thread safe.
20492
20493         * pedump.c: Fix warning.
20494
20495         * object.c appdomain.h: Get rid of metadata_section. 
20496         It is no longer needed and it was causing deadlocks with domain->lock.
20497
20498         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
20499
20500 2003-08-26  Martin Baulig  <martin@ximian.com>
20501
20502         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
20503
20504 2003-08-26  Martin Baulig  <martin@ximian.com>
20505
20506         * pedump.c (main): Call mono_metadata_init(),
20507         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
20508         and mono_loader_init().
20509
20510 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
20511
20512         * loader.h: Add missing include to fix build.
20513
20514         * image.h: mono_image_load_references is no more.
20515
20516         * assembly.c: Reworked assembly loading to make it really thread safe.
20517         After these changes, the assembly returned by mono_assembly_open is
20518         fully initialized, i.e. all its references assemblies are loaded.
20519
20520         * assembly.c (mono_image_load_references): Renamed to 
20521         mono_assembly_load_references, and made private, since clients no
20522         longer need to call it.
20523
20524         * class.c: Removed calls to mono_assembly_load_references, since it was
20525         a source of deadlocks.
20526
20527         * loader.h loader.c class.h class.c: Protect data structures using a 
20528         new lock, the loader lock.
20529
20530         * class.c (mono_class_setup_vtable): Create temporary hash tables and
20531         GPtrArrays only when needed.
20532
20533         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
20534         into empty structures by mcs. Fixes pinvoke7.cs.
20535         
20536         * domain.c (mono_init): Call a new initialization function.
20537
20538         * appdomain.c (mono_runtime_init): Call the new initializer function
20539         of the marshal module.
20540
20541         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
20542         inserted into empty structures by mcs. Fixes pinvoke7.cs.
20543
20544         * marshal.h marshal.c: Added locks around the wrapper caches to make
20545         this module thread safe.
20546
20547         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
20548         this argument. Fixes pinvoke1.exe.
20549
20550 2003-08-25  Lluis Sanchez <lluis@ximian.com>
20551
20552         * object.h: Added call_type field to MonoMethodMessage and the corresponding
20553         enumeration of values. Removed fields to store remote call output values in
20554         MonoAsyncResult. Not needed any more.
20555         * object.c: Initialize call_type and async_result fields in mono_message_init.
20556         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
20557         dispatching the message.
20558         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
20559         async call to finish. To do it use a message with EndInvoke call type.
20560
20561 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20562
20563         * loader.h loader.c (mono_method_hash_marhal_info): New function which
20564         determines whenever a method has marshalling info.
20565
20566 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20567
20568         * assembly.c: fix the build on windows.
20569
20570 2003-08-22 Lluis Sanchez <lluis@ximian.com>
20571
20572         * object.cs: Fixed bug #47785.
20573
20574 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
20575
20576         * string-icalls.c (StringReplace): If their are no occurances of
20577         the old string found return a reference to the supplied
20578         string. This saves some memory and matches MS behavoir.
20579         
20580 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20581
20582         * socket-io.c: fixed compilation for systems that define AF_INET6
20583         and don't define SOL_IP/SOL_IPV6.
20584
20585 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
20586
20587         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
20588         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
20589
20590         * rawbuffer.c rawbuffer.h: Make this module thread safe.
20591
20592         * domain.c: Make this module thread safe.
20593
20594         * domain.c (mono_init): Call new initialization function.
20595
20596         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
20597         reference types too. Fixes #38812.
20598
20599         * image.c (mono_image_init): Fixed warnings.
20600
20601         * class.c (mono_class_from_typeref): Handle assembly load failure
20602         correctly.
20603
20604         * appdomain.c (add_assemblies_to_domain): Handle the case when
20605         the references of an assembly are not yet loaded.
20606
20607         * metadata.c image.c assembly.c: Moved initialization of global
20608         variables to a separate function called at startup since lazy 
20609         initialization of these variables is not thread safe.
20610         
20611         * image.c assembly.c: Made this module thread safe by adding locks in 
20612         the appropriate places.
20613
20614         * domain.c (mono_init): Call the new initialization functions of the
20615         three modules.
20616
20617 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
20618
20619         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
20620           make a direct call. It is proxy's work to make the call asynchronous.
20621           mono_delegate_end_invoke(): If the targe is a proxy, just collect
20622           the return values.
20623         * object.cs: mono_method_call_message_new(): read AsyncResult and
20624           state object from parameters list, if this info is requested.
20625         * object.h: Added fields to store remote call output values in
20626           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
20627
20628 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20629
20630         * object.h: add needed fields to MonoThread.
20631         * threads.c, threads.h: allow registering a function to cleanup data
20632         allocated per thread by the JIT.
20633
20634 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20635
20636         * loader.h: portability fix by Bernie Solomon
20637         * <bernard@ugsolutions.com>.
20638
20639 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
20642         return a MonoArray. This simplifies the code and also ensures that
20643         the cache allways contains an object reference as a value.
20644
20645         * icall.c (ves_icall_get_parameter_info): Simplified using the new
20646         function.
20647
20648 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20649
20650         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
20651         fixes a problem with byte ordering when getting the address family for
20652         a socket.
20653
20654 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
20655
20656         * .cvsignore: Added monosn.
20657
20658         * reflection.h reflection.c loader.c: Added support for parameter
20659         marshalling to dynamically created types. Fixes #47295.
20660
20661 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20662
20663         * rand.c: remove useless warnings.
20664
20665 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20666
20667         * class.c: implemented ldtoken for methods and fieldrefs.
20668
20669 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20670
20671         * threadpool.c: when mono_async_invoke was called, no one took care of
20672         monitoring the queue. So if the method invoked took some time and we
20673         got new async invoke requests after 500 ms (the thread created waited
20674         that long in WaitForSingleObject), the new async invoke was not called
20675         until the previous one finished.
20676
20677         This is fixed now. Thanks to Totte for helping with it.
20678
20679 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20680
20681         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
20682
20683 2003-08-11  Martin Baulig  <martin@ximian.com>
20684
20685         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
20686
20687 2003-08-06  Martin Baulig  <martin@ximian.com>
20688
20689         * mono-debug-debugger.c: Added support for static fields,
20690         properties and methods.
20691
20692 2003-08-06  Martin Baulig  <martin@ximian.com>
20693
20694         * mono-debug-debugger.c: Don't store the MonoString's vtable to
20695         make this work for applications with multiple application domains.
20696
20697 2003-08-04  Martin Baulig  <martin@ximian.com>
20698
20699         * mono-debug-debugger.c: Completely reworked the type support; the
20700         most important thing is that we're now just using one single
20701         `MonoType' instance per type.
20702
20703 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
20704
20705         * mono-endian.h, mono-endian.c, icall.c: Added icall
20706         ves_icall_System_Double_AssertEndianity to assert double word endianity
20707         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
20708
20709 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20710
20711         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
20712         support, icalls and fixes.
20713
20714 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
20715
20716         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
20717         classes that are a punctuation character in .NET is not the same a
20718         g_unichar_ispunct.
20719
20720 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20721
20722         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
20723
20724 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
20725
20726         * icall.c: Add new MemCopy internalcall.
20727         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
20728         Simplified code; It is not necessary to handle all the cases here,
20729         as the C# code takes care of it.  Only handle the case of the name
20730         resource embedded into the assembly.
20731
20732         Changed signature to return the data pointer and the size of the
20733         data. 
20734
20735 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
20736
20737         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
20738         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
20739
20740 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20741
20742         * socket-io.c: ignore EINTR error in select.
20743
20744 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
20745
20746         * class.h, class.c: removed unused subclasses field in MonoClass.
20747
20748 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20749
20750         * icall.c: improve fix of get_base_definition(). If the parent class
20751           doesn't have the mehod, look at the parent of the parent.
20752         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
20753           to check if a parameter is an in or out parameter
20754           (PARAM_ATTRIBUTE_IN is not set by default).
20755           mono_method_return_message_restore(): Use mono_class_value_size to
20756           get the size of a value type. mono_type_stack_size (parameterType)
20757           does not return the correct value if parameterType is byRef.
20758           mono_load_remote_field(), mono_load_remote_field_new(),
20759           mono_store_remote_field(), mono_store_remote_field_new():
20760           raise exception if the remote call returns an exception.
20761
20762 2003-07-28  Martin Baulig  <martin@ximian.com>
20763
20764         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
20765         method.  This is a wrapper around mono_runtime_invoke() which
20766         boxes the instance object if neccessary.
20767
20768 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20769
20770         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
20771         metadata.h, row-indexes.h, verify.c: first cut of generics support.
20772
20773 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20774
20775         * icall.c: disable mcs bug workaround.
20776
20777 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20778
20779         * object.c (mono_runtime_class_init): Take the metadata_section
20780         mutex before obtaining the domain mutex.
20781
20782         * appdomain.h: Added definition of metadata_section mutex here. 
20783
20784         * object.c: define metadata_mutex here.
20785
20786 2003-07-24  Ravi Pratap  <ravi@ximian.com>
20787
20788         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
20789         fixed.
20790
20791 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
20792
20793         * reflection.c: Fix bug #46669
20794
20795 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20796
20797         * exception.c:
20798         * exception.h:
20799         * icall.c:
20800         * object.h: fill in the type name for TypeLoadException.
20801
20802 2003-07-23  Ravi Pratap  <ravi@ximian.com>
20803
20804         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
20805         relationship between TypeBuilders while compiling corlib) and bug
20806         45993 (Array types returned from the runtime while compiling
20807         corlib were from the loaded corlib).
20808
20809 2003-07-22  Martin Baulig  <martin@ximian.com>
20810
20811         * mono-debug-debugger.c: Reworked the type support a bit more;
20812         distinguish between types and classes.
20813
20814 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
20815
20816         * icall.c: add IsArrayImpl icall.
20817
20818 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
20819
20820         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
20821         initializing real_size only once. Also fix bug #46602.
20822
20823 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
20824
20825         * object.c: Renamed mono_metadata_section to metadata_section.
20826
20827 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
20828
20829         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
20830           empty array if the type is an array. Fixed.
20831           ves_icall_MonoMethod_get_base_definition: if the base method
20832           is abstract, get the MethodInfo from the list of methods of
20833           the class.
20834         * reflection.c: ParameterInfo.PositionImpl should be zero-based
20835           and it was 1-based. Fixed in mono_param_get_objects.
20836
20837 2003-07-20  Martin Baulig  <martin@ximian.com>
20838
20839         * mono-debug.h: Set version number to 31.
20840         (mono_debug_init): Added `MonoDomain *' argument.
20841
20842         * mono-debug-debugger.c: Reworked the type support; explicitly
20843         tell the debugger about builtin types; pass the `klass' address to
20844         the debugger.
20845
20846 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
20847
20848         * image.c: Allow new metadata tables to be loaded without a
20849         warning. Also update the warning message to give the new constant value.
20850                 
20851 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20852
20853         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
20854         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
20855         array type representation changes.
20856
20857 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20858
20859         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
20860         on Environment.Exit () call.
20861
20862 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20863
20864         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
20865         requires a matching corlib.
20866
20867 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20868
20869         * Changelog: My editor decided to add a CR to each line. Sorry about that.
20870           Committed again without the CRs.
20871         
20872 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20873
20874         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
20875           getting it from the "this" socket instance. Did not work
20876           if the socket is a subclass of Socket.
20877           Also fixed bug #35371.
20878
20879 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20880
20881         * metadata.c: fixed size for TypedByRef.
20882         * loader.c: when searching for a method, consider the vararg amrker.
20883         * unicode.c, decimal.c: constify some arrays.
20884
20885 2003-07-15  Dick Porter  <dick@ximian.com>
20886
20887         * socket-io.c: Fixed compilation for gcc < 3.2.
20888
20889         Fixed compilation for machines that don't have AF_INET6 (thanks to
20890         Bernie Solomon <bernard@ugsolutions.com> for that part.)
20891
20892         Fixed compile warnings.
20893         
20894         Fixed formatting and line endings.
20895
20896 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
20897
20898         * socket-io.h:
20899         * socket-io.c: Added IPv6 support.
20900
20901 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
20902
20903         * class.c (mono_class_is_assignable_from): New function to implement
20904         the is_assignable_from logic. Used by mono_object_isinst, 
20905         Type::IsAssignableFrom () and the interpreter.
20906
20907         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
20908         Object, even interfaces.
20909         
20910         * object.c (mono_object_isinst): Implement in terms of 
20911         is_assignable_from.
20912
20913         * icall.c (ves_icall_type_is_assignable_from): New icall.
20914
20915 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * domain.c (foreach_domain): fix compiler warning.
20918
20919 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
20920
20921         * image.c (load_metadata_ptrs): use g_strndup because strndup is
20922         not available on all plattforms
20923
20924 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * image.h image.c: Store the metadata version string in MonoImage.
20927         * icall.c: New icall to retrieve the image version.
20928         * reflection.c (create_dynamic_image): Fill in the image version field
20929         * reflection.c (build_compressed_metadata): Use the image version
20930         from the image structure.
20931
20932 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20933
20934         * appdomain.c: modified comment.
20935         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
20936         That will be its last iteration when mono_gc_cleanup is called from
20937         mono_runtime_cleanup and before the domain is unloaded.
20938
20939         Fixes bug #45962.
20940
20941 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
20942
20943         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
20944         attributes.
20945
20946 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20947
20948         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
20949         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
20950         Bernie Solomon <bernard@ugsolutions.com>.
20951
20952 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20953
20954         * object.c, object.h: provide mono_object_new_fast() for faster
20955         allocation in some special cases.
20956
20957 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20958
20959         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
20960         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
20961
20962 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20963
20964         * threadpool.c: fix leaks.
20965
20966 2003-07-01  Dick Porter  <dick@ximian.com>
20967
20968         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
20969         using MonoGHashTables.  Fixes threadpool bug posted to list.
20970
20971 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20972
20973         * image.h, image.c: added support to load an assembly from a byte array.
20974         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
20975         assembly bundle support.
20976
20977 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
20978
20979         * threadpool.c (mono_thread_pool_add): keep a reference to the
20980         AsyncResult to prevent GC
20981
20982 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20983
20984         * class.c: leak fix.
20985
20986 2003-06-25  Dick Porter  <dick@ximian.com>
20987
20988         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
20989         for the async object, the WaitHandle object will close the handle.
20990         Fixes bug 45321.
20991
20992 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20993
20994         * class.c: in mono_array_class_get (), lookup from the hash with the
20995         same type we insert: this works around a bug in
20996         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
20997         lluis. The real fix will have to wait for after the release.
20998
20999 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21000
21001         * icall.c: fix memory leak when getting type members.
21002
21003 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21004
21005         * reflection.c: added more pubtoken special cases.
21006
21007 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21008
21009         * class.c: handle field offset correctly when class size
21010         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
21011
21012 2003-06-20  Martin Baulig  <martin@ximian.com>
21013
21014         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
21015         *image' field.
21016
21017 2003-06-20  Martin Baulig  <martin@ximian.com>
21018
21019         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
21020
21021 2003-06-20  Martin Baulig  <martin@ximian.com>
21022
21023         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
21024         just distinguish between variables in registers and variables at
21025         an offset relative to a register.
21026
21027 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21028
21029         * icall.c: #ifdef out latest changes until mcs is fixed.
21030
21031 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21032
21033         * icall.c: return members in metadata order.
21034
21035 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21036
21037         * icall.c: avoid infinite loop in GetTimeZoneData.
21038
21039 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21040
21041         * icall.c: added Marshal.Prelink/All icalls.
21042
21043 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21044
21045         * object.c, object.h: fix warnings and do some overflow checking
21046         when creating arrays.
21047
21048 2003-06-17  Dick Porter  <dick@ximian.com>
21049
21050         * file-io.h:
21051         * file-io.c: File attributes need to be tweaked slightly when
21052         passed from the managed to the w32 world.
21053
21054 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21055         * profiler.h profiler-private.h profiler.c: Rework last patch
21056         based on suggestion by Paolo.
21057         
21058 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21059
21060         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
21061         instruction level coverage data collection.
21062         * profiler.h profiler.c (: Added new callback function which can be
21063         used by the profiler to limit which functions should have coverage
21064         instrumentation.
21065         * profiler.c (mono_profiler_load): Call g_module_build_path to
21066         generate the file name of the profiler library.
21067
21068 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21069
21070         * profiler.c, profiler.h, profiler-private.h: added basic block 
21071         coverage profiling API.
21072
21073 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * reflection.c (mono_reflection_create_runtime_class): Add support
21076         for events in dynamically generated code.
21077
21078         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
21079         not allocated.
21080
21081 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21082
21083         * icall.c: when getting timezone info, return reasonable values if we
21084         can't get the actual data.
21085
21086 2003-06-14  Dick Porter  <dick@ximian.com>
21087
21088         * threads.c (start_wrapper): Remove the reference to the thread
21089         object in the TLS data, so the thread object can be finalized.
21090         This won't be reached if the thread threw an uncaught exception,
21091         so those thread handles will stay referenced :-( (This is due to
21092         missing support for scanning thread-specific data in the Boehm GC
21093         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
21094
21095 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
21096
21097         * reflection.c: ensure streams and tables are first allocated with
21098         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
21099
21100 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21101
21102         * icall.c: fixed GetElementType for byrefs (bug# 44792).
21103
21104 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * reflection.c (mono_reflection_create_runtime_class): Add support for
21107         properties to dynamically created classes.
21108         * reflection.c: Fix a few places where non-MonoObjects were inserted
21109         into the tokens hashtable.
21110
21111 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21112
21113         * object.c: some support to handle out of memory exceptions.
21114
21115 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
21116
21117         * marshal.c (mono_marshal_get_native_wrapper): support reference
21118         return types
21119
21120 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21121
21122         * object.h, object.c: more portability stuff from Bernie Solomon.
21123         Unexport mono_object_allocate(). Added mono_object_unbox ().
21124         Set exitcode when an unhandled exception is thrown.
21125
21126 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
21127
21128         * marshal.c (mono_marshal_get_native_wrapper): use custom
21129         marshaler for return types.
21130
21131 2003-06-10  Dick Porter  <dick@ximian.com>
21132
21133         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
21134         ip_mreq is available
21135
21136 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21137
21138         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
21139         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
21140         by Bernie Solomon <bernard@ugsolutions.com>.
21141
21142 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
21143
21144         * gc.c (mono_gc_init): Avoid error message on shutdown when
21145         GC_DONT_GC=1 is used.
21146
21147         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
21148         New icall to return the GUID of a module.
21149
21150 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21151
21152         * class.c: ensure instance size always includes the parent's size
21153         even whem class size is set explicitly (fixes bug#44294).
21154
21155 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21156
21157         * profiler.h, profiler.c: made the simple profiler thread-safe,
21158         get more accurate timing info. Allow the loading of an
21159         externally-developed profiler module.
21160
21161 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
21162
21163         * marshal.c (mono_marshal_get_native_wrapper): improved
21164         class/byref arguments.
21165         (mono_marshal_get_native_wrapper): better string marshaling support.
21166
21167 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21168
21169         * class.c: ensure .pack and .size are handled correctly and
21170         simplified layout of static fields.
21171
21172 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21173
21174         * appdomain.c
21175         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
21176
21177         * loader.c (mono_lookup_pinvoke_call): look for modules in the
21178         current directory (fix bug 44008)
21179
21180 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
21181
21182         * marshal.c (mono_marshal_get_native_wrapper): started support for
21183         custom marshalers.
21184         (mono_delegate_to_ftnptr): consider marshalling specifications
21185
21186 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21187
21188         * reflection.c, reflection.h: emit custom marshal info.
21189
21190 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21191
21192         * object.c: free the GError.
21193         * icall.c: added CloseEvent_internal.
21194         * threads.[ch]:
21195         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
21196         call.
21197
21198 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
21199
21200         * loader.c (mono_method_get_signature): Add support for dynamic
21201         assemblies.
21202
21203 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21204
21205         * reflection.c: fixed bug #43905.
21206
21207 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21208
21209         * class.c, domain.c, icall.c, metadata.h, object.h: support for
21210         handling TypedReference and ArgIterator.
21211         * loader.c, loader.h: added function to get signature at call site.
21212
21213 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21214
21215         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
21216         data readonly. Buglets and warning fixes. Some MethodSpec support.
21217
21218 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21219
21220         * class.h, class.c, object.c: remove relative numbering support.
21221
21222 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
21223
21224         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
21225         free the string, until we get a chance to fix Gtk#
21226
21227 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21228
21229         * marshal.c: revert last patch.
21230
21231 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21232
21233         * icall.c: updates for new mono_class_vtable() not calling
21234         the type constructor anymore.
21235
21236 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21237
21238         * object.h, object.c: separate vtable creation from type
21239         initialization. Make running the .cctor thread safe.
21240
21241 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21242
21243         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
21244
21245 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21246
21247         * loader.c (mono_get_method): consider calling convention
21248
21249 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
21250
21251         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
21252         to return the invisible global type for a module.
21253
21254         * reflection.c (mono_image_build_metadata): Emit global fields too.
21255
21256 2003-05-20  Peter Williams  <peterw@ximian.com>
21257
21258         * loader.c (mono_lookup_internal_call): Add a few newlines.
21259
21260 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
21261
21262         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
21263         literal strings.
21264
21265         * appdomain.c (set_domain_search_path): Recalculate search path when
21266         AppDomainSetup.PrivateBinPath changes.
21267
21268         * object.c (mono_class_compute_gc_descriptor): It turns out some
21269         parts of the class libs (like System.Thread) holds pointers to
21270         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
21271         to treat native int a pointer type here.
21272         
21273 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
21274
21275         * appdomain.h, domain.c: add hashtable for jump target resolution.
21276
21277 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * reflection.h reflection.c icall.c: Added new icalls 
21280         GetManifestResourceInfoInternal, GetModulesInternal and support
21281         infrastructure.
21282
21283 2003-05-16  Dick Porter  <dick@ximian.com>
21284
21285         * icall.c:
21286         * file-io.h:
21287         * file-io.c: Implement System.IO.MonoIO::GetTempPath
21288
21289 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
21290
21291         * object.c: mono_store_remote_field: little fix to previous patch.
21292
21293 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21294
21295         * class.c: add constructors to array classes.
21296         * icall.c: special case array construction for InternalInvoke (),
21297
21298 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
21299
21300         * class.h class.c reflection.c object.c: Added support for field
21301         defaults in dynamically generated classes.
21302
21303 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21304
21305         * reflection.c: properly encode charset for ddlimport.
21306
21307 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21308
21309         * threads.c: allow compiling without GC.
21310
21311 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21312
21313         * appdomain.h, object.c, object.h, threads.c, threads.h: added
21314         handling of thread static data.
21315
21316 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21317
21318         * reflection.h, reflection.c: added mono_custom_attrs_free ().
21319
21320 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21321
21322         * class.c (mono_array_class_get): always set the serializable flags
21323         (mono_array_class_get): always set the SEALED attribute for array types
21324
21325 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
21326
21327         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
21328         attributes (fix for bug 42021).
21329
21330 2003-05-12  Dick Porter  <dick@ximian.com>
21331
21332         * gc.c: Don't run finalizers when the finalizer thread is
21333         finishing up, because the default domain has already been
21334         destroyed.
21335
21336 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
21337
21338         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
21339         value is null, we should throw an exception.   This is slightly
21340         different than the other conventions used for the constructor.
21341
21342 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21343
21344         * socket-io.c: fixed windows build.
21345
21346 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21347
21348         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
21349
21350 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * object.c (mono_string_new_wrapper): Compatibility fix for MS
21353         compilers.
21354
21355 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * class.c (mono_class_layout_fields): Add experimental GC aware
21358         auto layout facility. Requires class library changes to work correctly.
21359
21360         (mono_class_setup_vtable): Avoid overriding explicit interface
21361         method implementations. Fixes iface3.exe test.
21362
21363         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
21364         object reference.
21365         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
21366         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
21367
21368         * metadata.h: Add new type classification macro which determines
21369         whenever the type holds an object reference.
21370
21371 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21372
21373         * marshal.c (mono_marshal_get_native_wrapper): cleanups
21374
21375 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
21376
21377         * gc.c (finalizer_thread): Work around a GC bug.
21378
21379 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
21380
21381         * marshal.c (emit_struct_conv): allow unions
21382
21383         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
21384
21385 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
21386
21387         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
21388
21389 2003-05-06  Martin Baulig  <martin@ximian.com>
21390
21391         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
21392
21393 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21394
21395         * socket-io.c:
21396         (Select_internal): allow NULLs, don't create arrays if not needed.
21397         Coupled with Socket.cs changes.
21398
21399         * threadpool.c:
21400         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
21401         register a finalizer for it that will close the semaphore handle. This
21402         fixes the leak and make Lupus' test run with > 4080 loops.
21403
21404 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21405
21406         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
21407         Jerome Laban (bug #42287)
21408
21409 2003-05-02  Martin Baulig  <martin@ximian.com>
21410
21411         * debug-mono-symfile.h
21412         (MonoSymbolFile): Moved declaration into mono-debug.h.
21413         (MonoDebugMethodJitInfo): Likewise.
21414         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
21415         argument.
21416         (_mono_debug_address_from_il_offset): Take a
21417         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
21418
21419         * mono-debug.h
21420         (MonoDebugDomainData): New struct.
21421         (mono_debug_get_domain_data): New function.
21422         (mono_debug_add_method): Take an additional `MonoDomain *'
21423         argument.
21424         (mono_debug_source_location_from_address): Likewise.
21425         (mono_debug_il_offset_from_address): Likewise.
21426         (mono_debug_address_from_il_offset): Likewise.
21427
21428 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
21429
21430         * reflection.c: one more check for null type in custom attrs.
21431
21432 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21433
21434         * reflection.c: avoid warning (comparison is always false due to limited
21435         range of data type).
21436
21437 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21438
21439         * icall.c: throw an exception in Type.GetField if the argument 'name'
21440         is NULL.
21441
21442 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
21443
21444         * reflection.c: fixed handling of enums in named arguments to custom
21445         attributes (bug #42123).
21446
21447 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21448
21449         * reflection.c: use the right array element type and handle
21450         a null for a Type argument, too.
21451
21452 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
21453
21454         * reflection.c: handle arrays as arguments to custom attributes.
21455
21456 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21457
21458         * reflection.c: handle a string value in a custom attr
21459         ctor that takes an object.
21460
21461 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21462
21463         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
21464         (fix bug #42063)
21465
21466 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21467
21468         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
21469
21470 2003-04-27  Martin Baulig  <martin@ximian.com>
21471
21472         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
21473         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
21474         MONO_DEBUGGER_EVENT_BREAKPOINT.
21475         (mono_breakpoint_trampoline_code): Removed.
21476         (mono_debugger_event_handler): The last argument is now a
21477         `guint32'.
21478         (mono_debugger_insert_breakpoint_full): Removed the
21479         `use_trampoline' argument.
21480         (mono_debugger_method_has_breakpoint): Likewise.
21481         (mono_debugger_trampoline_breakpoint_callback): Renamed to
21482         mono_debugger_breakpoint_callback(); take the method and
21483         breakpoint number as arguments.
21484
21485 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21486
21487         * metadata.c: fix off by one when loading parameters attributes.
21488
21489 2003-04-24  Martin Baulig  <martin@ximian.com>
21490
21491         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
21492
21493 2003-04-24  Martin Baulig  <martin@ximian.com>
21494
21495         * mono-debug-debugger.c: Moved all code which interacts with the
21496         Mono Debugger here.
21497
21498         * debug-mono-symfile.c: This code now just deals with the symbol
21499         file itself, the debugger code is now in mono-debug-debugger.c.
21500
21501 2003-04-23  Martin Baulig  <martin@ximian.com>
21502
21503         * mono-debug.c (mono_debug_source_location_from_il_offset):
21504         New method; like mono_debug_source_location_from_address(), but
21505         takes an IL offset instead of a machine address.
21506
21507 2003-04-23  Martin Baulig  <martin@ximian.com>
21508
21509         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
21510         `line' field; this is now computed by the debugger.
21511
21512 2003-04-23  Martin Baulig  <martin@ximian.com>
21513
21514         * mono-debug.[ch]: New files.  This is the new debugging interface.
21515
21516         * mono-debug-debugger.[ch]: New files.  Moved all code which
21517         interacts with the Mono Debugger here.
21518
21519 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21520
21521         * domain.c (mono_init): initialize mono_defaults.monitor_class
21522
21523 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
21524
21525         * reflection.c (method_encode_code): Add a spicy exception to help
21526         future compiler authors.
21527
21528 2003-04-21  Martin Baulig  <martin@ximian.com>
21529
21530         * icall.c
21531         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21532         Make this work with relative pathnames; g_filename_to_uri() needs
21533         an absolute filename.
21534
21535 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
21536
21537         * icall.c: Track name changes in Object and ValueType.
21538
21539 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
21540
21541         * metadata.c (mono_type_stack_size): size should be a multiple of
21542         sizeof (gpointer)
21543
21544 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21545
21546         * gc.c:
21547         (internal_domain_finalize): moved into mono_domain_finalize. No need
21548         to create another thread because the finalizers will be run in the
21549         finalizer thread.
21550         
21551         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
21552         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
21553         to be run (MS does this too).
21554
21555 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * object.c (mono_class_compute_gc_descriptor): Update comment.
21558
21559         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
21560
21561         * image.h: Add synchronized wrapper cache.
21562
21563         * image.c (do_mono_image_open): Initialize cache.
21564
21565         * reflection.c (create_dynamic_mono_image): Initialize cache.
21566
21567 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21568
21569         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
21570         ves_icall_System_Buffer_ByteLengthInternal.
21571
21572 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21573
21574         * reflection.c: setup klass->nested_in earlier. Allow
21575         a dash in the assembly name.
21576
21577 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
21578
21579         * metadata.c (mono_type_to_unmanaged): dont access
21580         type->data.klass for MONO_TYPE_OBJECT
21581         (mono_type_to_unmanaged): consider System.Delegate class
21582
21583 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
21584
21585         * class.c: just setup supertypes in the proper place instead of
21586         initializing the full element class for arrays.
21587
21588 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21589
21590         * class.c: ensure the element class of arrays is initialized.
21591         Setup the supertype info for array classes, too.
21592
21593 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
21594
21595         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
21596
21597 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21598
21599         * Makefile.am: re-added -m option when running cygpath. This way,
21600         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
21601         separator.
21602         * mono-config.c: same codepath for locating mono config file for WIN32
21603         and the rest.
21604         * assembly.c: if mono_assembly_setrootdir is called, don't override
21605         the value set.
21606
21607 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21608
21609         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
21610         MONO_ASSEMBLIES variable.
21611
21612 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21613
21614         * icall.c: added Assembly::GetNamespaces() icall.
21615
21616 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21617
21618         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
21619
21620 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
21621
21622         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
21623         * object.c: fixed bug in the construction of vtable for proxies
21624
21625 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21626
21627         * object.c (mono_array_new): Mark mono_array_new as an icall.
21628
21629 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21630
21631         * class.c: fixed test for public method when overriding interfaces.
21632         Closes bug #40970.
21633
21634 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21635
21636         * appdomain.h, domain.c: added mono_domain_foreach() to
21637         be able to access the currently loaded appdomains.
21638         * object.c: make string interning work across sppdomains.
21639         Mark some functions for use as icalls.
21640
21641 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
21644
21645         * reflection.h reflection.c: Allocate long living data using 
21646         GC_MALLOC_ATOMIC so the collector does not need to scan it.
21647
21648         * reflection.c: Double the allocation size in streams instead of
21649         increasing it, to prevent unneccesary copying on large assemblies.
21650         
21651         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
21652         creation if the assembly does not have the Run flag set.
21653
21654 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21655
21656         * class.h: avoid the C++ keywords in header files (Jerome Laban
21657         spotted and fixed this).
21658
21659 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21660
21661         * object.c:
21662         (mono_unhandled_exception): fill in the arguments for the
21663         UnhandledException event. Only trigger that event for the default
21664         domain (as MS does).
21665
21666 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
21667
21668         * object.c: Improve typed allocation stuff based on suggestions from
21669         Paolo. Also turn it on if the GC library supports it.
21670
21671 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21672
21673         * object.c object.h class.h: Added experimental typed allocation
21674         facility using the interfaces in gc_gcj.h.
21675
21676         * os/gc_wrapper.h: Added new include files.
21677         
21678 2003-04-03  Martin Baulig  <martin@ximian.com>
21679
21680         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
21681         which is not yet enabled by default.
21682
21683         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
21684         functions.
21685         (mono_gc_lock, mono_gc_unlock): New static functions.
21686
21687         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
21688         functions; stop/start the world for the garbage collector.  This
21689         is using the windows API; we need to complete the SuspendThread()/
21690         ResumeThread() implementation in the io-layer to make this work on Unix.
21691         (mono_gc_push_all_stacks): New public function; tells the garbage
21692         collector about the stack pointers from all managed threads.
21693
21694 2003-04-03  Martin Baulig  <martin@ximian.com>
21695
21696         * object.h (MonoThread): Added `gpointer stack_ptr'.
21697
21698         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
21699
21700 2003-04-03  Martin Baulig  <martin@ximian.com>
21701
21702         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
21703
21704 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21705
21706         * reflection.c (typebuilder_setup_fields): Initialize field.first and
21707         field.last.
21708
21709 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
21710
21711         * loader.c (mono_lookup_internal_call): Report the corlib that is
21712         out of sync.
21713
21714 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
21715
21716         * icall.c (ves_icall_type_GetTypeCode): fixed check for
21717         System.DBNull (it's class not valuetype).
21718
21719 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21720
21721         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
21722         if the array method was already assigned a token (fixes bug#40646).
21723
21724 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
21725
21726         * reflection.c (mono_reflection_get_type): Attempt type resolve even
21727         if no assembly is given.
21728
21729 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
21730
21731         * metadata.h: Added the new tables.
21732
21733         * row-indexes.h: Added definitions for new tables.
21734
21735         * metadata.c: Add schemas for new tables, and add support for
21736         computing the sizes of them.
21737
21738         * class.c: Update for handling the new type cases.
21739
21740 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
21741
21742         * metadata.h (MONO_TYPE_IS_VOID): new macro
21743
21744 2003-03-31  Martin Baulig  <martin@ximian.com>
21745
21746         * threads.h (MonoThreadCallbacks): Added `thread_created'.
21747
21748         * threads.c (mono_thread_new_init): Call `thread_created' in the
21749         mono_thread_callbacks.
21750
21751 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
21752
21753         * loader.h: added marshalbyrefobject_class to mono_defaults
21754         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
21755         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
21756           generation of output parameters.
21757           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
21758         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
21759           contextbound and the target object belongs to the context of the caller.
21760         * object.h: added context and unwrapped_server variables in MonoRealProxy.
21761         * object.c: Implemented support for interfaces and abstract classes
21762           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
21763           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
21764
21765 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
21766
21767         * class.h class.c (mono_class_is_subclass_of): New function.
21768         
21769         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
21770         routines for most common case (calls from ArrayList::ToArray).
21771
21772         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
21773         routine so programs which call Environment::Exit() can be profiled.
21774
21775         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
21776         Added MONO_ARCH_SAVE_REGS.
21777
21778         * icall.c (ves_icall_type_is_subtype_of): Use new function.
21779
21780 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
21781
21782         * blob.h: Add a couple of new MonoType types definitions.
21783
21784         * tabledefs.h: Add a couple of new call convs.
21785
21786 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
21787
21788         * reflection.h (MonoReflectionDynamicAssembly): track changes in
21789         the layout of the class.
21790
21791         * reflection.c (alloc_table): double the size on overflow to avoid
21792         unnecessary copying.
21793
21794         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
21795         avoid filling out metadata tables and blobs. Also set mb->ilgen to
21796         null so it can be garbage collected.
21797         
21798 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
21799
21800         * reflection.c (mono_reflection_get_type): Return the resolved type
21801         only if it is in the assembly we searched.
21802
21803         * reflection.c (ensure_runtime_vtable): Initialize method slots.
21804
21805         * class.c (mono_class_setup_vtable): Set the slot of the overriding
21806         method.
21807
21808 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21809
21810         * appdomain.c:
21811         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
21812         the right one is 'file:///blah', but MS allows it.
21813         * assembly.c:
21814         (mono_assembly_open): allow 'file://blah'
21815
21816         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
21817
21818 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
21819
21820         * socket-io.c: fixes bug #40310.
21821
21822 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
21823
21824         * reflection.c (mono_reflection_parse_type): handle deeply nested
21825         types correctly.
21826
21827         * reflection.c (mono_image_create_token): Use unique token values
21828         since they will be put into a hash table.
21829
21830         * class.c (mono_class_setup_vtable): If a method occurs in more than
21831         one place in the vtable, and it gets overriden, then change the
21832         other occurances too.
21833
21834         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
21835         object as return type.
21836
21837 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21838
21839         * icall.c: Deleted "ToString" implementation for double and float
21840         because they are full implemented in managed code.
21841
21842 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21843
21844         * reflection.c, reflection.h: implemented and exported functions
21845         to retrieve info about custom attributes.
21846
21847 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21848
21849         * appdomain.c: moved Uri handling to assembly.c
21850         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
21851         work when using a file Uri in *nix and windows.
21852
21853         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
21854         GetReferencedAssemblies.
21855
21856 2003-03-18  Dick Porter  <dick@ximian.com>
21857
21858         * icall.c: Rename a couple of internal calls
21859
21860         * threads.c: Set the thread state to Stopped when a thread exits.
21861         Fixes bug 39377.
21862
21863 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
21864
21865         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
21866         New icall.
21867
21868         * object.c (mono_class_vtable): fix warning.
21869
21870 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
21871
21872         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
21873
21874         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
21875         memory.
21876         (method_encode_clauses): Create exception info structures in the right
21877         order.
21878         (mono_reflection_setup_internal_class): Initialize supertypes field.
21879
21880         * class.c object.c: Handle interfaces which implement other interfaces 
21881         correctly.
21882
21883         * class.h class.c: Move the supertypes array initialization code into 
21884         a separate function so it can be used for dynamic types too. Also call
21885         it earlier, in mono_class_init(), since it can be used before the
21886         type is initialized.
21887
21888 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21889
21890         * Makefile.am:
21891         * assembly.c:
21892         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
21893
21894         * appdomain.c:
21895         * appdomain.h:
21896         * marshal.c:
21897         * object.c: remove warnings.
21898
21899 2003-03-13  Martin Baulig  <martin@ximian.com>
21900
21901         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
21902         (MonoDebugLexicalBlockEntry): New types.
21903
21904         * debug-mono-symfile.c
21905         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
21906
21907 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21908
21909         * process.c: ret can be any non-zero value accroding to MS doc.
21910
21911 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
21912
21913         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
21914         fixing a warning for a miss-used prototype, would have cause
21915         random memory corruption.
21916
21917 2003-03-07  Martin Baulig  <martin@ximian.com>
21918
21919         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
21920         getting really annoying ....
21921
21922 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
21923
21924         * reflection.c (fixup_method): added support for array methods.
21925
21926 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21927
21928         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
21929         (pointed out by Michael Adams).
21930
21931 2003-03-04  Dick Porter  <dick@ximian.com>
21932
21933         * icall.c: Temporarily reverted the Double and Single ToString()
21934         change, because it broke nunit.
21935
21936 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
21937
21938         * object.h, threads.h: make include files compatible with C++
21939         (patch by Jerome Laban <jlaban@wanadoo.fr>).
21940
21941 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21942
21943         * icall.c: Erased ToString helper functions for Double and Single.
21944         Now, that implementations ar all in managed code (Double and Single
21945         Formatters).
21946
21947 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
21948
21949         * appdomain.c: Added method for initializing the default context of
21950         a domain. Added internal call for getting the default context.
21951         * appdomain.h: Added context variable in MonoDomain struct.
21952         * domain.c: mono_domain_set also sets the default context of the domain
21953         * icall.c: Mapped internal method InternalGetDefaultContext.
21954         * object.c: mono_object_get_virtual_method returns always a remoting
21955         wrapper if the object is a transparent proxy.
21956         mono_runtime_invoke_array: when creating an object by calling the
21957         constructor, if the created object is a proxy, then the constructor should
21958         be called using the a remoting wrapper.
21959
21960 2003-03-03  Dick Porter  <dick@ximian.com>
21961
21962         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
21963         variable so it compiles on solaris.  Problem spotted by
21964         Christopher Taylor <ct@cs.clemson.edu>
21965
21966 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21967
21968         * appdomain.c:
21969         (get_info_from_assembly_name): don't leak value.
21970
21971         * icall.c:
21972         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
21973         result.
21974
21975 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21976
21977         * assembly.c: export mono_image_load_references ().
21978         * class.c: handle function pointers. mono_class_from_name() now
21979         supports nested type names directly.
21980
21981 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
21982
21983         * reflection.h reflection.c: Encode already created dynamic methods 
21984         and fields correctly as a DEF instead of a REF.
21985
21986         * reflection.c: Get rid of the force_ref argument to 
21987         mono_image_typedef_or_ref since it was wrong in the first place.
21988
21989         * string-icalls.c: add error checking to string constructors according
21990         to the MSDN docs.
21991
21992         * reflection.c: Emit types in the order their TypeBuilders were 
21993         created. Previously, a new table index was assigned to each type before
21994         the tables were emitted. This was wrong because the signature blob
21995         might already refer to a type by its original table index.
21996
21997 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
21998
21999         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
22000         change.
22001         
22002 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22003
22004         * Makefile.am: make assemblies dir have \ instead of / on windows.
22005
22006 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
22007
22008         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
22009         iterate over the NESTEDCLASS table using a linear search since the
22010         table is not guaranteed to be sorted by the secondary key.
22011
22012         * class.c (mono_class_create_from_typedef): fixed up call to
22013         mono_metadata_nesting_typedef.
22014         
22015 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
22016
22017         * marshal.c (mono_string_to_byvalstr): clear the memory as
22018         suggested by Jerome Laban <jlaban@wanadoo.fr>
22019
22020 2003-02-26  Dick Porter  <dick@ximian.com>
22021
22022         * process.c: Cope with padding in .rsrc blocks
22023
22024 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22025
22026         * metadata.h: reverted the filter_len change, it breaks reflection
22027         
22028 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22029
22030         * metadata.h: added a new field to store the filter_len
22031         
22032
22033 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22034
22035         * reflection.c: handle custom attributes for types and members
22036         created with Reflection.Emit (bug#38422).
22037
22038 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * reflection.c: define RTSpecialName automatically for constructors for
22041         compatibility with MS.NET.
22042
22043         * reflection.c (mono_reflection_create_runtime_class): initialize
22044         nested_in field of dynamically created classes.
22045
22046 2003-02-22  Martin Baulig  <martin@ximian.com>
22047
22048         * debug-mono-symfile.h: Incremented version number.
22049
22050 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * object.h icall.c process.c: fix warnings.
22053
22054 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22055
22056         * appdomain.h appdomain.c:
22057         (mono_domain_try_type_resolve): split the 
22058         name_or_tb argument into a name and a tb argument.
22059         (mono_domain_has_type_resolve): new function to check whenever the
22060         application has registered a TypeResolve event handler.
22061         
22062         * icall.c reflection.h reflection.c: move the type resolve logic into
22063         mono_reflection_get_type () so it will be invoked when 
22064         Assembly::GetType () is called.
22065
22066         * reflection.c:
22067         (mono_reflection_get_type): renamed to get_type_internal.
22068         (mono_reflection_get_type): fixed type name generation so it works 
22069         for nested types too.
22070         (mono_reflection_get_type): call has_type_resolve () to avoid the 
22071         costly type name generation if there is no resolve event handler.
22072
22073 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22074
22075         * class.c, image.c: load exported types from file references.
22076
22077 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
22078
22079         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
22080           used to cache the managed methods used to create proxies and make 
22081           remote invocation of methods.
22082         * class.h: Added in MonoVTable a flag to indicate that a class needs 
22083           to be remotely created.
22084         * object.c: Modified the method mono_class_vtable(). It now initializes 
22085           the remote flag of the vtable. Modified mono_object_new_specific(), 
22086           so now it checks the remote flag.
22087         * icall.c: Added a couple of internal methods, one for enabling instance 
22088           creation interception for a type, and one for creating objects bypassing
22089           the remote check.
22090
22091 2003-02-18  Martin Baulig  <martin@ximian.com>
22092
22093         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
22094         New interncall to get a method's metadata token.
22095
22096         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
22097         New interncall for the debugger.
22098
22099 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
22100
22101         * class.c (mono_class_setup_vtable): allocate supertype array
22102
22103 2003-02-18  Martin Baulig  <martin@ximian.com>
22104
22105         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
22106
22107 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22108
22109         * reflection.c:
22110         (assembly_name_to_aname): jump over unknown properties (i've found
22111         something like: 'type, assembly, version=xxx, custom=null, public...',
22112         so now will ignore custom=null and still get the rest of the values).
22113
22114 2003-02-17  Dick Porter  <dick@ximian.com>
22115
22116         * threads.c: Have Thread.Start() wait for a semaphore to signal
22117         that the thread has set up all its local data.  This fixes bug
22118         34323, where Abort() raced the new thread's TLS data.
22119
22120         Also removes the handle_store() call from start_wrapper, because
22121         threads are now always created suspended and there is no longer a
22122         race between the parent and child threads to store the info.
22123
22124 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
22125
22126         * image.c: explain the #- heap issue in a message, hopefully
22127         avoiding FAQs on mono-list.
22128
22129 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22130
22131         * icall.c:
22132         (GetEntryAssembly): if the domain has not invoked
22133         AppDomain.ExecuteAssembly yet, return the assembly of the default
22134         AppDomain.
22135
22136 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * class.c (mono_ldtoken): make it work in dynamic assemblies.
22139
22140 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22141
22142         * metadata.c, reflection.c: simple speedup to type hash
22143         and equals code.
22144
22145 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
22146
22147         * image.c, image.h, class.c, assembly.c: move module loading
22148         to MonoImage. When loading metadata, consider alignemnet from
22149         the start of metadata, not from the metadata address in memory.
22150
22151 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
22152
22153         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
22154         AssemblyBuilder objects. Factored out custom attribute creation into
22155         a separate function.
22156         (create_custom_attr): new function to create custom attributes.
22157
22158 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
22159
22160         * Makefile.am: Got tired of typing the full pathname to pedump.
22161         Until there is another option, am installing this.
22162
22163 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
22164
22165         * class.c (class_compute_field_layout): always set field->parent 
22166         (mono_ldtoken): use mono_defaults.fieldhandle_class;
22167
22168 2003-02-11  Dick Porter  <dick@ximian.com>
22169
22170         * threads-types.h:
22171         * monitor.c: Rewrote Monitor, making lock much faster and
22172         Pulse/Wait work as specified.  Also uses much fewer handles, and only
22173         creates them as needed.
22174
22175         * exception.c: Added SynchronizationLockException
22176
22177         * threads.c: Deleted old Monitor implementation.  The new one is
22178         in a new file.
22179
22180 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22181
22182         * class.c: handled TypedReference type code. Set the correct size for
22183         class data. Setup interface_offsets for interface classes, too.
22184
22185 2003-02-09  Martin Baulig  <martin@ximian.com>
22186
22187         * debug-mono-symfile.h: Reflect latest symbol writer changes.
22188
22189 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
22190
22191         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
22192         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
22193         * object.c: fixed mono_object_get_virtual_method () for interfaces.
22194         * verify.c: check for code that runs after the end of the method.
22195
22196 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22197
22198         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
22199         "System.Math::Round2".
22200         * sysmath.h: Added Floor, Round and Round2 definitions.
22201         * sysmath.c: Modified certain functions that were not 100% compliant
22202         with MS.NET (math precision) and added the implementation of Floor,
22203         Round and Round2.
22204
22205 2003-02-07  Martin Baulig  <martin@ximian.com>
22206
22207         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
22208
22209 2003-02-07  Martin Baulig  <martin@ximian.com>
22210
22211         * debug-mono-symfile.c: Reflected latest symwriter changes.
22212         (mono_debug_create_mono_symbol_file): Removed.
22213         (mono_debug_open_mono_symbol_file): Take an argument which
22214         specifies whether to create a dynamic symbol file.
22215
22216 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
22217
22218         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
22219
22220 2003-02-05  Martin Baulig  <martin@ximian.com>
22221
22222         * reflection.c (mono_image_build_metadata): Make this public,
22223         protect it against being called multiple times, don't create
22224         resources and don't build the compressed metadata here.
22225         (mono_image_create_pefile): Do this here.
22226
22227         * icall.c
22228         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
22229
22230 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22231
22232         * socket-io.c: fixed bug #36322.
22233
22234 2003-02-06  Piers Haken <piersh@friskit.com>
22235
22236         * appdomain.[ch]:
22237         * class.h:
22238         * debug-mono-symfile.c:
22239         * icall.c:
22240         * loader.c:
22241         * mono-config.c:
22242         * monosn.c:
22243         * reflection.c:
22244         * socket-io.c: warning cleanups
22245
22246 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
22247
22248         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
22249         function. works like remoting invoke, but does a check for the Proxy first.
22250
22251 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
22252
22253         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
22254
22255 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
22256
22257         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
22258         array of pointers.
22259         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
22260         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
22261
22262         * object.c (mono_store_remote_field_new): used by the new jit
22263         instead of mono_store_remote_field
22264         (mono_load_remote_field_new): used by the new jit
22265         instead of mono_load_remote_field
22266
22267 2003-02-05  Patrik Torstensson
22268
22269         * appdomain.c: changed unload to take the domain id instead
22270         of domain
22271         
22272         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
22273
22274
22275 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22276
22277         * appdomain.c: don't look for assemblies in ApplicationBase if
22278         PrivateBinPathProbe is set.
22279
22280 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22281
22282         * object.c: make the first argument in main_args contain the absolute
22283         path to the assembly. Fixes bug #37511.
22284
22285 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22286
22287         * icall.c: get correct UTC offset for countries not using daylight
22288         time saving. Fixes bug #30030.
22289
22290 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22291
22292         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
22293         and 1 are the family).
22294
22295 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
22296
22297         * icall.c (ves_icall_InternalExecute): removed wrong assertion
22298
22299         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
22300
22301 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
22302
22303         * reflection.c: added support for SignatureHelper tokens, which is
22304         needed by the Calli opcode.
22305
22306         * reflection.h: track changes to SignatureHelper class.
22307
22308         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
22309
22310 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22311
22312         * appdomain.c: fixed loading assemblies from PrivateBinPath.
22313
22314 2003-02-03  Patrik Torstensson
22315         * appdomain.[c|h], domain.c : 
22316          - Added support for getting a domain via domain id
22317          - Support for setting and getting domain from System.AppDomain 
22318            (used in cross appdomain channel)
22319          - Added support for get/set for a MonoAppContext on a thread 
22320            (Context class in System.Runtime.Remoting.Contexts),
22321          - Removed hack in Get/SetData and ExecuteAssembly.
22322         
22323         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
22324         the managed world to get control when a proxy is created.
22325
22326         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
22327         
22328 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
22329
22330         * icall.c
22331         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22332         Populate the codebase field as well.
22333
22334 2003-02-02  Martin Baulig  <martin@ximian.com>
22335
22336         * debug-mono-symfile.c
22337         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
22338         (mono_debug_symfile_add_method): Allow interncalls.
22339
22340 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22341
22342         * icall.c: throw parse exception if strtod fails or the string is empty.
22343
22344 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
22345
22346         * marshal.c: handle object type separately from defined
22347         class types.
22348
22349 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
22350
22351         * marshal.c: handle NATIVE_LPSTR for strings when it's
22352         explicitly specified.
22353
22354 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
22355
22356         * reflection.c, reflection.h, icall.c: setup the reflection
22357         handle cache for ModuleBuilders and AssemblyBuilders.
22358
22359 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
22360
22361         * reflection.c (reflection_methodbuilder_to_mono_method): set
22362         pinvoke flag
22363
22364 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22365
22366         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
22367
22368 2003-01-29  Dick Porter  <dick@ximian.com>
22369
22370         * threads.c: No need for the fake_thread kludge now that Thread
22371         doesn't run a class constructor
22372         
22373 2003-01-29  Dick Porter  <dick@ximian.com>
22374
22375         * threads.c: Use g_direct_hash instead of the rather bogus
22376         g_int_hash
22377
22378 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
22379
22380         * marshal.c (mono_marshal_get_native_wrapper): add check for null
22381         (fix pinvoke12.exe)
22382         (mono_marshal_get_struct_to_ptr): generate valid IL code
22383         (mono_marshal_get_ptr_to_struct): generate valid IL code
22384         (*): correctly set sig->pinvoke, we need to memdup the signature
22385         to do that
22386
22387 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22388
22389         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
22390         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
22391
22392 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22393
22394         * profiler.c: provide more callers information.
22395
22396 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
22397
22398         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
22399
22400         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
22401
22402         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
22403
22404 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22405
22406         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
22407         exception instead of going into an infinite loop on dates which it 
22408         can't yet handle.
22409
22410         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
22411         out-of-range exception if needed.
22412
22413         * class.c (mono_class_setup_vtable): allow a virtual method to provide
22414         an implementation for an interface method and to override an inherited
22415         method at the same time. 
22416         Imagine a scenario when a virtual method is used to override a
22417         virtual abstract method in a parent class, and this same method 
22418         provides an implementation for an method inherited from an interface. 
22419         In this case, the interface resolution code will set im->slot, which 
22420         means that the virtual method override pass will skip this method 
22421         which means a pointer to the abstract method inherited from the parent
22422         will remain in the vtable of this non-abstract class.
22423
22424         * class.c: (mono_class_setup_vtable): continue search for a real 
22425         method if only an abstract method is found.     
22426
22427 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22428
22429         * reflection.c: add size to encoding for ByValStr and ByValArray
22430         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
22431
22432 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22433
22434         * class.c (mono_class_setup_vtable): pass the override info as an
22435         argument.
22436
22437         * class.c (mono_class_setup_vtable): set the slot of overriding methods
22438         correctly.
22439         
22440         * reflection.c (ensure_runtime_vtable); add support for method 
22441         overrides.
22442         
22443 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22444
22445         * reflection.c (resolution_scope_from_image): Hack to work to work with
22446         dynamic assemblies.
22447
22448         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
22449         added a 'force_ref' argument to force this function to allways return 
22450         a TypeRef. This is needed by mono_image_get_memberref_token ().
22451         
22452 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22453
22454         * reflection.c (mono_image_get_type_info): interfaces really don't have
22455         a parent.
22456
22457         * reflection.c (mono_image_basic_init): fill out missing fields of
22458         image structure.
22459
22460         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
22461         dynamic assemblies. This is required so dynamic assemblies show up in
22462         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
22463         Type::GetType() etc. This is consistent with MS behaviour.
22464
22465         * image.c image.h reflection.c: add newly created classes to the name 
22466         cache so mono_class_get () will find them.      
22467
22468 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22469
22470         First part of changes to get IKVM.NET running under mono.
22471         
22472         * appdomain.h, appdomain.c: added new function 
22473         mono_domain_try_type_resolve() which will emit TypeResolve events. 
22474         This function will call AppDomain::DoTypeResolve to do the actual work.
22475
22476         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
22477         moved existing code dealing with dynamic tokens to a new function 
22478         called mono_reflection_lookup_dynamic_token (). This function will 
22479         raise TypeResolve events when appropriate. Since reflection.c is not 
22480         part of libmetadata, a new hook function called 
22481         mono_lookup_dynamic_token() is added to class.c which will call this.
22482
22483         * assembly.h assembly.c: make the invoke_load_hook function public,
22484         so it can be called for dynamic assemblies.
22485
22486         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
22487
22488         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
22489         type isn't found.
22490
22491         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
22492         MonoGHashTable, since it contains pointers to objects which the GC 
22493         needs to track.
22494
22495         * assembly.c (search_loaded): remove unused variable.
22496         
22497 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
22498
22499         * object.c: fixed issue exposed by gcc-generated IL programs
22500         that use RVA data for pointers.
22501
22502 2003-01-25  Martin Baulig  <martin@ximian.com>
22503
22504         * threads.c (start_wrapper): Moved the initialization of
22505         `start_func' above the mono_new_thread_init() call to which we
22506         pass it as argument.
22507
22508 2003-01-24  Martin Baulig  <martin@ximian.com>
22509
22510         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
22511         the MonoThread pointer.
22512
22513 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
22514
22515         * icall.c: Rename `PowImpl' to Pow.
22516
22517 2003-01-23  Dick Porter  <dick@ximian.com>
22518
22519         * threads.c (start_wrapper): Create a Thread object if needed, so
22520         the Main() thread can do the class initialisation in a subthread
22521         that has been set up to allow managed code execution.
22522
22523         Pass the thread ID instead of the MonoThread pointer to the thread
22524         start and attach callbacks.  This change is required, because the
22525         jit thread start callback must be called _before_ the Thread
22526         object can be created.
22527         
22528         (mono_thread_init): Removed much object creation code that is no
22529         longer needed.  No managed code is called from here now.
22530
22531         * object.c (mono_runtime_exec_managed_code): Create a subthread
22532         for Main, and call back to the runtime to use it.
22533         Set the exit code when Main exits.
22534
22535         * gc.c: Make sure domain finalisation happens in a subthread.
22536         Re-enable threaded GC, fixing bug 31333 (again).
22537
22538         * environment.c: System.Environment internall calls (so far just
22539         ExitCode is here, the others are still in icall.c)
22540
22541         * appdomain.c (mono_runtime_cleanup): All threads running managed
22542         code should have finished before mono_runtime_cleanup() is
22543         reached, so no need to clean up threads.
22544
22545 2003-01-22  Martin Baulig  <martin@ximian.com>
22546
22547         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
22548         `gpointer func' arguments.      
22549         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
22550         but added `MonoThread *thread' argument.
22551         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
22552
22553         * threads.c (mono_new_thread_init): Added `gpointer func' argument
22554         and pass it to the mono_thread_start_cb callback.
22555         (mono_install_thread_callbacks): New public function to install a
22556         set of callbacks which are set by the debugger.
22557         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
22558
22559 2003-01-22  Martin Baulig  <martin@ximian.com>
22560
22561         * Makefile.am: Install debug-mono-symfile.h.
22562
22563 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
22564
22565         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
22566
22567 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
22568
22569         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
22570         * class.c (mono_ptr_class_get): correctly set access levels of pointers
22571         (mono_array_class_get): correctly set access levels of arrays
22572
22573 2003-01-20      Patrik Torstensson
22574         * image.h (MonoAssemblyName): changed major, minor, build, revision
22575         from signed to unsigned.
22576
22577 2003-01-20  sean kasun <skasun@azstarnet.com>
22578
22579         * reflection.c (load_cattr_value): Now this handles
22580         MONO_TYPE_SZARRAY.  Fixes bug #35629
22581
22582 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
22583
22584         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
22585         integer value
22586
22587 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22588
22589         * decimal.c: fixed bug #26056.
22590
22591 2003-01-17  Martin Baulig  <martin@ximian.com>
22592
22593         * gc.c: Raise an ExecutionEngineException instead of using g_error().
22594
22595 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22596
22597         * exception.[ch]:
22598         (mono_get_exception_type_initialization): new function.
22599
22600         * object.c: throw a TypeInitializationException when an exception is
22601         thrown invoking the class constructor.
22602
22603 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22604
22605         * reflection.c: fixed attribute reading.
22606
22607 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22608
22609         * icall.c:
22610         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
22611         provided, look for the type in the calling assembly and then in
22612         mscorlib; if the assembly name is provided, only try that one.
22613
22614 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22615
22616         * object.c: register the vtable before there is a chance it's
22617         queried again recursively.
22618
22619 2003-01-13  Duncan Mak  <duncan@ximian.com>
22620
22621         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
22622         gc-internal.h. 
22623         
22624 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
22625
22626         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
22627
22628 2003-01-11  Martin Baulig  <martin@ximian.com>
22629
22630         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
22631         this to 20 for the release.
22632
22633 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
22634
22635         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
22636
22637         * loader.c (mono_method_get_marshal_info): bug fix
22638
22639         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
22640         structures with explicit layout
22641
22642 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22643
22644         * profiler.c: made the output more readable (and sorted). 
22645         Added caller information for the allocation profiler.
22646
22647 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
22648
22649         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
22650
22651 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22652
22653         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
22654         to get value types.
22655         
22656 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
22657
22658         * object.c, profiler.h, profiler.c, profiler-private.h:
22659         Added object allocation profiler.
22660
22661 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
22662
22663         * reflection.h, reflection.c: handle global methods.
22664         Compress blob entries.
22665
22666 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
22667
22668         * marshal.c: fix compilation.
22669
22670 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
22671
22672         * loader.c (mono_method_get_marshal_info): impl.
22673
22674         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
22675
22676 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22677
22678         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
22679         for reference types.
22680
22681 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
22682
22683         * loader.c: fixed off by one error in loaded parameter names.
22684
22685 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
22686
22687         * marshal.c (mono_marshal_get_icall_wrapper): like
22688         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
22689         instead of a MonoMethod.
22690
22691 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22692
22693         * decimal.c: fixed bug #36537.
22694
22695 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
22696
22697         * marshal.c: throw a missing method exception if a
22698         P/Invoke method is not found.
22699
22700 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22701
22702         * icall.c: allow a null this for constructors.
22703
22704 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22705
22706         * icall.c: raise the proper exceptions if the arguments to the
22707         internal Invoke are incorrect.
22708
22709 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
22710
22711         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
22712
22713 2003-01-03  Martin Baulig  <martin@ximian.com>
22714
22715         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22716
22717 2002-12-31  Martin Baulig  <martin@ximian.com>
22718
22719         * debug-mono-symfile.c: Completely rewrote the type section.
22720         Instead of using individual malloc()ed fields, we use one big
22721         continuous memory area and offsets into this area.
22722         See the comments in the source code for details.
22723
22724 2002-12-30  Martin Baulig  <martin@ximian.com>
22725
22726         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
22727
22728 2002-12-30  Martin Baulig  <martin@ximian.com>
22729
22730         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
22731         line number table in this data blob instead of using an external
22732         pointer.
22733
22734 2002-12-28  Martin Baulig  <martin@ximian.com>
22735
22736         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22737
22738 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
22739
22740         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
22741         as a boxed return type.
22742
22743 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
22744
22745         * appdomain.c
22746         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
22747         g_build_filename to properly get separators on the filename created.
22748
22749         * object.h: Small change, introduce MonoMarshalByRefObject to
22750         track the layout of that structure in the C# universe as we make
22751         changes there.
22752
22753 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
22754
22755         * object.c: removed assert to allow static fields on interfaces.
22756         * loader.c: a TypeSpec may be used for any type, not just arrays.
22757
22758 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
22759
22760         * class.c, class.h: added mono_class_array_element_size ().
22761         Ignore static methods in interfaces.
22762
22763 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22764
22765         * threads.c: fixed the build under cygwin.
22766
22767 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
22768
22769         * reflection.c: handle nullref constants. Allocate keys for
22770         reflection handles with the GC.
22771
22772 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22773
22774         * threads.c, threads.h: added mono_thread_get_abort_signal()
22775         to get a suitable signal for thread abort.
22776
22777 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22778
22779         * metadata.c: fix handling of ExportedType table.
22780
22781 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22782
22783         * icall.c: added WriteWindowsDebugString internal call.
22784
22785 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22786
22787         * reflection.h: added fields to match C# implementation.
22788
22789 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22790
22791         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
22792
22793 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
22794
22795         * gc.h, gc-internal.h: Rename header for GC internal calls to
22796         gc-internal.h from gc.h as to not clash with Boehm GC having its
22797         header installed as <gc.h> in outside include paths.
22798         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
22799         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
22800
22801 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22802
22803         * icall.c: assign minor, build and revision in FillName.
22804
22805 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
22806
22807         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
22808         Added support for running code generated by Reflection.Emit.
22809
22810 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22811
22812         * appdomain.c: check for NULL argument in LoadFrom.
22813
22814 2002-12-10  Dick Porter  <dick@ximian.com>
22815
22816         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
22817
22818 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22819
22820         * appdomain.c: fix buglet when building exe file name.  Handle full
22821         assembly name (needed after latest changes to AssemblyName).
22822         * image.c:
22823         (mono_image_close): free some hashtables.
22824
22825 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
22826
22827         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
22828         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
22829         on some systems (redhat 7.3) 
22830
22831 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
22832
22833         * threads.c: delete the critical section of a sync block,
22834         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
22835
22836 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
22837
22838         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
22839
22840 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22841
22842         * appdomain.[ch]: handle the assembly preload event to try loading the
22843         assemblies using the paths we have in the current domain.
22844
22845         * assembly.[ch]: created an assembly preload hook that is called to try
22846         loading the assembly by other means that the ones provided here.
22847
22848         * domain.c: initialize the domain search path.
22849
22850         From now on, assemblies (TODO: except corlib and System) are loaded
22851         according to these rules when using mono_assembly_load ():
22852
22853                 1. It tries to load the assembly from the ApplicationBase
22854                 of the current domain appending .dll and .exe (TODO: have to
22855                 try loading from name/name.dll and name/name.exe).
22856
22857                 2. It tries the search path specified in PrivateBinPath for the
22858                 current domain (if any).
22859
22860                 3. Previous behavior.
22861
22862 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
22863
22864         * icall.c: implemented GetInterfaceMap() related icall.
22865         * domain.c, loader.h: load MethodInfo in mono_defaults.
22866
22867 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
22868
22869         * gc.c: disable the finalizer thread for now, untill all the issues
22870         with it are resolved.
22871
22872 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
22873
22874         * string-icalls.c: handle embedded nulls in string ctor when the
22875         length is specified.
22876
22877 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
22878
22879         * class.c: look for explicit interface implementation in parent
22880         classes, too.
22881
22882 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
22883
22884         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
22885
22886 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
22887
22888         * gc.c: protect handles with a critical section.
22889
22890 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22891
22892         * icall.c:
22893         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
22894         parameters. If no assembly specified, try getting the type from all
22895         the assemblies in the current domain, else, load the assembly and get
22896         the type from it.
22897
22898 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22899
22900         * marshal.c: applied patch from Aleksey Demakov that fixes
22901         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
22902
22903 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22904
22905         * icall.c: fixed get_location.
22906
22907 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
22908
22909         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
22910         declarations to make it work with older gcc. 
22911
22912         * loader.c (mono_get_method): set signature->pinvoke for native calls
22913
22914 2002-11-20  Dick Porter  <dick@ximian.com>
22915
22916         * threads.c (mono_thread_init): Set the main thread's handle
22917
22918 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
22919
22920         * gc.c: allow compilation without GC support. Changed to match the
22921         mono coding style.
22922
22923 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
22924
22925         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
22926
22927 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
22928
22929         * reflection.c: set a public key token on the core assemblies.
22930
22931 2002-11-18  Dick Porter  <dick@ximian.com>
22932
22933         * threads.c: Split out some thread initialisation so that other
22934         files can set the start callback function.
22935
22936         * gc.c: Run finalisers in a separate thread, to avoid stack
22937         overflow.  Fixes bug 31333.
22938
22939         * appdomain.c: Set up GC finalisation thread.
22940
22941         * reflection.c: 
22942         * object.c: 
22943         * domain.c: Use gc.h macros for GC_malloc
22944         
22945 2002-11-15  Dick Porter  <dick@ximian.com>
22946
22947         * threadpool.c: 
22948         * threads.c:
22949         * appdomain.c: Removed mono_runtime_init_with_attach(),
22950         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
22951         merging the extra parameter with the existing function.  Removed
22952         unneeded code in mono_thread_attach().
22953
22954 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
22955
22956         * image.c (mono_image_loaded_by_guid): a method to get loaded
22957         images by guid. 
22958         (load_metadata_ptrs): we store the guid as string.
22959
22960 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
22961
22962         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
22963
22964         * metadata.c (mono_guid_to_string): imported method form Zoltan
22965         Varga (slightly modified)
22966
22967         * assembly.c (mono_assembly_open): load precompiled code
22968
22969         * loader.h (MonoMethod): we store the method token for use in the
22970         aot compiler. 
22971
22972 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22973
22974         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
22975         the hook function called when an assembly is loaded.
22976         
22977         * domain.c: Modified file.
22978         (mono_domain_assembly_load): removed hash table insertion of assemblies.
22979
22980         Fixes bug #33196.
22981
22982 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
22983
22984         * reflection.c: Map PEFileKind to the value expected by the WinNT
22985         image loader. 
22986
22987 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22988
22989         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
22990         Read until the buffer is filled completely.
22991
22992 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22993
22994         * icall.c: implemented MonoType.InternalGetEvent ().
22995
22996 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22997
22998         * appdomain.c: implemented InitAppDomainSetup. Delayed
22999         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
23000         the entry_assembly.
23001
23002         * assembly.c: base_dir is now an absolute path ending with
23003         G_DIR_SEPARATOR.
23004
23005         * icall.c: modified get_location according to the above changes.
23006
23007         * object.c: init AppDomain.SetupInformation for the default domain after
23008         we have the entry assembly.
23009
23010         * domain.c: when unloading a domain, setup = NULL.
23011
23012 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
23013
23014         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
23015
23016 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
23017
23018         * object.h, object.c: introduced mono_object_get_virtual_method ()
23019         to lookup the method invoked on an object when a callvirt is done on
23020         a method.
23021         * icall.c: make MethodInfo::Invoke() always do a virtual call.
23022
23023 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23024
23025         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
23026         current domain when loaded an assembly and failed to load it.
23027
23028         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
23029
23030 2002-10-31  Dick Porter  <dick@ximian.com>
23031
23032         * icall.c: 
23033         * file-io.h: 
23034         * file-io.c: Return the error status in a parameter, as the
23035         GetLastError() value has long since been blown away if we try and
23036         look it up in a subsequent internal call invocation.  Delete the
23037         GetLastError() internal call, because it's useless.
23038
23039 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
23040
23041         * class.[ch]: added cast_class to fix bug 29517
23042
23043 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
23044
23045         * marshal.c: create valid IL code in the filter clause:
23046         the new JIT is less forgiving:-)
23047
23048 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23049
23050         * icall.c: removed get_property internal call.
23051
23052 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
23053
23054         * appdomain.h domain.c: Added an ID to appdomains.
23055         
23056         * threads.c threads.h icall.c: Implement icall
23057         Thread:GetDomainID(), and remove unused icall 
23058         CurrentThreadDomain_internal.
23059
23060 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23061
23062         * icall.c: Don't recurse through the base types in GetConstructor.
23063         Fixes bug #32063. 
23064
23065 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23066
23067         * mempool.h, mempool.c: added mono_mempool_empty() and
23068         mono_mempool_stats().
23069
23070 2002-10-23  Dick Porter  <dick@ximian.com>
23071
23072         * file-io.c: 
23073         * file-io.h: 
23074         * icall.c: Added MonoIO.GetFileType internal call
23075
23076 2002-10-17  Dick Porter  <dick@ximian.com>
23077
23078         * appdomain.c (mono_runtime_cleanup): Don't signal the async
23079         delegate semaphore before waiting for all threads to finish,
23080         because new threads can also call async delegates.  Fixes bug
23081         32004.
23082
23083         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
23084         of 3 seconds, in case another async job is queued.  (This part is
23085         needed because the bug fix reintroduced the 3s exit lag.)  This
23086         makes the mono_runtime_shutdown flag superfluous.
23087
23088 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23089
23090         * reflection.c: include ehader size in method section headers.
23091         Really check for suplicated modules entries.
23092
23093 2002-10-17  Martin Baulig  <martin@gnome.org>
23094
23095         * debug-mono-symfile.c: Added back support for locals.
23096
23097 2002-10-14  Martin Baulig  <martin@gnome.org>
23098
23099         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
23100         MONO_TYPE_VOID.
23101
23102 2002-10-14  Martin Baulig  <martin@gnome.org>
23103
23104         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
23105         mono_class_get() instead of looking in the class cache. 
23106
23107 2002-10-13  Martin Baulig  <martin@gnome.org>
23108
23109         * debug-mono-symfile.c: Set version number to 28, include the
23110         signature in method names.
23111
23112 2002-10-13  Martin Baulig  <martin@gnome.org>
23113
23114         * debug-mono-symfile.h: Set version number to 27.
23115
23116 2002-10-11  Martin Baulig  <martin@gnome.org>
23117
23118         * gc.c: Don't register/unregister NULL pointers as disappearing links.
23119
23120 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23121
23122         * metadata.c, metadata.h: added helper function to allocate signatures.
23123
23124 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23125
23126         * icall.c: added internal call to get the location of machine.config.
23127
23128 2002-10-08  Martin Baulig  <martin@gnome.org>
23129
23130         * debug-mono-symfile.c: Ignore classes with a pending init for the
23131         moment.
23132
23133 2002-10-03  Dick Porter  <dick@ximian.com>
23134
23135         * threads.c: Freebsd pthread_t is a pointer
23136
23137 2002-10-03  Dick Porter  <dick@ximian.com>
23138
23139         * socket-io.c: Implemented GetHostName_internal
23140
23141 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23142
23143         * mono-config.c:
23144         (mono_config_parse_file): don't leak the text.
23145
23146 2002-10-02  Martin Baulig  <martin@gnome.org>
23147
23148         * debug-mono-symfile.c: Added support for methods.
23149
23150 2002-10-01  Martin Baulig  <martin@gnome.org>
23151
23152         * debug-mono-symfile.c: Don't emit methods and line numbers for
23153         the dynamic symbol file, just write the type table.  We can easily
23154         have an external helper program which creates a symbol file for an
23155         IL file.        
23156
23157 2002-10-01  Dick Porter  <dick@ximian.com>
23158
23159         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
23160         Only add the handle to the cleanup array when we're about to
23161         launch the thread.  Bug 31425 deadlocked when the test was run on
23162         mono under w32.
23163
23164 2002-10-01  Martin Baulig  <martin@gnome.org>
23165
23166         * debug-mono-symfile.c: Added support for properties.
23167
23168 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23169
23170         * reflection.c: unaligned store fix from Mark Crichton
23171         <crichton@gimp.org>.
23172
23173 2002-09-27  Martin Baulig  <martin@gnome.org>
23174
23175         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
23176         New interncall.
23177
23178 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23179
23180         * assembly.h, assembly.c: use a sane API to hook into the assembly
23181         loading process instead of a useless special-purpouse hack
23182         (ngen needs a hook, too, for example).
23183
23184 2002-09-27  Dick Porter  <dick@ximian.com>
23185
23186         * threads.c (mono_thread_init): Call GetCurrentProcess() so
23187         io-layer can set up some process handle info.  Not needed on w32,
23188         but doesn't hurt either.
23189
23190         * process.c: Pass the program name in the second parameter to
23191         CreateProcess, so the path is searched.  Include the working
23192         directory. Implemented process name, process enumeration, and some
23193         process detail internal calls.
23194         
23195         * icall.c: Added internal calls for process lookup, and some
23196         process details
23197
23198 2002-09-26  Martin Baulig  <martin@gnome.org>
23199
23200         * assembly.c (mono_install_open_assembly_hook): New global
23201         function to install a function to be invoked each time a new
23202         assembly is loaded.
23203         (mono_assembly_open): Run this callback function if set.
23204
23205         * debug-mono-symfile.c: Put back line numbers for the dynamic
23206         symbol file and also record the .il file as source file.  This
23207         allows us to install the temporary symbol file as `file.dbg' just
23208         like a compiler-generated one.
23209
23210 2002-09-26  Nick Zigarovich <nick@chemlab.org>
23211
23212         * Corrected typo in gc.c (BOHEM vs BOEHM).
23213
23214 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23215
23216         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
23217         GetProperties. Also avoid calling g_slist_length in GetProperties and
23218         GetMethods.
23219
23220 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23221
23222         * reflection.c: avoid unaligned stores (bug spotted by
23223         Mark Crichton  <crichton@gimp.org>).
23224
23225 2002-09-25  Martin Baulig  <martin@gnome.org>
23226
23227         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
23228         instead of guint64 for addresses and added prologue/epilogue info.
23229
23230 2002-09-25  Martin Baulig  <martin@gnome.org>
23231
23232         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
23233         store line number info.  For the dynamic symbol file, we only need
23234         to provide the JIT generated dynamic line number info for the dynamic
23235         symbol file.
23236
23237 2002-09-25  Martin Baulig  <martin@gnome.org>
23238
23239         * debug-mono-symfile.h: Incremented version number.
23240
23241 2002-09-24  Martin Baulig  <martin@gnome.org>
23242
23243         * class.c (mono_debugger_class_init_func): New global function
23244         pointer variable.
23245         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
23246         call it.
23247
23248         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
23249         function.  This is called via the mono_debugger_class_init_func
23250         hook to add all types to the dynamic type table.
23251         (ves_icall_MonoDebugger_GetType): New interncall to get a class
23252         from its metadata token.
23253
23254         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
23255         New interncall for the debugger.
23256
23257 2002-09-24  Nick Drochak <ndrochak@gol.com>
23258
23259         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
23260         before using it in case it is null.
23261         
23262 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23263
23264         * metadata.c: allow custom modifiers in local var signatures
23265         (bug spotted by Zoltan Varga).
23266
23267 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23268
23269         * class.c: deal with the <Module> class that may have a NULL vtable.
23270         Eliminate warnings.
23271
23272 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23273
23274         * image.c, image.h: more strong name helpers.
23275         * monosn.c: more work: convert pem keys to cryptoapi format.
23276
23277 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23278
23279         * string-icalls.c: speedup IndexOf.
23280
23281 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23282
23283         * icall.c: updates from Zoltan.2.Varga@nokia.com.
23284
23285 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23286
23287         * icall.c: cleanup: use mono_object_domain ().
23288
23289 2002-09-23  Martin Baulig  <martin@gnome.org>
23290
23291         * debug-mono-symfile.c: Improved type support.
23292
23293 2002-09-22  Martin Baulig  <martin@gnome.org>
23294
23295         * debug-mono-symfile.c: Added support for reference types and strings.
23296
23297 2002-09-22  Martin Baulig  <martin@gnome.org>
23298
23299         * debug-mono-symfile.c: Started to work on the type table.
23300
23301 2002-09-21  Martin Baulig  <martin@gnome.org>
23302
23303         * debug-mono-symfile.c: Largely reworked the symbol table format.
23304         The symbol table is now incrementally updated each time a new
23305         method is added.  We're now also using our own magic and version
23306         so that you don't need to recompile all your classes if the
23307         dynamic table changes.
23308         (mono_debug_update_mono_symbol_file): Removed.
23309         (mono_debug_symfile_add_method): New function to add a method.
23310
23311 2002-09-21  Martin Baulig  <martin@gnome.org>
23312
23313         * icall.c
23314         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
23315         New interncall.
23316
23317         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
23318         New interncall to get a method from its metadata token.
23319
23320 2002-09-21  Martin Baulig  <martin@gnome.org>
23321
23322         * debug-mono-symfile.c: Create type table.
23323
23324 2002-09-20  Martin Baulig  <martin@gnome.org>
23325
23326         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
23327
23328 2002-09-20  Martin Baulig  <martin@gnome.org>
23329
23330         * debug-mono-symfile.c: Provide information about params and locals.
23331
23332 2002-09-20  Martin Baulig  <martin@gnome.org>
23333
23334         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
23335         New interncall.
23336
23337         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
23338         interncall to get a method from its metadata token.
23339
23340 2002-09-20  Martin Baulig  <martin@gnome.org>
23341
23342         * debug-mono-symfile.c: Added a few checks for method->header
23343         being non-NULL.  This should never happen, but for the moment
23344         let's use a g_warning() rather than a g_assert().
23345
23346 2002-09-19  Mark Crichton  <crichton@gimp.org>
23347
23348         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
23349         even if support for it isn't present.  Added an #ifdef to fix this.
23350
23351         * socket-io.c: Added checks back for Solaris support.
23352
23353 2002-09-19  Martin Baulig  <martin@gnome.org>
23354
23355         * debug-mono-symfile.c (read_string, write_string): Reflect latest
23356         changes in the symbol file format.
23357
23358 2002-09-18  Martin Baulig  <martin@gnome.org>
23359
23360         * debug-mono-symfile.c: Set version number to 21.
23361
23362 2002-09-18  Dick Porter  <dick@ximian.com>
23363
23364         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
23365         on netbsd.  Fixes bug 30051.
23366
23367 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23368
23369         * reflection.c:
23370         (set_version_from_string): little fix.
23371
23372 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23373
23374         * monosn.c, Makefile.am: added strong name utility.
23375         * reflection.h, reflection.c: implemented delayed signing,
23376         locale, version and hash id assembly attributes.
23377
23378 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23379
23380         * loader.c, metadata.c: load param attributes in signatures.
23381
23382 2002-09-16  Martin Baulig  <martin@gnome.org>
23383
23384         * debug-mono-symfile.c: Added string table with all method names.
23385
23386 2002-09-14  Martin Baulig  <martin@gnome.org>
23387
23388         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
23389         fast method lookup.
23390
23391 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23392
23393         * reflection.c: record the public key token of referenced assemblies.
23394
23395 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23396
23397         * image.c, image.h: added functions to get the strong name and the
23398         public key of an assembly.
23399         * pedump.c: use them.
23400
23401 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
23402
23403         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
23404
23405 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
23406
23407         * marshal.c (mono_marshal_get_managed_wrapper): Added
23408         MONO_TYPE_BOOLEAN 
23409
23410 2002-09-11  Martin Baulig  <martin@gnome.org>
23411
23412         * gc.c: Call GC_unregister_disappearing_link() on all links when
23413         finalizing them, this is necessary to aviod a crash in boehm's
23414         finalize handler.
23415
23416 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23417
23418         * gc.c: handle GetTarget for finalized objects spotted and fixed by
23419         nick@chemlab.org.
23420
23421 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23422
23423         * icall.c: implemented MonoType::Module.
23424         * reflection.c, reflection.h: mono_module_get_object () from
23425         Tomi Pakarinen <tomi.pakarinen@welho.com>.
23426
23427 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23428
23429         * icall.c: ignore overridden methods in GetMethods ().
23430         Fix for FieldInfo::SetValue().
23431         * object.c: handle float/double in runtime invoke.
23432
23433 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23434
23435         * object.c: allow a constructor to be called again on an object.
23436
23437 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23438
23439         * class.h, class.c: move field layout code to it's own function and
23440         export it. Get an interface id earlier. Move fields in MonoClass
23441         so they are more cache friendly and align the bitfields.
23442         * loader.c: temporary handle get_param_names() for a runtime method.
23443         * reflection.c, reflection.h: more code to handle runtime creation of
23444         types.
23445
23446 2002-09-09  Martin Baulig  <martin@gnome.org>
23447
23448         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
23449         signature with the pinvoke field being set for the actual call.
23450
23451 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23452
23453         * icall.c: removed some unused icalls. Start of map of glib charsets
23454         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
23455
23456 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23457
23458         * debug-helpers.c: break infinite loop (found and fixed by
23459         Holger Arnold <harnold@gmx.de>).
23460
23461 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23462
23463         * icall.c: target may be null in create_delegate.
23464
23465 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23466
23467         * marshal.c: handle a boolean return type.
23468
23469 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23470
23471         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
23472
23473 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23474
23475         * gc.c: fix weakreferences.
23476
23477 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23478
23479         * icall.c: added icall to get default codepage.
23480
23481 2002-09-03  Dick Porter  <dick@ximian.com>
23482
23483         * threads.h: 
23484         * threads.c: Use MonoThread instead of MonoObject where
23485         apropriate.
23486
23487         Store running thread objects in a hash table, so that we have all
23488         the info to hand when waiting for them to finish
23489         (means we don't need OpenThread() any more, so mingw builds should
23490         be fully functional again.)
23491
23492         * verify.c:
23493         * object.h: Added thread ID to MonoThread
23494
23495 2002-09-03  Martin Baulig  <martin@gnome.org>
23496
23497         * icall.c (System.Reflection.Assembly::get_location): New interncall.
23498
23499 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23500
23501         * icall.c: fixed leak in get_temp_path. Thanks lupus.
23502
23503 2002-09-03  Martin Baulig  <martin@gnome.org>
23504
23505         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
23506         argument to store the end address of the disassembled instruction.
23507
23508         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
23509         here from debug-symfile.h.
23510         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
23511         JIT into this struct.
23512         (MonoSymbolFile): Added `char *image_file' field.
23513         (MonoDebugGetMethodFunc): Removed.
23514         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
23515         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
23516         (mono_debug_find_method): New method.
23517
23518         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
23519         create a full symbol file.
23520         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
23521         and static symbol files.
23522         (mono_debug_find_method): The symbol file keeps an internal method hash,
23523         call this to get a MonoDebugMethodInfo from a MonoMethod.
23524
23525         * debug-symfile.[ch]: Removed.
23526
23527 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
23528
23529         * image.c (do_mono_image_open): Remove linker version check.
23530
23531 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
23532
23533         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
23534         wrappers for instance methods.
23535         
23536 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23537
23538         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
23539
23540 2002-08-28  Dick Porter  <dick@ximian.com>
23541
23542         * Makefile.am: Export HOST_CC for w32 builds
23543
23544 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23545
23546         * file-io.c process.c: MonoString are null terminated, no
23547         need for mono_string_to_utf16() anymore.
23548
23549 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23550
23551         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
23552
23553 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
23554
23555         * icall.c, reflection.h: speedup System.MonoType.
23556
23557 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23558
23559         * reflection.c: allow null as the value of a string argument in
23560         custom attributes constructors.
23561
23562 2002-08-27  Martin Baulig  <martin@gnome.org>
23563
23564         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
23565         `trampoline_address' field.
23566
23567 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
23568
23569         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
23570         check (fixes bug #29486) 
23571
23572 2002-08-27  Martin Baulig  <martin@gnome.org>
23573
23574         * debug-mono-symfile.c: Changed the file format in a way that allows us
23575         open it read-only and to use a specially malloced area for all the
23576         dynamic data.  We can now also generate a symbol file on-the-fly if we're
23577         debugging IL code and there is no MCS generated symbol file for it.
23578
23579 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23580
23581         * object.c: added a define for a good string and array
23582         creation speedup (not enabled by default because we need to deal with
23583         the synch stuff).
23584
23585 2002-08-26  Martin Baulig  <martin@gnome.org>
23586
23587         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
23588         function to create a dynamic symbol file.  This is used by the
23589         debugger to create a symbol file for IL code on-the-fly.
23590
23591 2002-08-26  Martin Baulig  <martin@gnome.org>
23592
23593         * loader.c (mono_lookup_pinvoke_call): Include the error message
23594         from g_module_error() in the error message.
23595
23596 2002-08-24  Martin Baulig  <martin@gnome.org>
23597
23598         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
23599         function to update the symbol file.  The symbol file is mmap()ed
23600         writable, but private.  This allows us to install the symbol file
23601         together with the assembly.
23602
23603 2002-08-24  Martin Baulig  <martin@gnome.org>
23604
23605         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
23606         but they can read the new symbol file format which mcs is now creating.
23607
23608         * debug-symfile.c (mono_debug_find_source_location): Moved to
23609         debug-mono-symfile.c; this is now operating on the new symbol file.
23610
23611 2002-08-23  Martin Baulig  <martin@gnome.org>
23612
23613         * debug-helpers.c (mono_method_desc_from_method): New function to get
23614         a MonoMethodDesc from a MonoMethod.
23615
23616 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23617
23618         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
23619         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
23620
23621 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
23622
23623         * string-icalls.[ch]: make helper methods static.
23624
23625 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23626
23627         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
23628         types to it and to SetValueInternal.
23629
23630         * object.c: Moved handle_enum label to its proper place. This was the
23631         f... bug! ;-)
23632
23633         This time i compiled mcs and gtk-sharp and they both work.
23634
23635 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23636
23637         * icall.c: reverted partially my previous patch until 
23638         object.c:set_value handles enums correcly.
23639
23640 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23641
23642         * icall.c:
23643         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
23644         (ves_icall_System_Environment_get_MachineName): removed warning when
23645         compiling under cygwin.
23646
23647 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23648
23649         * object.c: fixed field_get_value() for reference types.
23650
23651 2002-08-22  Dick Porter  <dick@ximian.com>
23652
23653         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
23654         Don't free a buffer while it's still needed.  Patch from Jonathan
23655         Liger <Jonathan.liger@wanadoo.fr>
23656
23657 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
23658
23659         * icall.c (ves_icall_System_Environment_get_Platform): Add new
23660         internal call.
23661
23662 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
23663
23664         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
23665         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
23666
23667         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
23668         we call unmanaged code which throws exceptions.
23669
23670 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23671
23672         * appdomain.h: added per-domain entry_assembly.
23673         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
23674         arguments.
23675         * icall.c: Assembly::GetEntryAssembly icall.
23676         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
23677         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
23678
23679 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23680
23681         * appdomain.h, gc.c: added mono_domain_finalize ().
23682
23683 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23684
23685         * object.c:
23686         (mono_print_unhandled_exception): changed g_warning by g_printerr
23687         because g_log has a 1024 characters limit (yeah, i got a big stack
23688         trace). Don't print exception name, that should be in ToString 
23689         returned string.
23690
23691 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23692
23693         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
23694         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
23695
23696 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23697
23698         * object.c:
23699         (mono_print_unhandled_exception): after previous commit, i realized
23700         that MS calls ToString on the exception. I changed this function to
23701         do that. This way we get stack_trace for free.
23702
23703 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23704
23705         * object.c:
23706         (mono_print_unhandled_exception): invoke Message property instead of
23707         getting 'message' field from Exception. Don't allocate memory for
23708         'trace' and 'message' if not needed.
23709
23710 2002-08-18  Dick Porter  <dick@ximian.com>
23711
23712         * unicode.c: Fix asserts to match Encoder.cs checks
23713
23714 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23715
23716         * marshal.c: fix unaligned store issue and a few wrong
23717         opcode argument types.
23718
23719 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23720
23721         * icall.c: added GetUninitializedObjectInternal internal call.
23722
23723 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
23724
23725         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
23726         to the right domain.
23727
23728 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
23729
23730         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
23731
23732         * class.c (class_compute_field_layout): set blittable to false for Strings
23733
23734         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
23735
23736 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23737
23738         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
23739         first chunk of code to create types at runtime. Code to
23740         handle ReflectedType/DeclaringType. Make reflection handles
23741         domain specific.
23742
23743 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
23744
23745         * class.c: set correct name in arrays.
23746
23747 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
23748
23749         * appdomain.c (mono_domain_transfer_object): make it work with
23750         valuetypes. bug fixes.
23751
23752 2002-08-12  Dick Porter  <dick@ximian.com>
23753
23754         * object.h: Rename some parameters to avoid c++ keywords (Patch
23755         from Joseph Wenninger <kde@jowenn.at>)
23756
23757 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
23758
23759         * icall.c: added icall to implement Assembly.GetFile*.
23760
23761 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23762
23763         * reflection.h, reflection.c: code to embed managed resources.
23764
23765 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23766
23767         * class.c: move all the type size stuff into
23768         class_compute_field_layout().
23769
23770 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23771
23772         * class.c: ensure enums have always the correct instance size.
23773         * unicode.c: remove wrong assert.
23774
23775 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23776
23777         * assembly.c: fix mem corruption issue.
23778         * image.h, image.c: added mono_image_get_resource () to access
23779         managed resources.
23780         * icall.c: implemented Assembly.EntryPoint property and some
23781         Managed Resources related internalcalls.
23782
23783
23784 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23785
23786         * image.c, image.h: impemented mono_image_get_entry_point ().
23787         * appdomain.c: use mono_image_get_entry_point.
23788
23789 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23790
23791         * reflection.c: support the object type argument when loading
23792         custom attributes.
23793
23794 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
23795
23796         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
23797         String as return type.
23798
23799 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
23800
23801         * reflection.c: fix encoding of named args for custom attrs to match
23802         the ms implementation. Read them back when instantiating custom
23803         attributes.
23804
23805 2002-08-02  Radek Doulik  <rodo@ximian.com>
23806
23807         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
23808         by Dietmar as quick fix
23809         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
23810         16 as stack size, used on more places as quick fix before Dietmar
23811         will fix it properly
23812
23813 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23814
23815         * object.h, object.c: added accessors for fields and properties.
23816
23817 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23818
23819         * class.c, class.h: made mono_class_get_field_from_name ()
23820         loop on parent types.
23821         Added mono_class_get_property_from_name ().
23822
23823 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23824
23825         * class.c, class.h: move the code to setup the type vtable in its own
23826         function so that it can be reused also for types created at runtime.
23827         Eliminate the "class" identifier from the header file.
23828         * reflection.c: setup the vtable for enums so that we can create
23829         objects for use in SetConstant ().
23830
23831 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
23832
23833         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
23834         instead of the delegate itself as this pointer (bug #28383)
23835
23836 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
23837
23838         * marshal.c (mono_marshal_get_managed_wrapper): added return type
23839         conversions.
23840
23841 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23842
23843         * loader.c: don't set the pinvoke bit on icalls.
23844
23845 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
23846
23847         * debug-helpers.c (mono_method_full_name): only print a number to
23848         indicate wrapper type (so that the output is more readable in traces).
23849
23850 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
23851
23852         * class.c (mono_class_init): include method override patch from Paolo
23853
23854 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
23855
23856         * icall.c: fixed GetTypeCode().
23857
23858 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
23859
23860         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
23861         use real delegate invoke function to make it work with multicast
23862         delegates (fix bug# 28291).
23863
23864 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23865
23866         * object.c: load constant strings.
23867
23868 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23869
23870         * reflection.c: no magic numbers.
23871         * tabledefs.h: security action enum.
23872
23873 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23874
23875         * assembly.c: fix possible memory corruption.
23876
23877 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23878
23879         * reflection.h, reflection.c: added support for linking resources.
23880         * verify.c: check we have an updated corlib.
23881
23882 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
23883
23884         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
23885         string arrays.
23886         (mono_marshal_string_array): null terminate unmanaged string arrays.
23887         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
23888
23889 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23890
23891         * icall.c: Type.GetType () can now return also types from the
23892         calling assembly.
23893
23894 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23895
23896         * loader.h, loader.c: stack walking support.
23897         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
23898         GetCallingAssembly.
23899
23900 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
23901
23902         * marshal.c: added optimisations for blittable types 
23903
23904         * class.c (mono_array_class_get): do not set blittable attribute on arrays
23905         (mono_class_setup_mono_type): set blittable attribute for single
23906         and double.
23907
23908         * marshal.c (mono_string_utf8_to_builder): impl.
23909         (mono_string_builder_to_utf8): impl.
23910         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
23911
23912 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
23913
23914         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
23915         (mono_marshal_get_managed_wrapper): impl. byref types
23916
23917 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23918
23919         * icall.c:
23920         (search_method): don't display debug message. 
23921
23922 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23923
23924         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
23925
23926 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23927
23928         * appdomain.c: set the missing filename when throwing exception.
23929
23930 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23931
23932         * metadata.c (mono_type_size): code cleanup
23933         (mono_type_stack_size): removed some test code
23934
23935 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
23936
23937         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
23938         mono_get_exception_file_not_found now.
23939
23940         * exception.c (mono_exception_from_name_two_strings): New version
23941         that will call a constructor with two string arguments. 
23942         (mono_get_exception_file_not_found): New helper routine, used to
23943         report file-not-found errors.
23944
23945 2002-07-20  Dick Porter  <dick@ximian.com>
23946
23947         * process.h:
23948         * process.c: Pass file handles to CreateProcess
23949         
23950         * icall.c:
23951         * file-io.h:
23952         * file-io.c: Implemented CreatePipe
23953
23954 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23955
23956         * metadata.c (mono_get_param_info): set alignment for value types
23957
23958 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23959
23960         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
23961         Constify mono_domain_assembly_open().
23962         * loader.c: handle null namespace in icalls.
23963
23964 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23965
23966         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
23967         (emit_str_to_ptr_conv): marshal object as structs
23968
23969         * metadata.c (mono_type_to_unmanaged): marshal object as structs
23970
23971         * marshal.c (mono_marshal_get_runtime_invoke): support value types
23972
23973 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
23974
23975         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
23976         (mono_marshal_get_native_wrapper): we an now return value types
23977
23978 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23979
23980         * verify.c: more checks implemented.
23981
23982 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
23983
23984         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
23985         (fix bug #27695)
23986         (mono_marshal_get_native_wrapper): allow byref arguments
23987         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
23988         impl. PtrToStringXXX methods
23989         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
23990         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
23991         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
23992         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
23993         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
23994
23995 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23996
23997         * reflection.c: fix buglet in parsing an assembly name.
23998
23999 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24000
24001         * marshal.c (emit_ptr_to_str_conv): first impl.
24002
24003 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24004
24005         * object.c, class.h: cache the vtable in the class as suggested by
24006         vargaz@freemail.hu (Zoltan Varga).
24007
24008 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24009
24010         * class.h, loader.c: added mono_field_from_token().
24011         * verify.c: first cut of type checking code.
24012
24013 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24014
24015         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
24016
24017 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
24018
24019         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
24020         (fix bug #27782)
24021         (mono_marshal_get_remoting_invoke): impl.
24022         (mono_delegate_begin_invoke): impl.
24023         (mono_mb_emit_save_args): impl.
24024         (mono_delegate_end_invoke): impl.
24025         (mono_marshal_get_delegate_begin_invoke):
24026         (mono_marshal_get_delegate_end_invoke):
24027         (mono_marshal_get_delegate_invoke): generate a special name for
24028         those methods (including the signature) and associate them whith
24029         the delegate class. 
24030
24031 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
24032
24033         * reflection.[ch]: 
24034         (mono_reflection_type_from_name): now it has a MonoImage parameter
24035         which is used as the default image to search the type in. If the image
24036         is NULL or getting the type from it fails, it defaults to corlib.
24037
24038         * icall.c: changed 1 call to mono_reflection_type_from_name to match
24039         new parameter.
24040
24041 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24042
24043         * reflection.c: update the parameter table index.
24044
24045 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24046
24047         * domain.c: don't include the mark byte in the string hash.
24048
24049 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24050
24051         * icall.cs: icall for Type.GetTypeCode ().
24052         * verify: a couple of fixes and disabled local initialization checks.
24053
24054 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
24055
24056         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
24057
24058         * debug-helpers.c (mono_method_full_name): print the type of the
24059         runtime wrapper
24060
24061         * metadata.c (mono_signature_hash): a hash function for signatures
24062         (mono_signature_hash): better hash algorithm
24063
24064         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
24065
24066         * debug-helpers.c (mono_method_full_name): this can now generate
24067         method names with signatures
24068
24069         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
24070         method dont have this pointers.
24071
24072 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24073
24074         * reflection.c: fixup typebuilder tokens.
24075         * image.c: fix buglet.
24076         * marshal.h: remove whitespace.
24077         * metadata.h, metadata.c: reinstate code that was removed.
24078         * verify.c: handle catch directives and fix another couple of bugs.
24079
24080 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
24081
24082         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
24083         (mono_marshal_get_native_wrapper): make it comp. with the old code
24084         (mono_marshal_get_native_wrapper): support boolean
24085         (mono_marshal_get_managed_wrapper): support more types
24086
24087 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
24088
24089         * class.c (class_compute_field_layout): compute class->blittable attribute.
24090
24091 2002-07-09  Dick Porter  <dick@ximian.com>
24092
24093         * threads.c: Make the thread cleaning up cope with threads that
24094         call ExitThread()
24095
24096 2002-07-08  Radek Doulik  <rodo@ximian.com>
24097
24098         * reflection.c (method_encode_code): use non-translated values to
24099         compute finally_start, this fixes exception handling on ppc, yay!
24100
24101         * decimal.h (struct signscale): fix endianess
24102
24103 2002-07-07  Radek Doulik  <rodo@ximian.com>
24104
24105         * reflection.c: swap box_val and not val
24106
24107 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24108
24109         * reflection.c, reflection.h: handle full assembly info in type name.
24110         Handle Type arguments when loading custom attributes.
24111         * icall.c: updated to use new mono_reflection_type_from_name () method.
24112
24113 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24114
24115         * loader.c:
24116         (method_from_memberref): also print assembly name when method not found.
24117
24118 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24119
24120         * icall.c:
24121         (ves_icall_TypeGetProperties): fixed bug #27473. 
24122
24123 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24124
24125         * reflection.c: display image name and token when cannot find the
24126         .ctor for an attribute.
24127
24128 2002-07-05  Martin Baulig  <martin@gnome.org>
24129
24130         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24131
24132 2002-07-04  Dick Porter  <dick@ximian.com>
24133
24134         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
24135         compile on mingw.  This will cause mingw builds to not wait for
24136         subthreads to terminate after the main thread does.  I've lodged a
24137         bug with the mingw developers for them to wrap OpenThread().
24138
24139 2002-07-03  Dick Porter  <dick@ximian.com>
24140
24141         * threads.c: Store thread IDs instead of handles, because
24142         GetCurrentThread() returns a pseudohandle and therefore stores
24143         useless values.  mono_thread_cleanup() continues checking the
24144         array of threads until it is empty, to cope with subthreads
24145         spawning new threads after the main thread has finished.
24146
24147         * profiler.h:
24148         * profiler.c:
24149         * profiler-private.h: Pass the thread ID to thread profiler
24150         functions, instead of a handle
24151
24152 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24153
24154         * verify.c: fixes to make it more usable.
24155         * pedump.c: added --verify code to verify IL code in an assembly.
24156
24157 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24158
24159         * reflection.c: turn errors into warnings to allow compiling corlib.
24160
24161 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24162
24163         * reflection.c: add special cases to compile corlib.
24164
24165 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24166
24167         * reflection.c: handle properties with only a set method.
24168
24169 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24170
24171         * opcodes.h: add enum with opcodes in opval order.
24172
24173 2002-07-01  Dick Porter  <dick@ximian.com>
24174         
24175         * object.h:
24176         * object.c (mono_runtime_run_main): Removed unneeded argument
24177
24178 2002-06-28  Martin Baulig  <martin@gnome.org>
24179
24180         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24181
24182 2002-06-27  Dick Porter  <dick@ximian.com>
24183
24184         * threads.c: Store the handle in both the parent thread and in the
24185         subthread, to minimise the time between starting a new thread and
24186         storing its ID.
24187
24188 2002-06-26  Dick Porter  <dick@ximian.com>
24189
24190         * appdomain.c (mono_runtime_cleanup): Close the socket library
24191         after all the threads have finished, not before
24192
24193 2002-06-26  Martin Baulig  <martin@gnome.org>
24194
24195         * debug-symfile.c (mono_debug_find_source_location): Added
24196         `guint32 *line_number' argument.  If it's not NULL, store the line number
24197         there and return the file name without the line number.
24198
24199 2002-06-25  Dick Porter  <dick@ximian.com>
24200
24201         * icall.c:
24202         * process.h:
24203         * process.c: Process forking and other support functions
24204
24205 2002-06-25  Dick Porter  <dick@ximian.com>
24206
24207         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
24208         things dont happen when the image is closed.
24209         (mono_image_lookup_resource): Walk the resource section looking
24210         for a particular entry
24211
24212         * cil-coff.h: PE resource section decoding
24213
24214 2002-06-25  Dick Porter  <dick@ximian.com>
24215         
24216         * assembly.h:
24217         * assembly.c: 
24218         (mono_assembly_foreach): Accessor functions to walk the list of
24219         loaded assemblies
24220         (mono_assembly_set_main):
24221         (mono_assembly_get_main): Process methods need to know which
24222         assembly is the "main" one
24223
24224         * object.c (mono_runtime_run_main): Record the main assembly
24225
24226         * debug-helpers.c: Fix typo
24227
24228 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
24229
24230         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
24231         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
24232
24233 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24234
24235         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
24236
24237 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
24238
24239         * image.c (do_mono_image_open): Initialize reference count,
24240         otherwise we leak the MonoImage.
24241
24242 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24243
24244         * reflection.c: small tweak to handle self-hosting.
24245
24246 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24247
24248         * reflection.c: fix type name parse code.
24249
24250 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24251
24252         * reflection.c: break out of the loop.
24253         * image.c: special case corlib.
24254
24255 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24256
24257         * reflection.c: add all the custom attrs at the end to ensure the
24258         ctors have been properly initialized when the attributes are defined
24259         in the current assembly.
24260
24261 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24262
24263         * reflection.c: handle correctly multiple-nested types.
24264
24265 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24266
24267         * row-indexes.h: fix typos.
24268         * reflection.c: adjust for typos and fix method_def_or_ref
24269         encoding in MethodImpl table.
24270
24271 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24272
24273         * reflection.c: fix entry point patching (thanks Serge!).
24274
24275 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
24276
24277         * verify.c: add check for System.Exception
24278
24279 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24280
24281         * image.c, class.c: minifix for code just c&p'ed.
24282         * reflection.c: warning fix.
24283         * object.h, loader.h, domain.c: load also StringBuilder.
24284
24285 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24286
24287         * marshal.h, marshal.c: some support code to handle complex marshaling.
24288
24289 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24290
24291         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
24292         Better signatures with vtable error dump.
24293
24294 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
24295
24296         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
24297
24298 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
24299
24300         * icall.c (ves_icall_Type_GetField): impl.
24301
24302 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24303
24304         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
24305         to retrieve a marshal description blob for a field or param.
24306
24307 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24308
24309         * reflection.h, reflection.c: change order of nested type emission
24310         to avoid table corruption. The NestedTypes table is sorted.
24311         * icall.c: change order of GetConstructor results to workaround mcs bug.
24312
24313 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24314
24315         * reflection.h, reflection.c: handle field and param marshal
24316         information.
24317
24318 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24319
24320         * icall.c, marshal.c marshal.h: more Marshal class implementation.
24321
24322 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24323
24324         * reflection.c: fix call convention.
24325
24326 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24327
24328         * reflection.h, reflection.c: mono_image_get_memberref_token()
24329         takes a type instead of a class, now. Added
24330         mono_image_get_array_token() to create tokens for the special
24331         multi-dim array methods.
24332
24333 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24334
24335         * assembly.c: handle modules (no assembly table). Split
24336         loading references in its own function.
24337         * class.c: handle moduleref resolution scope.
24338         * image.c, image.h: cache module name in image.
24339
24340 2002-06-07  Martin Baulig  <martin@gnome.org>
24341
24342         * reflection.c (mono_image_get_type_info): Only add a class layout entry
24343         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
24344
24345 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24346
24347         * icall.c: more signature fixes that used uint instead of int.
24348
24349 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24350
24351         * reflection.c: fixed signature of field refs.
24352
24353 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24354
24355         * class.c, reflection.c: handle typerefs of nested types
24356         (both on read and when writing files).
24357
24358 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24359
24360         * icall.c: fix method signatures that tried to workaround the previous
24361         typo, d'oh!
24362
24363 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24364
24365         * debug-helpers.c: fix typo.
24366
24367 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24368
24369         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
24370         rewrote the PE/COFF writing code (our programs are understood by the
24371         ms runtime, now).
24372
24373 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24374
24375         * gc.c, gc.h, icall.c: weakreference support.
24376
24377 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24378
24379         * Makefile.am, mono-config.c: use $(sysconfdir).
24380
24381 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24382
24383         * icall.c: changed default precision of Double.ToString() to 15.
24384         Fixed memory leak. Unified with Single.ToString.
24385
24386 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24387
24388         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
24389
24390 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24391
24392         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
24393         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
24394         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
24395         and myself.
24396
24397 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24398
24399         * debug-symfile.c, sysmath.c: yet more compilation fixes.
24400
24401 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24402
24403         * reflection.c, socket-io.c: more compilation fixes.
24404
24405 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24406
24407         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
24408         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
24409         unicode.c: warning and compiler compatibility fixes.
24410
24411 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24412
24413         * class.h, metadata.c: fixed warnings/compilation errors.
24414
24415 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24416
24417         * Makefile.am, mono-config.c, mono-config.h: configuration file
24418         support routines.
24419         * loader.c, loader.h: make Dll mapping configurable at runtime in the
24420         config file. Export methods to insert and lookup mappings.
24421
24422 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24423
24424         * reflection.c: handle types and boxed objects in custom attr
24425         constructors.
24426
24427 2002-05-30  Martin Baulig  <martin@gnome.org>
24428
24429         * debug-symfile.c
24430         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
24431
24432 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
24433
24434         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
24435         to lookup the implmap row for a P/Invoke method.
24436         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
24437         P/Invoke method from the runtime on an as needed basis.
24438
24439 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
24440
24441         * metadata.c (mono_metadata_parse_signature): impl.
24442
24443 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24444
24445         * class.c: handle .pack directive.
24446
24447 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24448
24449         * object.c: initialize static fields with RVA data.
24450
24451 2002-05-25  Martin Baulig  <martin@gnome.org>
24452
24453         * debug-symfile.c
24454         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
24455
24456 2002-05-24  Martin Baulig  <martin@gnome.org>
24457
24458         * debug-symfile.c
24459         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
24460         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
24461         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
24462
24463 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24464
24465         * object.c: special case string ctros in invoke.
24466         * gc.c: silly whitespace changes.
24467
24468 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
24469
24470         * threadpool.[ch]: impl. a threadpool that can
24471         be used by mint and mono.
24472
24473 2002-05-22  Martin Baulig  <martin@gnome.org>
24474
24475         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
24476         The first argument is now a `MonoReflectionModuleBuilder *', the return
24477         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
24478         `methods' field to get the method builder.  The `token' argument is the
24479         unfixed token.
24480
24481         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
24482         invalid characters instead of g_assert_not_reached()ing.  This seems
24483         to be the behaviour of mscorlib.
24484
24485 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
24486
24487         * object.c (mono_runtime_invoke_array): applied patch from Rachel
24488         Hestilow to fix bug #25104
24489
24490 2002-05-21  Martin Baulig  <martin@gnome.org>
24491
24492         * debug-symfile.c (mono_debug_find_source_location): New function.
24493         Looks up an IL offset in the line number table and returns the source
24494         location as a string.
24495
24496 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24497
24498         * icall.c:
24499         (mono_double_ToStringImpl): changed %f by %g until we have something
24500         better.
24501
24502 2002-05-21  Nick Drochak  <ndrochak@gol.com>
24503
24504         * icall.c : Use different name for Math.Pow's icall.  Needed to check
24505         parameters first in C#.
24506
24507 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24508
24509         * icall.c, reflection.h: added icall to get info about an event.
24510
24511 2002-05-20  Radek Doulik  <rodo@ximian.com>
24512
24513         * object.c (mono_value_box): don't use memcpy for boxing on BIG
24514         endian
24515         (mono_value_box): don't use memcpy for small sizes on
24516         architectures with unaligned access
24517
24518 2002-05-20  Martin Baulig  <martin@gnome.org>
24519
24520         * reflection.c (mono_reflection_setup_internal_class): Don't crash
24521         if `tb->parent == NULL'.
24522         (mono_reflection_create_internal_class): New function.  This is
24523         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
24524         for enum types.
24525
24526         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
24527         New interncall.
24528
24529 2002-05-19  Martin Baulig  <martin@gnome.org>
24530
24531         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
24532         argument to get the length, don't default to the array length.
24533
24534 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
24535
24536         * assembly.c (mono_assembly_setrootdir): New function used to
24537         override the MONO_ASSEMBLIES directory.
24538
24539 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24540
24541         * icall.c: ValueType_GetHashCode() initialize local var.
24542
24543 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24544
24545         * reflection.c: sort custom attributes table.
24546
24547 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24548
24549         * reflection.c: support named args in custom attributes (write support).
24550
24551 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24552
24553         * reflection.c: fix finally position calculation.
24554
24555 2002-05-15  Radek Doulik  <rodo@ximian.com>
24556
24557         * reflection.c: fixed endianess at many places
24558
24559         * icall.c (ves_icall_InitializeArray): comment out debug msg
24560
24561 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
24562
24563         * object.c (mono_unhandled_exception): new function to handle
24564         unhandled exceptions.
24565         (mono_unhandled_exception): call the UnhandledException event.
24566         (mono_runtime_delegate_invoke): impl.
24567
24568 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
24569
24570         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
24571         returns the RVA, not the direct pointer to the data. Handle the case
24572         when the class size is fixed.
24573
24574 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24575
24576         * reflection.c: fix some endianess issues.
24577
24578 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
24579
24580         * object.c (mono_runtime_invoke): is now able to catch exceptions.
24581
24582         * threads.c (mono_thread_init): added a callback which is invoked
24583         at thread start.
24584
24585 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24586         
24587         * icall.c: make GetHashCode return non-negative values.
24588
24589 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24590
24591         * object.c, icall.c, gc.c: revert to address-based hashcode.
24592
24593 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
24594
24595         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
24596
24597 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24598
24599         * icall.c, class.c: special case <Module>.
24600
24601 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
24602
24603         * icall.c: fix bug in GetNow().
24604
24605 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
24606
24607         * object.c (mono_runtime_class_init): make sure that we call all
24608         static class constructors.
24609
24610 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24611
24612         * reflection.c: sort methodsemantics table.
24613
24614 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24615
24616         * reflection.h, reflection.c: honour init locals setting.
24617
24618 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
24619
24620         * icall.c: copied Double ToStringImpl for Single ToStringImpl
24621
24622 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24623
24624         * reflection.c: support ContructorBuilders in attribute blob creation.
24625
24626 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24627
24628         * reflection.c: some changes to build a binary that can be run
24629         directly in windows.
24630
24631 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24632
24633         * loader.c: print a big message when an icall can't be found.
24634
24635 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24636
24637         * string-icalls.c: fix bug 24248.
24638
24639 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24640
24641         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
24642         icall.c, reflection.h: separate assembly loading by pathname and by
24643         assembly name. Use the MONO_PATH env var to search for assemblies.
24644
24645 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24646
24647         * assembly.c, image.h: add some support for assemblies
24648         with multiple modules.
24649         * class.c, class.h: export mono_class_from_typeref().
24650         * loader.c: remove duplicated code and use mono_class_from_typeref(),
24651         instead.
24652
24653 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24654
24655         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
24656         documentation says (the ECMA one is correct).
24657
24658 2002-05-02  Dick Porter  <dick@ximian.com>
24659
24660         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
24661         Don't name the synchronisation mutex.
24662
24663 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
24664
24665         * rand.c
24666         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
24667         Make the prototypes match.
24668         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
24669         Same.
24670
24671         * icall.c
24672         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
24673         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
24674         all systems have tm.tm_zone, so use strftime() with %Z to print
24675         the timezone abreviation into a temp string.
24676
24677         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
24678         rather than mono_array_addr() on a MonoString on Big Endian
24679         machines.
24680
24681 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
24682
24683         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
24684         fix bug 24041
24685
24686 2002-04-30  Dick Porter  <dick@ximian.com>
24687
24688         * socket-io.c: Cope with SOCKET being an integer rather than a
24689         pointer now.
24690
24691         * threads.c: Added Thread_free_internal, to deal with thread
24692         handle cleanup.  Moved calls to handle_store() and handle_remove()
24693         to start_wrapper(), so each can only be called once.  Allocate
24694         synchronisation blocks with GC_malloc(), and use GC finalisation
24695         to close the handles.
24696
24697         * icall.c: added System.Threading.Thread::Thread_free_internal
24698
24699 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24700
24701         * icall.c: support Environment.Exit, CommandLineArgs().
24702
24703 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24704
24705         * object.c, object.h: added mono_runtime_run_main () and
24706         mono_runtime_get_main_args () for use in System.Environment.
24707
24708 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24709
24710         * gc.c: fix thinko, enable actual finalization since the jit is now
24711         fixed.
24712
24713 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24714
24715         * gc.c, object.c: take into account that an object may be offset wrt the address
24716         returned by GC_malloc().
24717
24718 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
24719
24720         * image.c: handle files without entries in the assembly table (modules).
24721
24722 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
24723
24724         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
24725         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
24726         allowed to be null when it's System.Object class setup.
24727
24728 2002-04-27  Martin Baulig  <martin@gnome.org>
24729
24730         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
24731         if `tb->parent == NULL' rather than crashing.
24732
24733 2002-04-28  Nick Drochak  <ndrochak@gol.com>
24734
24735         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
24736         calling acos() where asin() should have been called.
24737
24738 2002-04-26  Martin Baulig  <martin@gnome.org>
24739
24740         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
24741         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
24742         there's a subdirectory called `System', but we don't want to read that
24743         subdirectory as an assembly.
24744
24745 2002-04-25  Martin Baulig  <martin@gnome.org>
24746
24747         * debug-symfile.c: Reflect latest MonoString changes.
24748
24749 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24750
24751         * rand.c, rand.h: instance method icalls need to have an explicit
24752         this pointer as first argument in the C implementation.
24753
24754 2002-04-25  Nick Drochak <ndrochak@gol.com>
24755
24756         * icall.c: Fix typo in map for GetNonZeroBytes
24757
24758 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24759
24760         * string-icalls.c : String does now passes unit tests without any 
24761         errors, the following changes has been made:
24762         
24763         Implemented replace methods.
24764         Renaming of methods to (try) follow the standard.
24765         Fixed compare ordinal
24766         Made all memory allocated directly to function instead of via icall function.
24767         Small performance fix in is_in_array function
24768                         
24769  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
24770
24771         c (mono_string_Internal_ctor_charp_int_int):
24772         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
24773         sindex < 0, throw ArgumentOutOfRangeException instead of
24774         ArgumentNullException.
24775
24776         Added new check for length == 0, however
24777         I need to make it return String.Empty from the C code.
24778         
24779         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
24780         that calculate the length for us here.
24781         
24782         (mono_string_Internal_ctor_sbytep_int_int): Replaced
24783         mono_string_new_utf16 with mono_string_new, since value is utf8.
24784
24785 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24786
24787         * object.c: register the object for finalization if needed.
24788         Allocate one more char in the string for the terminating 0 char.
24789
24790 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24791
24792         * class.c, class.h, image.c: check if a type implemenst a destructor.
24793         Use the proper key for array class lookups.
24794         * icall.c: register the icalls in the System.GC class.
24795         * gc.c, gc.h: GC-related functions and icalls.
24796
24797 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24798
24799         * icall.c:
24800         * socket-io.c:
24801         * unicode.c: free some strings gotten from mono_string_to_utf8 and
24802         changed a couple of free () by g_free ().
24803
24804         * decimal.c: one-liner in the comments for decimal2string ().
24805
24806 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24807
24808         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
24809
24810 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24811
24812         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
24813         * object.c (mono_runtime_invoke_array) : handle null in params
24814
24815 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24816
24817         * string-icalls.c: fixed bug in split (one off bug)
24818
24819 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24820
24821         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
24822         * icalls.c: added String::Equals as internal method
24823
24824 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24825
24826         * threads.c: fixed bug in the double interlocked functions
24827
24828 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
24829
24830         * threads.c: implemented all of the new interlocked icalls.
24831         * string-icalls.c: fix a bug in insert.
24832         * icalls.c: added the icalls for interlocked, removed old string functions.
24833         
24834 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24835
24836         * loader.c: fix off-by-one error when reading argument names.
24837
24838 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24839
24840         * profiler.c: win32 counter implementation (untested).
24841         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
24842         (the latter needs testing and more complete impl. from win32 folks).
24843
24844 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
24845
24846         * object.c: mono_array_new_full workaround mono_array_class_get
24847         problem.
24848
24849 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24850
24851         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
24852         * object.h (mono_string_chars): Changed casting type.
24853
24854 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24855
24856         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
24857                            method signatures to use gunichar2 instead of gint16.
24858
24859 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
24860
24861         * object.h, object.c: domain-specific versions of mono_object_new and
24862         mono_array_new.
24863
24864 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
24865
24866         * object.c: changed String layout
24867
24868         * string-icalls.c (mono_string_Internal_ctor_chara): added
24869         internal string constructors.
24870
24871 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
24872
24873         * threads.c: pass 'this' to the thread start routine.
24874
24875 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24876
24877         * string-icalls.c: fix IndexOf and LastIndexOf. Now
24878         InternalCompareStr don't call twice mono_string_cmp_char for the last
24879         character. Improved performance in mono_string_cmp_char.
24880
24881 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24882
24883         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
24884         code into its own library: libmonoruntime.
24885
24886 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
24887
24888         * object.h, object.c: changed array format so that szarrays do not
24889         require a bounds structure.
24890         * icall.c, appdomain.c: support for new szarray format.
24891
24892 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24893
24894         * metadata.c: compare also the retuns type when comparing signatures:
24895         we didn't do this as an optimization since really overloaded methods
24896         must differ also in the arguments, but this doesn't work with
24897         low-level IL code (or when using explicit conversion operators: see
24898         bug#23498 for an example).
24899
24900 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24901
24902         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
24903
24904 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24905
24906         * icall.c: make MonoType::GetElementType its own icall.
24907
24908 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24909
24910         * icall.c: remove MonoMethod_get_Name().
24911         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
24912         object.
24913
24914 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24915
24916         * string-icalls.c: optimized a few methods.
24917
24918 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24919
24920         * icall.c: added all new string internal calls
24921         * string-icalls.c: added, new string internal call implementation.
24922         * object.c: added mono_string_new_size for allocating a string a size
24923
24924 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
24925
24926         * object.c (mono_object_isinst): use the same code as in the
24927         optimized x86 version.
24928
24929 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24930
24931         * profiler.c: TSC-based timer code (faster and more accurate).
24932         Not hooked up in configure, yet (set USE_X86TSC to 1).
24933
24934 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
24935
24936         * profiler.c, profiler.h: track time spent compiling methods.
24937         * threads.c: track thread creation/destruction.
24938
24939 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
24940
24941         * profiler.c, profiler.h, profiler-private.h: profiling interface
24942         and sample implementation. Moved here so that it can be used also by
24943         the jit.
24944
24945 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
24946
24947         * reflection.c, reflection.h: keep types and other handles separate in
24948         the hash tables for referred tokens. Add guid for modules.
24949
24950 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24951
24952         * assembly.c: fix bugs found with valgrind.
24953         * metadata.h, metadata.c: added mono_metadata_guid_heap().
24954
24955 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
24956
24957         * threads: added icall support for getting current domain for
24958                    the thread.
24959  
24960 2002-04-13  Martin Baulig  <martin@gnome.org>
24961
24962         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
24963         (MonoDebugVarInfo): Added `index' field for register based addresses.
24964         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
24965         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
24966         `MonoDebugVarInfo *params' and `guint32 this_offset' with
24967         `MonoDebugVarInfo *this_var'.
24968
24969         * debug-symfile.c (relocate_variable): New static function to write
24970         a location description for a local variable or method parameter.
24971
24972 2002-04-12  Martin Baulig  <martin@gnome.org>
24973
24974         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
24975         stack offset and begin/end scope address of a local variable.
24976         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
24977         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
24978         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
24979
24980         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
24981         Added new relocation types for start/end scope of a local variable.
24982
24983 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24984
24985         * object.h: add mono_object_domain() macro.
24986         * reflection.c: handle typespecs.
24987         * icall.c: MonoMethod::get_Name() implementation.
24988
24989 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24990
24991         * icall.c: String::GetHashCode() icall implementation.
24992
24993 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24994
24995         * icall.c: String::IndexOfAny icall.
24996         * object.c, object.h: make array->max_length more useful.
24997         Intrduced mono_object_class() and mono_string_length() macros.
24998
24999 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25000
25001         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
25002         instead of g_unichar_isdigit.
25003
25004 2002-04-11  Nick Drochak  <ndrochak@gol.com>
25005
25006         * icall.c: Implement a simple Double.ToString().
25007
25008 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25009
25010         * appdomain.h: only io-layer.h is supposed to be included.
25011         * icall.c: explicitly import environ. Fix warning.
25012
25013 2002-04-10  Nick Drochak  <ndrochak@gol.com>
25014
25015         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
25016                 return true even if it's not Daylight Savings time.
25017                 Only return false for the case where the function isn't
25018                 implemented for a plaform (read Windows).
25019
25020 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25021
25022         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
25023         data with a mutex.
25024
25025 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
25026
25027         * mempool.c (mono_mempool_alloc): only use g_malloc when
25028         absolutely necessary.
25029
25030 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25031
25032         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
25033
25034         * class.c (mono_class_vtable): use domain mempool to allocate vtable
25035         (mono_class_proxy_vtable): use domain mempool
25036
25037 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25038
25039         * appdomain.h, appdomain.c: split initialization that requires the
25040         execution engine support into mono_runtime_init().
25041
25042 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25043
25044         * class.c (mono_class_init): don't include vtable inside MonoClass
25045         to save some memory, gather some statistics.
25046         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
25047
25048 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25049
25050         * icall.c: internalcall implementation for ValueType.Equals().
25051
25052 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
25053
25054         * object.c (mono_message_init): moved 
25055         (mono_runtime_exec_main): new arch. independent impl.
25056         (mono_runtime_invoke_array): new method - like
25057         mono_runtime_invoke, but you can pass an array of objects.
25058         (mono_remoting_invoke): new arch. independent impl.
25059         (mono_message_invoke): new arch. independent impl.
25060         (mono_runtime_class_init): new arch. independent impl.
25061         (mono_runtime_object_init): new arch. independent impl.
25062
25063 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25064
25065         * metadata.c, object.c, reflection.c: documented the exported
25066         functions.
25067
25068 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
25069
25070         * icall.c: simpler code to pass the assembly builder data to corlib.
25071         Implement GetNestedTypes() internalcall.
25072
25073 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25074
25075         * class.c: warn if a type can't be loaded.
25076
25077 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
25078
25079         * image.h: typedef MonoImageOpenStatus
25080         * types.h: removed unused file
25081         
25082 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
25083
25084         * icall.c: Enum_ToObject accepts enum value arguments.
25085
25086 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25087
25088         * class.c: move initialization of properties, events and nested
25089         classes, so that they happen for interfaces, too.
25090
25091 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25092
25093         * icall.c: cleanup some ugly casts in Array_SetValue*.
25094
25095 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25096
25097         * icall.c: the values array fro enums is of the correct type, now.
25098         Implement (correctly) getFullName instead of assQualifiedName for
25099         MonoType.
25100         * reflection.h, reflection.c: added mono_type_get_name ().
25101
25102 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25103
25104         * assembly.c, image.h: for each MonoImage, record from wich assembly
25105         it was loaded.
25106         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
25107         Make Type.Assembly work.
25108
25109 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
25110
25111         * debug-symfile.h: use char* instead of gpointer to avoid
25112         unnecessary casts.
25113
25114         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
25115
25116         * icall.c (ves_icall_InternalExecute): impl. FielSetter
25117         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
25118
25119 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
25120
25121         * icall.c (mono_message_init): impl. (code cleanup)
25122         (ves_icall_InternalExecute): impl. FieldGetter
25123
25124         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
25125         defined we call all (non-static)methods through the vtable. 
25126
25127 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
25128
25129         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
25130         finalizer even though the memory is still referenced (and the chunk of
25131         memory is not freed).
25132
25133 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25134
25135         * assembly.c: fix brokeness.
25136
25137 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
25138
25139         * class.c: kill some warnings. Check explicit interface method
25140         implementation also without considering the namespace.
25141         Load also literal strings in static class data.
25142
25143 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
25144
25145         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
25146         (default_assembly_name_resolver): Make the resolver take the
25147         "base" directory where the assembly was originally defined, so we
25148         can load DLLs that are in the same directory as the assembly that
25149         is being referenced.
25150
25151 2002-03-28  Dick Porter  <dick@ximian.com>
25152
25153         * file-io.h: 
25154         * file-io.c:
25155         * socket-io.c: 
25156         * unicode.h: 
25157         * unicode.c: Warning cleanups
25158
25159 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
25160
25161         * object.h, reflection.h: use the correct type instead of MonoObject.
25162
25163 2002-03-28  Martin Baulig  <martin@gnome.org>
25164
25165         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
25166         (mono_debug_update_symbol_file): Initialize classes if necessary.
25167
25168 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25169
25170         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
25171         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
25172
25173 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
25174
25175         * assembly.h: fix function prototype.
25176         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
25177         * mono-endian.h: use const cast.
25178
25179 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25180
25181         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
25182
25183 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25184
25185         * loader.c: don't assert when a typeref can't be loaded, give
25186         a chance to the runtime to trow an exception instead.
25187         * loader.h: fix warning.
25188
25189 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25190
25191         * class.c (mono_class_proxy_vtable): added proxy support
25192
25193 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
25194
25195         * icall.c: removed last of PAL calls, added System.Environment
25196         * file-io.h, file-io.c: MonoIO implementation
25197         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
25198
25199 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25200
25201         * appdomain.c: do not use the byte marker in ldstr table lookup.
25202         * debug-helpers.c: allow two ':' to separate class and method name.
25203         * object.c: allocate arrays bounds with the GC, too.
25204         * verify: add a few more checks.
25205
25206 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
25207
25208         * reflection.c: output also literal strings. Allocate parameter data
25209         with GC_malloc() (thanks, Martin, for catching this!).
25210
25211 2002-03-26  Martin Baulig  <martin@gnome.org>
25212
25213         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
25214         include the `this' offset in the `param_offsets'.
25215
25216 2002-03-25  Martin Baulig  <martin@gnome.org>
25217
25218         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
25219         mono_debug_get_class() function to get the classes. Added new
25220         relocation types for arrays and strings.
25221         (mono_debug_get_class): New static function to search in all
25222         referenced assemblies for a metadata token.
25223
25224         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
25225
25226 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25227
25228         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
25229         hold gc-allocated objects. Make the string heap a stream like the
25230         others. Removed duplicated code when writing stream info.
25231         Added asserts to catch possible buffer overflows. Set the sorted map
25232         for tables that need sorting. Added some documentation.
25233
25234 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
25235
25236         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
25237         for interned strings and vtables.
25238
25239 2002-03-24  Martin Baulig  <martin@gnome.org>
25240
25241         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
25242         it in the array since it was created with g_slist_prepend().
25243
25244 2002-03-24  Martin Baulig  <martin@gnome.org>
25245
25246         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
25247         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
25248         (mono_debug_method_from_token): Renamed to
25249         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
25250         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
25251
25252         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
25253         relocation types.
25254
25255         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
25256
25257 2002-03-24  Martin Baulig  <martin@gnome.org>
25258
25259         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
25260         (mono_debug_method_from_token): New func.
25261
25262         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
25263         New interncall, calls mono_debug_local_type_from_signature().
25264         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
25265         calls mono_debug_method_from_token().
25266
25267 2002-03-23  Martin Baulig  <martin@gnome.org>
25268
25269         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
25270         specifies the number of bytes to be converted, not the array size.
25271         Return the number of chars, not the number of bytes.
25272         (ves_icall_iconv_get_chars): The `byteCount' argument
25273         specifies the number of bytes to be converted, not the array size.
25274
25275 2002-03-23  Martin Baulig  <martin@gnome.org>
25276
25277         * reflection.h (MonoReflectionSigHelper): New type.
25278
25279         * reflection.c (mono_reflection_sighelper_get_signature_local),
25280         (mono_reflection_sighelper_get_signature_local): New functions.
25281
25282         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
25283         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
25284         interncalls.
25285
25286 2002-03-23  Martin Baulig  <martin@gnome.org>
25287
25288         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
25289         is_writeable is set.
25290         (mono_raw_buffer_update): New function to write the modified map
25291         back to disk.
25292
25293         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
25294
25295         * debug-symfile.c (mono_debug_update_symbol_file): Call
25296         mono_raw_buffer_update() when done writing.
25297
25298 2002-03-23  Martin Baulig  <martin@gnome.org>
25299
25300         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
25301
25302         * debug-symfile.c: Added support for arguments and local variables.
25303
25304 2002-03-23  Dick Porter  <dick@ximian.com>
25305
25306         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
25307         protected by ifdefs, hence breaking the w32 build.
25308
25309 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25310
25311         * object.c: implement is_interned() the right way.
25312
25313 2002-03-21  Martin Baulig  <martin@gnome.org>
25314
25315         * debug-symfile.[ch]: New files to handle debugging information
25316         files. There's also support to dynamically update these symbol
25317         files to include machine dependent information.
25318
25319 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
25320
25321         * threads.c (mono_thread_create): new function to create thread
25322         from C
25323
25324 2002-03-20  Martin Baulig  <martin@gnome.org>
25325
25326         * icall.c (ves_icall_InternalInvoke): Create a new object if the
25327         method is a constructor.
25328         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
25329         points to ves_icall_InternalInvoke().
25330
25331 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
25332
25333         * file-io.c: Flush shouldn't throw exceptions.
25334
25335 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
25336
25337         * file-io.c: FileStream flush support; FileSetLength now
25338         restores file pointer.
25339
25340 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25341
25342         * class.c: set image for pointer classes.
25343
25344 2002/03/19  Nick Drochak <ndrochak@gol.com>
25345
25346         * sysmath.c: Forgot one.
25347
25348 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
25349
25350         * sysmath.c: Avoid redefining existing names.
25351
25352 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
25353
25354         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
25355         handled by runtime as icall rather than dllimport from libm.so
25356         * file-io.c, file-io.h: fixed handle argument type.
25357
25358 2002-03-18  Dick Porter  <dick@ximian.com>
25359
25360         * reflection.c (mono_image_get_type_info): rename interface to
25361         iface, because of "#define interface struct" on windows.
25362
25363 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
25364
25365         * class.c, class.h: rename and export mono_ptr_class_get().
25366         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
25367         * reflection.c, reflection.h, icall.c: better/saner type name
25368         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
25369         method signatures.
25370
25371 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
25372
25373         * class.c (mono_class_init): removed hardcoded GHC_SLOT
25374
25375         * icall.c (ves_icall_InternalInvoke): impl.
25376
25377 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25378
25379         * reflection.c: output the interface map table, too.
25380
25381 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25382
25383         * class.c (class_compute_field_layout): separate computation of 
25384         static field layout
25385
25386 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
25387
25388         * icall.c: added System.Buffer support.
25389         * file-io.c: moved file icalls from PAL to FileStream.
25390
25391 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25392
25393         * icall.c (ves_icall_System_Object_GetHashCode): impl.
25394
25395 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
25396
25397         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
25398
25399 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25400
25401         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
25402
25403 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25404
25405         * debug-helpers.{c,h}: moved here from monograph some useful functions
25406         to locate a method by name/signature in a class or image. Included
25407         also a small and flexible IL disassembler.
25408
25409 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25410
25411         * reflection.c: fixup tokens in methods with small header size, too.
25412
25413 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
25414
25415         * object.c (mono_string_to_utf8): remove assert(!error), instead
25416         print a warning. 
25417
25418 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
25419
25420         * icall.c: update to the new mono_Array_class_get interface.
25421
25422 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25423
25424         * appdomain.c, object.c: Boehm-GC enable.
25425         * icall.c: make get_data_chunk() support split data requests.
25426         Ensure a class is initialized in more cases. Return only the first
25427         property found in GetProperties() or the compiler gets confused. 
25428         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
25429         * reflection.h, reflection.c: add fixup mechanism for field and method
25430         tokens. Initialize assembly->typeref in a single place. Output
25431         properties after events. Support custom attributes for events, too.
25432         Typo fix for paramter custom attrs.
25433
25434 2002-03-07  Martin Baulig  <martin@gnome.org>
25435
25436         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
25437
25438 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
25439
25440         * class.c (mono_array_class_get): fix. for multi. dim. arrays
25441
25442 2002-03-06  Martin Baulig  <martin@gnome.org>
25443
25444         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
25445         non-zero lower bounds. See testcases #F10-#F13.
25446
25447 2002-03-05  Martin Baulig  <martin@gnome.org>
25448
25449         * exception.c (mono_get_exception_argument_out_of_range): New exception.
25450
25451         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
25452         ves_icall_System_Array_GetValue(), only calculate the absolute array position
25453         here.
25454         (ves_icall_System_Array_SetValue): Likewise.
25455         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
25456         as argument and does the actual work. This function is used when copying a
25457         multi-dimensional array.
25458         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
25459         now do all the widening conversions of value types.
25460         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
25461
25462 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25463
25464         * class.c: remove some magic numbers and use the smbolic names,
25465         instead. Added init_events() to load event info at class init time.
25466         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
25467         and mono_metadata_methods_from_event().
25468         * reflection.h, reflection.c: added support for writing out the evnets
25469         related information.
25470
25471 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25472
25473         * reflection.h, icall.c: use a different method (GetInterfaces)
25474         to gather interface info and add isbyref, isprimitive and
25475         ispointer to the ves_icall_get_type_info() return value.
25476
25477 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25478
25479         * class.h: stared adding support for events.
25480         * icall.c: split find_members implementation. Added debug icall to get
25481         the address of an object.
25482         * reflection.c: handle TypeBuilders in mono_type_get_object().
25483
25484 2002-03-01  Martin Baulig  <martin@gnome.org>
25485
25486         * icall.c (ves_icall_System_Array_GetLength): This must throw an
25487         ArgumentOutOfRangeException(), not an ArgumentException().
25488         (ves_icall_System_Array_GetLowerBound): Likewise.
25489         (ves_icall_System_Array_GetValue): Improved argument checking.
25490         (ves_icall_System_Array_SetValue): Improved argument checking.
25491
25492 2002-03-01  Martin Baulig  <martin@gnome.org>
25493
25494         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
25495         called with invalid arguments rather than just dying with g_assert().
25496         (ves_icall_System_Array_SetValue): Likewise.
25497         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
25498         raise a NotImplementedException instead.
25499         (ves_icall_System_Array_GetLength): Added argument checking.
25500         (ves_icall_System_Array_GetLowerBound): Added argument checking.
25501
25502 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
25503
25504         * object.h (mono_assert): new macros mono_assert and
25505         mono_assert_not_reached
25506
25507 2002-02-28  Martin Baulig  <martin@gnome.org>
25508
25509         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
25510         and "System::String::IsInterned" to "System::String::_IsInterned".
25511
25512 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
25513
25514         * icall.c: remove hacks for typebuilder. Added icall to create a
25515         modified type from a tybebuilder.
25516         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
25517         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
25518         to create a backing MonoClass for a TypeBuilder.
25519
25520 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25521
25522         * class.c, class.h: more refactoring of class init.
25523         Export mono_class_setup_mono_type() and mono_class_setup_parent().
25524
25525 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
25526
25527         * marshal.c, marshal.h: start of marshaling interface.
25528
25529 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25530
25531         * icall.c: fix order in assembly qualified name icall.
25532
25533 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25534
25535         * class.c: do not free str, since we store it in the hash table.
25536         * reflection.h: add label field to MonoILExceptionInfo.
25537         * reflection.c: handle references to more than one assembly. Handle
25538         case when there isn't a module created in the assembly.
25539
25540 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25541
25542         * class.c: Fix typo. Start refactoring of class init code.
25543
25544 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25545
25546         * appdomain.c: exit with 1 on error.
25547         * class.c: we already have the name in MonoClassField.
25548         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
25549         MonoStreamHeader instead of an offset of image->raw_metadata.
25550
25551 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
25552
25553         * appdomain.c (mono_init): Be even more descriptive about the error.
25554
25555 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
25556
25557         * appdomain.c: give the user an informative message when corlib can't
25558         be loaded.
25559
25560 2002-02-26  Martin Baulig  <martin@gnome.org>
25561
25562         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25563         New icall to get the time zone data.
25564
25565 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25566
25567         * reflection.c: set virtual and raw size of section correctly.
25568         * threads.c: transfer domain information to newly created threads.
25569
25570 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25571
25572         * class.c: when instancing a class in a domain, load the default
25573         vaules for static fields from the constant table. Fix System.Enum to
25574         not be an enum.
25575         * icall.c: implement Object::GetType() internalcall. Implemented
25576         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
25577         Fixed checking of binding flags in find_members().
25578         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
25579         * reflection.c: handle enumerations when writing to the constant
25580         table. Use a different object cache for types.
25581
25582
25583 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
25584
25585         * object.c (mono_object_isinst): fix for arrays
25586
25587         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
25588
25589 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25590
25591         * object.c: don't use mprotect ()  and fix intern pool hash table
25592         lookup for big endian systems.
25593
25594 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25595
25596         * icall.c: change type_is_subtype_of () signature.
25597
25598 2002-02-21  Mark Crichton  <crichton@gimp.org>
25599
25600         * rand.c, rand.h: Added random number generator for
25601         System.Security.Cryptography classes.
25602
25603         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
25604
25605         * icall.c: Added System.Security.Cryptography calls.
25606
25607 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
25608
25609         * class.c, icall.c, metadata.c: better support for pointer types.
25610         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
25611         * reflection.c: Add support for getting custom attrs for properties
25612         and simplify some code.
25613
25614 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25615
25616         * icall.c: change getToken () and add custom attribute GetBlob()helper
25617         method.
25618         * reflection.h: add custom attrs array to the reflection builder structures.
25619         * reflection.c: encode and emit custom attributes for all the relevant
25620         reflection objects. Cache fieldref and methodref tokens. Change
25621         mono_image_create_token() interface to take a MonoDynamicAssembly.
25622         More complete custom attributes decoder. Load custom attributes for
25623         Assembly, Field, Method and Constructor objects, too. Make the
25624         returned array an Attribute[] one, not object[]. Added
25625         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
25626         custom attribute constructor.
25627
25628 2002-02-20  Dick Porter  <dick@ximian.com>
25629
25630         * icall.c:
25631         * rawbuffer.c:
25632         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
25633         problem code out for now).
25634
25635 2002-02-19  Radek Doulik  <rodo@ximian.com>
25636
25637         * object.c (mono_ldstr): use hash table to avoid multiple swapping
25638
25639 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
25640
25641         * icall.c: register the GetCustomAttributes method.
25642         * object.c, object.h: add mono_string_new_len ().
25643         * reflection.h, reflection.c: added mono_runtime_invoke(),
25644         mono_install_runtime_invoke(). Added
25645         mono_reflection_get_custom_attrs () to load custom attributes and
25646         create the attribute objects.
25647
25648 2002-02-19  Dick Porter  <dick@ximian.com>
25649         * threads-dummy-types.c:
25650         * threads-dummy-types.h:
25651         * threads-dummy.c:
25652         * threads-dummy.h:
25653         * threads-pthread-types.c:
25654         * threads-pthread-types.h:
25655         * threads-pthread.c:
25656         * threads-pthread.h:  Deleted obsolete files
25657
25658 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
25659
25660         * class.c (mono_class_vtable): runtime init the class when we
25661         allocate static class data.
25662
25663         * icall.c (ves_icall_System_Array_SetValue): check for null values.
25664
25665         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
25666         and String - but we will need generic marshalling support in the
25667         future. 
25668         (mono_init): set the domain name in a ms compatible way
25669
25670         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
25671         String[].
25672
25673 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
25674
25675         * object.c (mono_array_clone): use alloca() instead of g_malloc  
25676         for sizes
25677
25678         * appdomain.c (mono_domain_unload): impl.
25679
25680 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25681
25682         * appdomain.c, object.c: fix intern pool implementation.
25683         * class.c: fix alignment code.
25684
25685 2002-02-16  Radek Doulik  <rodo@ximian.com>
25686
25687         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
25688         and s2 > s1, just copy lower bytes to be compatible with little
25689         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
25690         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
25691
25692         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
25693         force big_endian to be 1 for big endian machines 
25694         (ves_icall_iconv_new_decoder): ditto
25695
25696 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
25697
25698         * socket-io.c (convert_sockopt_level_and_name): If the system
25699         doesn't define SOL_IP or SOL_TCP, get them by hand using
25700         getprotobyname() and caching the values (because this could be a
25701         slow operation).
25702         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
25703         Use the appropriate struct when the system does support it. Ie,
25704         not all systems have struct ip_mreqn so use struct ip_mreq when
25705         appropriate.
25706
25707 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
25708
25709         * reflection.c: handle finally clauses.
25710
25711 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
25712
25713         * socket-io.c: use g_snprintf() instead of snprintf.
25714
25715 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25716
25717         * reflection.c (mono_param_get_objects): Cast second argument to
25718         mono_method_get_param_names to a const char** to silence the
25719         compiler warning.
25720
25721         * appdomain.c (mono_domain_assembly_open): Put parens around the
25722         truth statement in the for-loop.
25723
25724         * unicode.c (iconv_convert): Got rid of a compiler warning about
25725         int i being unused when the system has a new iconv.
25726         (iconv_get_length): Same.
25727
25728         * image.c (load_class_names): Cast the second argument to
25729         g_hash_table_insert() to char* to hush compiler warnings about the
25730         arg being a const.
25731         (mono_image_open): Same here.
25732
25733         * socket-io.c: Don't conditionally include sys/filio.h or
25734         sys/sockio.h here anymore since we now get them from
25735         io-layer/io-layer.h
25736         (inet_pton): If the system doesn't support inet_aton, implement
25737         using inet_addr and also #define INADDR_NONE if it isn't defined
25738         by the system.
25739
25740 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
25741
25742         * metadata.c, metadata.h: added function to get packing and size info
25743         of a typedef.
25744         * reflection.h, reflection.c: handle field RVA data. Save info about
25745         the table layout if needed. Assign typedef indexes to all the types
25746         before dumping the info about them to avoid forward reference problems.
25747
25748 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
25749
25750         * socket-io.c (convert_sockopt_level_and_name): ifdef
25751         SO_ACCEPTCONN because it is not defined on my system (old debian)
25752
25753 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25754
25755         * opcode.c: use stddef.h to get NULL.
25756
25757 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25758
25759         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
25760         for FIONBIO, FIONREAD and SIOCATMARK.
25761         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
25762         define INADDR_NONE and besides, inet_addr() is deprecated and
25763         should not be used. Use inet_pton() instead - it also has the
25764         added bonus that it can easily handle IPv6 addresses as well.
25765         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
25766
25767 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25768
25769         * decimal.c: remove _MSC_VER conditional.
25770
25771 2002-02-13  Dick Porter  <dick@ximian.com>
25772
25773         * socket-io.c: 
25774         * icall.c: Internal calls for Blocking, Select, Shutdown,
25775         GetSocketOption and SetSocketOption
25776
25777 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25778
25779         * assembly.cs: better resolver: use it instead of some kludgy
25780         code.
25781
25782 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
25783
25784         * reflection.c: the best way to speed-up the compiler is to avoid
25785         infinite loops.
25786
25787 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
25788
25789         * class.c (mono_class_vtable): changed the object layout
25790         (obj->vtable->class). 
25791         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
25792
25793 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25794
25795         * assembly.c: look for assemblies in the assembly dir, too.
25796
25797 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25798
25799         * class.c: fix thinko in mono_class_from_type().
25800
25801 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25802
25803         * exception.h, exception.c: added TypeLoadException.
25804         * object.h, object.c: added mono_array_clone ().
25805         * icall.c: handle throwOnError in AssemblyGetType().
25806         Added Array.Clone().
25807         * opcode.h, opcode.c: use a single value for the opcode val.
25808         Compile fix for non-gcc compilers.
25809
25810 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
25811
25812         * opcodes.c, opcodes.h: export interesting info about opcodes.
25813
25814 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
25815
25816         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
25817         icalls. 
25818
25819         * class.c (class_compute_field_layout): set element_class for enums
25820         (mono_class_create_from_typedef): set element_class for normal classes
25821
25822         * icall.c (ves_icall_System_Enum_get_value): impl.
25823
25824         * class.c (mono_class_create_from_typedef): do not set valuetype
25825         flag for System.ValueType and System.Enum
25826
25827 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
25828
25829         * unicode.c (iconv_convert): fix big endian problem.
25830
25831 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25832
25833         * class.c: add asserts if we are ever going to scribble over memory.
25834         * socket-io.c: not all systems have AF_IRDA defined.
25835
25836 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
25837
25838         * class.c (class_compute_field_layout): do not consider static
25839         fields to compute alignment
25840
25841 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
25842
25843         * appdomain.c (mono_appdomain_get): impl.
25844         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
25845
25846 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25847
25848         * icall.c: ignore "file://" prefix when loading an assembly.
25849
25850 2002-01-23  Dick Porter  <dick@ximian.com>
25851
25852         * socket-io.c:
25853         * icall.c:
25854         * Makefile.am: Added socket support
25855
25856 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25857
25858         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
25859         code back.  This should return the assemblies that are loaded by
25860         the runtime on behalf of an application domain. 
25861
25862         The current implementation is still broken, it just returns every
25863         assembly loaded, but until we get real applications domain this
25864         will do.
25865
25866 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
25867
25868         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
25869         AppDomain object.
25870
25871 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25872
25873         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
25874         the mono_class_from_name lookup.
25875         (ves_icall_get_parameter_info): ditto.
25876         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
25877         method.
25878         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
25879
25880 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
25881
25882         * class.c: load also nested classes on class init.
25883         System.ValueType instance methods gets passed boxed
25884         values, unless methods in derived classed that get a pointer to the
25885         data.
25886         * icall.c: use better name parsing code in GetType().
25887         * image.c, image.h: add mono_image_loaded ().
25888         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
25889         * reflection.c, reflection.h: added mono_reflection_parse_type().
25890
25891 2002-01-22  Veronica De Santis <veron78@interfree.it>
25892
25893         * icall.c : Added mapping of internal calls for Manual and Auto reset events
25894         * threads.c : Added the implementation of internal calls for events
25895         * threads.h : Added prototypes of internal calls for events
25896         
25897 2002-01-21  Radek Doulik  <rodo@ximian.com>
25898
25899         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
25900
25901 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
25902
25903         * class.c (mono_class_init): set min_align to 1 (instead of 0)
25904         (mono_class_value_size): use min_align
25905
25906 2002-01-20  Dick Porter  <dick@ximian.com>
25907
25908         * threads.h:
25909         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
25910         so it compiles on w32.
25911
25912 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
25913
25914         * metadata.c (mono_type_stack_size): impl.
25915
25916         * class.c (mono_class_get_field): impl. memberref token
25917
25918 2002-01-16 Veronica De Santis <veron78@@interfree.it>
25919
25920         * icall.h : Added the internal calls mapping for CreateMutex_internal
25921                     and ReleaseMutex_internal.
25922         * threads.h : Added the prototype of mutexes internal calls.
25923         * threads.c : Added the implementations of mutexes internal calls.
25924
25925 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25926
25927         * metaparse.h: removed unused file.
25928         * reflection.c, reflection.h: added stream_data_align () function 
25929         to align data in streams and keep stream aligned. Add support for
25930         exception support in method headers.
25931
25932 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
25933
25934         * unicode.c: make iconv_convert () return the number of bytess written
25935         in the output buffer.
25936
25937 2002-01-15  Dick Porter  <dick@ximian.com>
25938         * threads.c: Make the runtime's idea of infinite timeouts coincide
25939         with the class library's
25940
25941         Fix a particularly egregious bug in mono_thread_cleanup(). That
25942         code was so utterly bogus it must have been written on a Monday.
25943
25944 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25945
25946         * reflection.h: add subtypes field to TypeBuilder.
25947         * reflection.c: encode constants for literal fields.
25948         Handle subtypes. Fix user string token (and add a zero byte)
25949         at the end.
25950         
25951 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
25952
25953         * class.c (mono_class_init): bug fix: assign slot numbers for
25954         abstract methods.
25955
25956 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25957
25958         * reflection.c: don't try to output a code RVA for abstract methods.
25959         Small fixes for method header format. Output parameter info to the
25960         ParamDef table. Save method overriding info to MethodImpl table.
25961         Fix property support. Allow typedef.extends to be a type in the
25962         building assembly.
25963         * verify.c: fix off-by-one error.
25964
25965 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
25966
25967         * class.c: fix mono_class_from_mono_type () for szarray types.
25968         Remove unused cache check in mono_class_from_type_spec().
25969         * icall.c: *type_from_name () functions handle simple arrays and byref.
25970         * reflection.c: handle byref and szarray types. Handle methods without
25971         body (gets P/Invoke compilation working). Handle types and fields in
25972         get_token ().
25973         * reflection.h: add rank to MonoTypeInfo.
25974
25975 2002-01-10  Dick Porter  <dick@ximian.com>
25976
25977         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
25978         internal calls
25979
25980 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25981
25982         * icall.c: initialize class in type_from_handle ().
25983         Loop also in parent classes for get_method ().
25984         * reflection.c: properly encode class and valuetype types.
25985         Start on encoding TypeBuilder types. Handle fieldrefs.
25986         Use correct length when registering a user string.
25987         Handle ConstructorBuilder and MonoMethod in get_token ().
25988         Make mono_type_get_object () aware of cached types.
25989         * object.c: back out change to mono_string_new ().
25990
25991 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
25992         * object.c: mono_string_new should return a NULL when the string 
25993         passed in is NULL -- not try to deference it.
25994         
25995 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25996
25997         * icall.c: hack to make IsSubType work for TypeBuilders.
25998         * reflection.c: emit constructors before methods.
25999         Retrieve param names in mono_param_get_objects().
26000
26001 2002/01/05  Nick Drochak  <ndrochak@gol.com>
26002
26003         * Makefile.am: fix list of headers and sources so automake 1.5
26004         doesn't complain. Removed \# at end of list.
26005
26006 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26007
26008         * reflection.c: get token for a method ref. Set return type of
26009         constructor to void.
26010         * loader.c: debug message.
26011         * class.c: typo fix.
26012
26013 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
26014
26015         * icall.c: fix array init with rank > 1. FindMembers
26016         loops in parent class as well.
26017         * image.c: do not insert nested types in name cache.
26018         * reflection.c: warning fix.
26019         * reflection.h: add override method (for interface impl).
26020
26021 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
26022
26023         * metadata.c: fix customattr decoding.
26024
26025 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
26026
26027         * rawbuffer.cs: Added native Win32 implementation, avoids using
26028         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
26029
26030 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
26031
26032         * class.c: make the low-level routines handle the cache.
26033
26034 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
26035
26036         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
26037
26038 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
26039
26040         * class.c: fix mono_array_element_size() for objects.
26041         * class.h, class.c: add properties to MonoClass and load them
26042         at init time.
26043         * icall.c: check with isinst() when assigning a value to an array
26044         instead of requiring the classes to match exactly.
26045         Implemented icall for System.Type::GetType().
26046         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
26047         enums. Handle bindingflags when looking for methods and fields.
26048         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
26049         and mono_metadata_methods_from_property().
26050         * reflection.h, reflection.c: added structures for propreties,
26051         parameters and enums. Implemented mono_property_get_object() and
26052         mono_param_get_objects().
26053
26054 2001-12-18  Dick Porter  <dick@ximian.com>
26055
26056         * file-io.c: Use mono_string_to_utf16() instead of
26057         mono_string_chars()
26058
26059         * object.c: Added mono_string_to_utf16(), which copies the non
26060         NULL-terminated MonoString into a new double-null-terminated
26061         buffer.
26062
26063 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
26064
26065         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
26066
26067 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
26068
26069         * file-io.c: raise exceptions if handle is invalid.
26070
26071 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
26072
26073         * assembly.c: yet another check for mscorlib.
26074         * class.c, class.h: load nesting info for classes.
26075         * icall.c: many new functions to support the Reflection classes.
26076         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
26077         * reflection.h, reflection.c: mono_image_create_token(),
26078         mono_assembly_get_object(), mono_type_get_object(),
26079         mono_method_get_object(), mono_field_get_object(): methods to return
26080         objects that parallel the C representation of assemblies, types,
26081         methods, fields.
26082
26083 2001-12-11  Dick Porter  <dick@ximian.com>
26084
26085         * icall.c:
26086         * file-io.c: Internal calls for file IO.
26087
26088 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
26089
26090         * tabledefs.h: missing FileAttributes.
26091         * verify.h, verify.c: use is_valid_string () to simplify and check for
26092         valid strings more correctly. Fix warnings and speeling.
26093         Check more tables: Filed, File, ModuleRef, StandAloneSig.
26094         Check code: branches, maxstack, method calls.
26095
26096 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
26097
26098         * object.c (mono_object_allocate): removed static, so that the jit
26099         can allocate value types.
26100
26101         * icall.c (ves_icall_System_DateTime_GetNow): impl.
26102
26103 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26104
26105         * class.c: init enum types right away and register the
26106         token->MonoClass map in mono_class_create_from_typedef ().
26107         * verify.h, verify.c: first cut of the verifier.
26108         * pedump.c: add --verify switch to verify metadata tables.
26109         * tabledefs.h: add some missing enums.
26110
26111 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
26112
26113         * class.c (mono_install_runtime_class_init): impl.
26114         (mono_class_init): renamed mono_class_metadata_init to
26115         mono_class_init, also removed the metadata_inited flag
26116
26117         * object.c (mono_object_isinst): use faster algorithm
26118
26119 2001-11-30  Radek Doulik  <rodo@ximian.com>
26120
26121         * mono-endian.h: reverted last change
26122         added function prototypes
26123
26124         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
26125         add mono-endian.c back
26126
26127         * mono-endian.c: returned back, as Paolo pointed out, it's needed
26128         for unaligned access, I've mistaked it with endianess. I am
26129         sorry.
26130         (mono_read16): fix reverted endianess
26131         (mono_read64): ditto
26132         (mono_read32): ditto
26133
26134 2001-11-30  Dick Porter  <dick@ximian.com>
26135
26136         * exception.c: Implement mono_exception_from_name()
26137
26138 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26139
26140         * metadata.h, metadata.c: remove params_size and locals_size and their
26141         calculation from the metadata code: they are only usefult to the
26142         interp.
26143
26144 2001-11-29  Radek Doulik  <rodo@ximian.com>
26145
26146         * object.c (mono_ldstr): swap bytes here, it's probably not the
26147         best place, but works for me now, I'll redo it once I know mono
26148         better, also note that I add PROT_WRITE and don't reset back, also
26149         note that it's only affects big endians, so x86 should be OK
26150
26151         * mono-endian.h (read16): use just glib macros for both endians
26152
26153         * mono-endian.c: removed as glib macros are used in in
26154         mono-endian.h so we don't need to care about endianess for read
26155         macros as glib does that for us already
26156
26157 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
26158
26159         * class.h, class.h: take minimum alignment into consideration so
26160         that the fields of a class remain aligned also when in an array.
26161
26162 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26163
26164         * loader.h, loader.c: add mono_method_get_param_names().
26165         * class.c: 0-init class fields.
26166
26167 2001-11-26  Dick Porter  <dick@ximian.com>
26168
26169         * icall.c:
26170         * threads-types.h:
26171         * threads.c: New file that handles System.Threading on all platforms
26172
26173         * object.c: 
26174         * object.h: Remove the synchronisation struct from MonoObject,
26175         replace it with a pointer that gets initialised on demand
26176
26177         * Makefile.am: Replace all the system-specific threading code with
26178         a single file that uses the new wrapper library
26179
26180 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
26181
26182         * class.c, class.h: add mono_install_trampoline() so that the runtime
26183         can register a function to create a trampoline: removes the ugly
26184         requirement that a runtime needed to export arch_create_jit_trampoline.
26185         * object.h, object.c: added mono_install_handler() so that the runtime
26186         can install an handler for exceptions generated in C code (with
26187         mono_raise_exception()). Added C struct for System.Delegate.
26188         * pedump.c: removed arch_create_jit_trampoline.
26189         * reflection.c: some cleanups to allow registering user strings and
26190         later getting a token for methodrefs and fieldrefs before the assembly
26191         is built.
26192         * row-indexes.h: updates and fixes from the new ECMA specs.
26193
26194 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
26195
26196         * class.h, class.c: add enum_basetype field to MonoClass.
26197         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
26198         to get index in the constant table reated to a field, param or
26199         property.
26200         * reflection.h, reflection.c: handle constructors. Set public-key and
26201         version number of the built assembly to 0.
26202         * row-indexes.h: update from new ECMA spec.
26203
26204 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26205
26206         * class.h, class.c: add a max_interface_id to MonoClass.
26207         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
26208         since it's used to do that. Added mono_type_type_from_obj().
26209         Make GetType() return NULL instead of segfaulting if the type was not
26210         found. Handle simple arrays in assQualifiedName.
26211         * object.h: add a struct to represent an Exception.
26212         * reflection.c: output call convention in method signature.
26213         Add code to support P/Invoke methods and fixed offsets for fields.
26214
26215 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
26216
26217         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
26218         the value.
26219         * icall.c: use mono_array_addr instead of array->vector: fixes the
26220         reflection image writing.
26221         * reflection.c: init call convention byte to 0 in method signature.
26222         Encode the property signature. Don't output property-related methods
26223         twice. Really process the properties for a type (don't cast a field to
26224         a property, my mom always told me that).
26225         Fix 64 bit issues in pointer alignment in a different and more
26226         readable way.
26227
26228 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
26229
26230         * loader.h: Removed type class from MonoDefaults, added monotype
26231
26232         * loader.c: Loaded MonoType, removed loading of Type
26233
26234         * icall.c (my_mono_new_object): Now returns a System.MonoType,
26235         and fills in System.Type._impl with a RuntimeTypeHandle rather
26236         than the actual MonoClass *
26237
26238         (ves_icall_type_from_handle): change from type_class to
26239         monotype_class
26240
26241         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
26242         implemented
26243
26244         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
26245         implemented
26246
26247         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
26248
26249         (ves_icall_System_Reflection_Assembly_GetType): implemented
26250
26251         (ves_icall_System_MonoType_assQualifiedName): implemented
26252
26253         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
26254
26255 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
26256
26257         * assembly.c (mono_assembly_open): Implement a cache for the
26258         assemblies. 
26259
26260         (mono_assembly_close): only destroy the assembly when the last
26261         reference is gone.
26262         
26263 2001-11-09  Dick Porter  <dick@ximian.com>
26264
26265         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
26266
26267 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
26268
26269         * class.c (mono_class_metadata_init): bug fix: compute the right slot
26270
26271 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26272
26273         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
26274         from Martin Weindel.
26275         * object.h: add mono_string_chars ().
26276
26277 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
26278
26279         * reflection.c (build_compressed_metadata): Eliminates warnings
26280         and uses 64-bit clean code.
26281
26282         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
26283         (mono_type_equal): Change signature to eliminate warnings.
26284
26285 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26286
26287         * icall.c, loader.c: remove the internalcall array constructors.
26288         Changes to match the new MonoArray structure.
26289         * object.h, object.c: an array object doesn't allocate an extra
26290         vector. Add mono_array_new_full () to create jagged arrays easily.
26291
26292 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26293
26294         * metadata.h, metadata.c: add mono_metadata_field_info () to
26295         retreive all the info about a field from vairous tables.
26296         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
26297         * class.h, class.c: augment MonoClassField with more info.
26298         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
26299         policy and load a field's RVA if needed.
26300
26301 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
26302
26303         * class.c (mono_class_metadata_init): create a trampoline for all
26304         virtual functions instead of actually compiling them.
26305
26306 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
26307
26308         * class.h, class.c: include name in MonoClassField.
26309         * class.c: fix fundamental type of System.Object and System.String.
26310         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
26311         tokens in ldtoken.
26312         * icall.c: remove internalcalls for the Reflection stuff that is now
26313         done in C# code.
26314         * loader.c: mono_field_from_memberref () implementation.
26315         * mono-endian.c: thinko (s/struct/union/g).
26316         * object.c, object.h: make the mono_string_* prototypes actually use
26317         MonoString instead of MonoObject.
26318         * reflection.c, reflection.h: updates for changes in the reflection
26319         code in corlib: we use C structures that map to the actual C# classes.
26320         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
26321         fat method header if needed and use the info from the ILGenerator for
26322         methods. Handle fields in types. Misc fixes.
26323
26324 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
26325
26326         * class.c (mono_class_metadata_init): bug fix: always allocate
26327         space for static class data
26328
26329 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
26330
26331         * class.c (mono_compute_relative_numbering): use relative
26332         numbering to support fast runtime type checks.
26333
26334 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
26335
26336         * class.c (mono_class_create_from_typeref): added debugging output
26337         to print class name when MonoDummy is returned instead of real class
26338
26339 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
26340
26341         * class.c (mono_class_metadata_init): interface offset table now
26342         contains pointers into the vtable - this is more efficient for the jit
26343
26344 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
26345
26346         * class.c (mono_class_metadata_init): use a temporary vtable (the
26347         old algorithm only worked for the interpreter, but not for the jit)
26348
26349 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
26350
26351         * loader.c (method_from_memberref): use mono_class_get to get the
26352         class of an array instead of using System.Array directly.
26353         (mono_get_method): also add MEMBERREF methods to the method cache
26354         which usefull for arrays.
26355
26356 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
26357
26358         * pedump.c (arch_compile_method): added to compute vtable entry
26359
26360         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
26361         number of interfaces.
26362         
26363         * class.h: merged MonoArrayClass into MonoClass
26364
26365         * class.c (mono_class_create_from_typedef): compute the vtable size and
26366         allocate space to include the vtable inside MonoClass
26367         (mono_class_metadata_init): initialize the vtable
26368
26369 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
26370
26371         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
26372         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
26373         * image.c: endian fixes by Laurent Rioux.
26374         * object.h, object.c: rename MonoStringObject to MonoString and
26375         MonoArrayObject to MonoArray. Change some function names to conform to
26376         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
26377         guint16* as first argument, so don't use char*.
26378         Provide macros to do the interesting things on arrays in a portable way.
26379         * threads-pthread.c: updates for the API changes and #include <sched.h>
26380         (required for sched_yield()).
26381         * icall.c: updates for the API changes above.
26382         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
26383         platforms that need them.
26384
26385 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26386
26387         * class.c: set the correct type for all the fundamental
26388         type when loading the class.
26389
26390 2001-10-05  Dick Porter  <dick@ximian.com>
26391
26392         * threads-pthread.c (pthread_mutex_timedlock): Simple
26393         compatibility version for C libraries that lack this call.
26394
26395 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26396
26397         * class.c: MonoTypes stored in MonoClass are stored as
26398         fundamental MonoTypes when the class represents a
26399         fundamental type (System.Int32, ...).
26400         The TypeHandle return by ldtoken is a MonoType*.
26401         * icall.c: ves_icall_get_data_chunk () write out all the
26402         PE/COFF stuff. Implement ves_icall_define_method (),
26403         ves_icall_set_method_body (), ves_icall_type_from_handle ().
26404         * image.c: properly skip unknown streams.
26405         * loader.h, loader.c: add type_class to mono_defaults.
26406         * metadata.c, metadata.h: export compute_size () as
26407         mono_metadata_compute_size () with a better interface.
26408         Typo and C&P fixes.
26409         * pedump.c: don't try to print the entry point RVA if there is no entry point.
26410         * reflection.c, reflection.h: many cleanups, fixes, output method
26411         signatures and headers, typedef and typeref info, compress the metadata
26412         tables, output all the heap streams, cli header etc.
26413         * row-indexes.h: typo fixes.
26414
26415 2001-10-04  Dick Porter  <dick@ximian.com>
26416
26417         * object.h: Add a synchronisation mutex struct to MonoObject
26418
26419         * object.c (mono_new_object): Initialise the object
26420         synchronisation mutexes
26421
26422         * icall.c: System.Threading.Monitor internal calls
26423         
26424         * threads-pthread.h:
26425         * threads-pthread.c: System.Threading.Monitor internal calls
26426
26427         * threads-types.h: New file, includes the system-specific thread
26428         structures
26429         
26430         * threads-pthread-types.h:
26431         * threads-pthread-types.c: New files, handle pthread-specific
26432         synchronisation types
26433
26434         * threads-dummy-types.h: 
26435         * threads-dummy-types.c: New files of dummy support for
26436         thread-specific types
26437
26438         * metadata.c:
26439         * image.c:
26440         * pedump.c: include mono-endian.h not endian.h
26441         
26442         * Makefile.am: More threads files.
26443         Name mono-endian.h not endian.h
26444
26445 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
26446
26447         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
26448         stuff and implement a few more bits.
26449         * icall.c: a field needs to be dereferenced twice. Do not use the same
26450         name for two variables in the same scope.
26451         * image.c, image.h: cleanups.
26452
26453 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
26454
26455         * class.c (mono_class_metadata_init): bug fix: compute the right size
26456
26457 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
26458
26459         * icall.c: implemented some of the Reflection internalcalls.
26460         * image.c, image.h: start writing out the PE/COFF image.
26461         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
26462         that does the reverse than decode_blob_size ().
26463         * object.c: use mono_metadata_encode_value (). Move here
26464         temporary implementation of mono_string_to_utf8 ().
26465         * rawbuffer.c: make malloc_map static.
26466
26467 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26468
26469         * metadata.c: fix type comparison for arrays.
26470         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
26471         Added a couple of new classes to monodefaults.
26472         * icall.c: added a couple of Reflection-related internalcalls.
26473         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
26474         Added a byval_arg MonoType to MonoClass.
26475
26476 2001-09-28  Dick Porter  <dick@ximian.com>
26477
26478         * icall.c:
26479         * threads-pthread.h: 
26480         * threads-pthread.c: Implemented internal calls for
26481         LocalDataStoreSlot operations.  Applied mutexes around all shared
26482         data.  Reworked the thread creation and Start() operations to
26483         avoid a race condition.
26484         
26485         * threads-dummy.h:
26486         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
26487
26488 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
26489
26490         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
26491
26492 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
26493
26494         * class.c, loader.c: warn and return NULL instead of erroring out.
26495         * icall.c: added System.AppDomain::getCurDomain().
26496         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
26497
26498 2001-09-25  Dick Porter  <dick@ximian.com>
26499
26500         * threads-pthread.h:
26501         * threads-pthread.c: Implemented timed thread joining and added
26502         System.Threading.Thread::Join_internal internal call
26503
26504         * icall.c: Added System.Threading.Thread::Join_internal internal call
26505
26506         * threads-dummy.h:
26507         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
26508
26509 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
26510
26511         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
26512         mono_string_intern () to implement the semantics of the ldstr opcode
26513         and the interning of System.Strings.
26514         * icall.c: provide hooks to make String::IsIntern and String::Intern
26515         internalcalls.
26516
26517 2001-09-23  Dick Porter  <dick@ximian.com>
26518
26519         * threads-dummy.c: 
26520         * threads-dummy.h: New files of dummy threading routines
26521
26522         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
26523         support code based on system specifics
26524
26525         Rename PTHREAD_LIBS to THREAD_LIBS
26526         
26527 2001-09-23  Dick Porter  <dick@ximian.com>
26528
26529         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
26530         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
26531         internal calls.
26532         (mono_thread_init): Set up a Thread object instance to return when
26533         the main thread calls Thread.CurrentThread
26534         (mono_thread_cleanup): Wait for all subthreads to exit
26535
26536         * icall.c: New internal calls for System.Threading.Thread::Sleep
26537         (including Schedule) and CurrentThread
26538
26539         * threads.h: New file, to insulate thread-specific stuff from the
26540         rest of the code
26541
26542 2001-09-21  Dick Porter  <dick@ximian.com>
26543
26544         * threads-pthread.h: 
26545         * threads-pthread.c: New file, for handling pthreads-style
26546         threading support.  Start() now starts a new thread and executes
26547         the ThreadStart delegate instance.
26548
26549         * icall.c: Added the internalcall for
26550         System.Threading.Thread::Start_internal
26551
26552         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
26553
26554 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
26555
26556         * loader.c: work around the different signatures for delegates
26557         constructors csc generates in compiled code vs the ones compiled in mscorlib.
26558
26559 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26560
26561         * class.h, class.c: add mono_class_get_field_from_name ().
26562         * *: Fix C comments and other ANSI C issues.
26563
26564 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
26565
26566         * endian.h, assembly.c: fix some endianness issues.
26567
26568 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
26569
26570         * loader.h, load.c: add delegate_class to mono_defaults.
26571         Handle runtime provided methods in mono_get_method ().
26572
26573 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
26574
26575         * loader.c (mono_get_method): use pinvoke for internal call
26576
26577         * icall.c: use pinvoke for internal call
26578
26579         * loader.c (method_from_memberref): set the method name
26580
26581 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
26582
26583         * metadata.c: help the compiler generate better code for
26584         mono_class_from_mono_type ().
26585
26586 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
26587
26588         * class.c (mono_class_metadata_init): delayed computing of the
26589         class size to mono_class_metadata_init ()
26590
26591 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
26592
26593         * class.c, class.h: add an interfaces member to MonoClass.
26594         * image.c, image.h: add assembly_name field to MonoImage
26595         from the assembly table.
26596         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
26597
26598 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26599
26600         * class.c: Handle Array in mono_class_from_mono_type ().
26601         * metadata.c, pedump.c: some endian fixes.
26602
26603 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26604
26605         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
26606         * metadata.c: fix small problem introduced with the latest commit.
26607
26608 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
26609
26610         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
26611         We don't need a MonoMetadata pointer anymore to compare signatures in
26612         mono_metadata_signature_equal (), update callers.
26613         Reduced memory usage an number of allocations for MonoMethodHeader and
26614         MonoMethodSignature.
26615
26616 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
26617
26618         * metadata.c: added compare for szarray.
26619
26620 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
26621
26622         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
26623         and add a couple more types to it and mono_defaults. Give an hint on
26624         classes that need implementing in our corlib and are referenced
26625         in mscorlib.
26626
26627 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
26628
26629         * class.h, class.c: keep track if a class is also an Enum.
26630         * loader.c: Implement a couple more types for use in libffi
26631         marshalling. Gives better diagnostics when failing to dlopen
26632         a library. Set method->klass for P/Invoke methods, too.
26633
26634 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
26635
26636         * class.c, class.h: add a MonoType this_arg to MonoClass that
26637         represents a pointer to an object of the class' type that
26638         can be used by the interpreter and later the type cache.
26639         Add best guess alignment info for valuetype objects.
26640
26641 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
26642
26643         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
26644         into MonoType: one less level of indirection and allocation and
26645         simplifies quite a bit of code. Added cache for MonoTypes that are
26646         used frequently, so that we don't need to allocate them all the time.
26647
26648 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
26649
26650         * class.c (mono_class_create_from_typedef): System.Enum is also a
26651         value type, although it does not derive from System.ValueType
26652         (maybe a bug in the ms compiler?)
26653
26654         * metadata.c (mono_type_size): return the right size for value types
26655
26656         * loader.c (mono_get_method): only initialize method header if not abstract
26657
26658         * class.c (mono_class_from_mono_type): use mono_default values. 
26659
26660 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
26661
26662         * *: use MonoClass pointers instead of <type_tokens>
26663         
26664         * class.h: new flag: metadata_inited.
26665
26666         * class.c (mono_class_metadata_init): impl.
26667         (mono_class_instance_size): impl.
26668         (mono_class_data_size): impl.
26669
26670 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26671
26672         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
26673         MonoClass now has the name and name_space fields. 
26674         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
26675         mono_get_method () takes and optional MonoClass as argument.
26676         Removed mono_typedef_from_name() and added mono_class_token_from_name()
26677         instead that takes advantage of a map from class names to typedef
26678         tokens in MonoImage.
26679
26680 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
26681
26682         * metadata.c: zero is not a valid alignment boundary.
26683         Merge MONO_TYPE_VOID in default decoding code.
26684
26685 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
26686
26687         * image.h: merged MonoMetadata into MonoImage
26688
26689         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
26690         identify the type of elements.
26691
26692 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
26693
26694         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
26695         * cil-coff.h: split MonoMSDOSHeader and add size info.
26696         * image.c: add some consistency checks.
26697         * metadata.c: fix row size computation: one programmer
26698         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
26699         add explanation for the locator routine.
26700         Fix decoding of size in method header.
26701         
26702 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
26703
26704         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
26705         (g_concat_dir_and_file): Bring g_concat_dir_and_file
26706         function from gnome-libs.  This uses the right path separator
26707         based on the OS, and also works around a bug in some systems where
26708         a double slash is not allowed. 
26709         (default_assembly_name_resolver): Use g_concat_dir_and_file
26710         (mono_assembly_open): ditto.
26711
26712 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
26713
26714         * metadata.c (mono_metadata_signature_equal): impl.
26715
26716         * *: void is now a realy MonoType (instead of using NULL)
26717         
26718         * metadata.c (do_mono_metadata_parse_type): use
26719         mono_metadata_parse_type to parse void value.
26720
26721 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
26722
26723         * metadata.c, metadata.h: in the signature and method header store
26724         only the space required for holding the loca vars and incoming arguments.
26725
26726 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
26727
26728         * metadata.c (do_mono_metadata_parse_type): treat void like any
26729         other type (instead of assigning NULL);
26730
26731 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
26732
26733         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
26734
26735 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
26736
26737         * image.c (do_mono_image_open): added a cache for arrays.
26738
26739 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26740
26741         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
26742         decode a single column from a row in a metadata table and changes
26743         to take advantage of it in the typedef locator (gives a nice speed up).
26744         Store offset info for function params.
26745
26746 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
26747
26748         * image.h (MONO_IMAGE_IS_CORLIB): removed 
26749
26750 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
26751
26752         * assembly.c: how could mono_assembly_close () had ever worked?
26753         * metadata.c, metadata.h: provide offset info for local vars.
26754         Implement mono_type_size () to take care of alignment as well
26755         as size (it was mono_field_type_size in cli/class.c before).
26756
26757 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
26758
26759         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
26760
26761         * assembly.h (CORLIB_NAME): set to corlib.dll
26762
26763         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
26764
26765 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26766
26767         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
26768         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
26769         tokentype.h: massive namespace cleanup.
26770
26771 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26772
26773         * metadata.h, metadata.c: decode exception clauses when parsing method header.
26774
26775 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
26776
26777         * metadata.c (mono_metadata_free_type): added check for type !=
26778         NULL (void) before calling mono_metadata_free_type()
26779
26780 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
26781
26782         * metadata.h, row_indexes.h: added header with enumerations to use
26783         to index in the columns from tables in metadata and to decode coded
26784         tokens: we should start using this instead of embedding magic numbers
26785         all over the code.
26786
26787 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
26788
26789         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
26790         Move metadata_t info from cli_image_info_t to MonoImage, where
26791         it's easily accessible. Changed all the uses accordingly.
26792         Added the method and class caches to MonoImage.
26793         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
26794         and mono_metadata_decode_value () signature to be more consistent
26795         with the other parse functions (and simplify code). Taken advantage
26796         of zero-length array allocation with GCC. Removed reduntant (and
26797         wrong) MonoFieldType struct and use MonoParam instead. Changed
26798         mono_metadata_parse_field_type () to use common code for parsing.
26799         Added mono_metadata_typedef_from_field () and
26800         mono_metadata_typedef_from_method () to lookup a typedef index from a
26801         field or method token.
26802         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
26803
26804 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
26805
26806         * metadata.c (mono_metadata_parse_field_type): Implement. 
26807         (do_mono_metadata_parse_type): Split engine from
26808         mono_metadata_parse_type, so that we can create smaller structures
26809         for things that just have one pointer to the MonoType (look at
26810         the MonoFieldType)
26811
26812 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
26813
26814         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
26815         as Jan Gray found out, it is incorrect. 
26816
26817 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
26818
26819         * assembly.c: Implement asssembly loading.  This loads an image
26820         and loads all the referenced assemblies.  Come to think of it, we
26821         could always do lazy loading of the assemblies. 
26822
26823         * image.c (mono_image_open): Keep loaded images in a hashtable.
26824
26825         * image.h (MonoImage): Add reference count.
26826
26827 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
26828
26829         * assembly.c (mono_assembly_open): Keep track of the file name in
26830         case the assembly has no ASSEMBLY table.
26831
26832         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
26833         from get.c here.
26834
26835 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
26836
26837         * metadata.c, metadata.h: decode local vars in method header
26838         parse function. Change callers accordingly.
26839
26840 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
26841
26842         * metadata.h, cil-coff.h: protect against multiple inclusion.
26843         Added some new structures to hold information decoded from metadata:
26844         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
26845         and relevant decoding/free functions.
26846         * metadata.c: implement decoding functions. Add warning for out of bounds
26847         index in mono_metadata_locate(). Implement mono_get_method () to retreive
26848         all the info about a method signature and invocation. Remove check on
26849         uninitialized local var in parse_mh() and fix memory leak.
26850
26851 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
26852
26853         * metadata.h: More macros.
26854
26855         * tokentype.h: New file.
26856
26857 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
26858
26859         * assembly.c: added a consistency check and initialize
26860         some structures with g_new0().
26861         * metadata.c: fixed a couple more bugs in table size computation
26862         and add other checks for out-of bound access to metadata.
26863
26864 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
26865
26866         * metatada.c: fix bugs computing table sizes. Spew a
26867         warning when index in string heap is out of bounds.
26868
26869 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
26870
26871         * metadata.h: Add a couple of macros to manipulate tokens. 
26872
26873 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26874
26875         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
26876         cli_section_tables).
26877
26878 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
26879
26880         * metadata.c (mono_metadata_user_string): New function, provides
26881         access to the UserString heap. 
26882
26883 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
26884
26885         * metadata.c: Add inline documentation.
26886
26887 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
26888
26889         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
26890         files. 
26891
26892 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
26893
26894         * typeattr.h: New file, TypeAttribute flags. 
26895
26896 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
26897
26898         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
26899         mono_assembly_ensure_section): Section loading code.
26900         (load_section_tables): Load the sections.
26901
26902         * mono/metadata/metadata.c (mono_metadata_locate_token,
26903         mono_metadata_locate): Functions to locate the information
26904         definition given a token or a table and an index.
26905         (mono_metadata_compute_table_bases): New.
26906         (compute_size): New function to compute the sizes of the various
26907         tables.
26908
26909         * mono/metadata/metadata.h: Finish listing the different index
26910         types. 
26911
26912         * mono/metadata/pedump.c: Improve to dump new information.
26913
26914 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
26915
26916         * mono/metadata/metadata.c: Entered all the tables matching
26917         Beta2. 
26918
26919         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
26920
26921
26922