2008-06-13 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2008-06-13  Mark Probst  <mark.probst@gmail.com>
2
3         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
4         templates.  Templates are generalized with an additional type_argc
5         argument.  RGCTX templates have type_argc==0, MRGCTX templates
6         have type_argc>0.
7
8         * domain-internals.h, domain.c: New hash table for looking up
9         MRGCTXs.
10
11         * metadata.c, metadata-internals.h: Rename hash and equal
12         functions for MonoGenericInst's and make them public.
13
14         * class-internals.h: New data structures for the MRGCTX.  Macros
15         for distinguishing slots in the RGCTX and the MRGCTX.
16
17 2008-06-13  Mark Probst  <mark.probst@gmail.com>
18
19         * object.c (mono_method_get_imt_slot): Put the same methods of
20         different instantiations of the same generic interface in the same
21         IMT slots, to make generic sharing simpler.
22
23 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
24
25         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
26
27         * metadata.c (mono_metadata_field_info_with_mempool): Added.
28         This function works just like mono_metadata_field_info, but
29         accept a mempool as argument to be used allocating memory.
30
31         * marshal.c (mono_marshal_load_type_info): Use new function
32         to load marshal data into image mempool.
33
34 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
35
36         * class.c (mono_class_inflate_generic_type_with_mempool):
37         This function allows to inflate a generic type using
38         a mempool.
39
40         * class.c (inflate_generic_type): Take a mempool as argument
41         and use it to do type dup'ing.
42
43         * class.c (mono_class_setup_fields): Field type for generic
44         generic classes are allocated from the image mempool.
45
46         * metadata.c (free_generic_class): Inflated field type is
47         now allocated in the image mempool.
48
49 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
50
51         * threads.c (thread_cleanup): Free MonoThread::name.
52
53 2008-06-12  Marek Habersack  <mhabersack@novell.com>
54
55         * appdomain.c (ensure_directory_exists): avoid unnecessary
56         mkdir(2) calls when the shadow directory already exists.
57         (mono_make_shadow_copy): copy also satellite assemblies from the
58         private bin directories.
59
60 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
61
62         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
63         
64         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
65         a page boundary. Fixes #396219.
66
67 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
68
69         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
70         due to double-checked locking.
71
72 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
73
74         * assembly.c (build_assembly_name): Release memory on failure.
75
76         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
77
78 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
79
80         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
81         memory on failure.
82
83 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
86         memory on failure.
87
88 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * loader.c (field_from_memberref): Check if field signature type is equal
91         to the non-inflated type of the field. Fixes #398980.
92
93 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
94
95         * assembly.c (mono_assembly_load_from_full): Call 
96         mono_assembly_load_friends () outside the assemblies lock, since it can
97         acquire the loader lock. Fixes #323696.
98
99         * reflection.c (resolve_object): Inflate the inst with the context for
100         FieldOnTypeBuilderInst. Fixes #399010.
101
102 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
103
104         * reflection.c (mono_image_get_field_on_inst_token): Don't
105         inflate the field to encode it's signature. If it's a
106         VAR or MVAR it should stay that way in the signature.
107         Fixes #399047.
108
109 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
110
111         * reflection.c (resolve_object): Release memory of inflated types.
112
113 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
114
115         * loader.c (mono_method_get_signature_full): Remove assert about
116         loading a methodspec to a generic method. We have such methods, such as
117         System.Threading.Interlocked::CompareExchange<T>.
118         This assert was removed since it crashes the verifier when it checks
119         methods calling CompareExchange<T>.
120
121 2008-06-10  Marek Safar  <marek.safar@gmail.com>
122
123         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
124         of Type array and not MonoType.
125
126 2008-06-10  Marek Habersack  <mhabersack@novell.com>
127
128         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
129         <lupus@ximian.com>
130
131 2008-06-10  Martin Baulig  <martin@ximian.com>
132
133         * debug-mono-symfile.h
134         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
135         changes to the file format, but we were generating incorrect
136         source file indices in the line number table due to a bug, which
137         made backtraces report an incorrect source file.
138
139 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * mono-debug.c: Moved mono_debug_free_method_jit_info from
142         mini/debug-mini.c to here.
143
144         * mono-debug.c (il_offset_from_address): Free memory from find_method.
145
146         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
147         use it to release structs returned by mono_debug_find_method.
148
149 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
150
151         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
152         since it needs to set method->slot for all interface methods.
153
154 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
155
156         * class-internals.h: Forgot to add.
157
158 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
159
160         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
161
162         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
163         Lookup the custom attributes from property_hash.
164
165         * reflection.c (mono_save_custom_attrs): Save the custom attributes
166         in property_hash. Allocate all data using the image mempool.
167
168         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
169         for dynamic_custom_attrs to checks if the image is dynamic.
170
171 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
172
173         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
174         assemblies array.
175         
176         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
177         runtime functions while holding the domain assemblies lock.
178
179 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
180
181         * verify.c: Reapplied the last bit of the reverted changes.
182
183 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
184
185         * verify.c: Reapplied more of the reverted changes.
186
187 2008-06-09  Martin Baulig  <martin@ximian.com>
188
189         * debug-mono-symfile.c (load_symfile): Check the major version
190         first; if it's wrong, don't print the minor version in the error message.
191
192 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
193
194         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
195         lock instead of the domain lock to avoid deadlocks, since the thread might
196         already hold the loader lock.
197
198         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
199         (mono_thread_attach): Ditto.
200
201         * monitor.c: Use a TLS variable for holding the current thread id instead
202         of calling pthread_self ().
203         (mono_monitor_init_tls): New internal function to initialize the TLS
204         variable.
205         (mono_monitor_try_enter_internal): Put the owner == id check after the
206         owner == 0 check.
207
208         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
209         missed optimizations when using gcc-4.3.
210
211 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
212
213         * reflection.c (mono_dynamic_image_free): Free the memory
214         used by MonoGenericParam in MonoDynamicImage::gen_param.
215
216         * reflection.c (mono_reflection_setup_generic_class): Allocate
217         container from mempool.
218
219         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
220         container from mempool.
221
222 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
223
224         * threads.c (mono_set_pending_exception): New internal function to set the
225         pending exception of the current thread.
226         (mono_thread_get_and_clear_pending_exception): Check for 
227         thread->pending_exception as well.
228
229         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
230
231         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
232         it can trigger a collection.
233
234 2008-06-06  Martin Baulig  <martin@ximian.com>
235
236         Merged the `debugger-kahalo' branch.
237
238         * mono-debug.h
239         (MONO_DEBUGGER_VERSION): Bumped to 72.
240
241         * debug-mono-symfile.h
242         (MonoSymbolFileMethodIndexEntry): Removed.
243         (MonoSymbolFileMethodEntry): New public typedef.
244         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
245         (MonoSymbolFileSourceEntry): Remove everything except `index' and
246         `data_offset'.
247         (MonoSymbolFileMethodEntry): Removed.
248         (MonoSymbolFileLexicalBlockEntry): Removed.
249         (MonoSymbolFileLineNumberEntry): Removed.
250         (MonoDebugLexicalBlockEntry): Removed.
251         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
252         removed `num_il_offsets' and `il_offsets'.
253         (MonoSymbolFile): Replace `version' with `major_version' and
254         `minor_version'.
255         (MONO_SYMBOL_FILE_VERSION): Replace with
256         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
257         `MONO_SYMBOL_FILE_MINOR_VERSION'.
258
259         * debug-mono-symfile.c
260         (mono_debug_symfile_lookup_location): Add support for the new line
261         number table format.
262
263 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
264
265         * metadata.c (free_generic_class): Release the inflated
266         MonoClass of dynamic generic classes if it's not a generic
267         type definition.
268
269 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
270
271         * verify.c: Reapplied more of the reverted changes.
272
273 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
274
275         * reflection.c (lookup_custom_attr): Clean the cached flag or
276         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
277         for SRE types.
278
279 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         * verify.c: Reapplied a small part of the reverted changes.
282
283 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
284
285         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
286
287         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
288         previously in managed code.
289         (mono_monitor_exit): Ditto.
290         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
291
292         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
293         the managed definition.
294
295 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
296
297         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
298
299 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
300
301         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
302         
303         * monitor.c: Add some micro optimizations.
304
305         * icall.c (type_from_typename): Handle 'bool'.
306
307 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * verify.c: Implement constructor verification per P III 1.8.1.4.
310         Fixes #396716.
311
312 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
313
314         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
315         holding the assemblies lock here too.
316
317 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
318
319         * verify.c: Kill stack_top function.
320
321 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
322
323         * verify.c: Kill stack_get function.
324
325 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * verify.c (mono_method_verify): Last change broke the build. Fixed.
328
329 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
330
331         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
332         more reliable.
333
334         * verify.c (mono_method_verify): Inflate params and locals to avoid
335         mismatch when checking for compatibility.
336
337 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
338
339         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
340         Length prefix should be size in bytes. Fix bug #339530.
341         
342         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
343         Length prefix should be size in bytes. Fix bug #339530.
344
345         Code is contributed under MIT/X11 license.
346
347 2008-06-05  Bill Holmes <billholmes54@gmail.com>
348
349         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
350
351         Contributed under MIT/X11 license.
352
353 2008-06-05  Martin Baulig  <martin@ximian.com>
354
355         * mono-debug-debugger.c
356         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
357
358 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
359
360         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
361         while holding the assemblies lock to prevent deadlocks. Handle the case
362         where the search hook returns NULL but the assembly was still loaded.
363         Fixes #323696.
364
365         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
366         modify domain state.
367
368 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
369
370         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
371         * Makefile.am (pedump_LDADD): Post-process object files and
372         add dtrace-generated object file, if necessary.
373
374         Code is contributed under MIT/X11 license.
375
376 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
377
378         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
379
380 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
383
384 2008-06-04  Mark Probst  <mark.probst@gmail.com>
385
386         * threads.c: Try to free everything from the delayed free table
387         when shutting down threads, and set the variable to NULL after the
388         table is freed so that calling
389         mono_thread_hazardous_try_free_all() when shutting down the root
390         domain doesn't crash.
391
392 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
395         the caller if resulting type was inflated.
396
397         * class.c (mono_class_create_from_typespec): Free the MonoType if it
398         was inflated.
399
400         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
401
402
403 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
404
405         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
406         class library tests.
407
408         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
409         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
410         #396989.
411
412 2008-06-04  Mark Probst  <mark.probst@gmail.com>
413
414         * domain.c, domain-internals.h: The JIT infos are now freed by the
415         JIT info table code.  They are freed immediately if there only a
416         single JIT info table in circulation.  If there is more, the free
417         is delayed via a queue.
418
419         * threads.c, threads-types.h: New hazard pointer function for
420         freeing all freeable delayed items in one sitting.
421
422 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
423
424         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
425
426         * reflection.c (typebuilder_setup_properties): Same.
427
428         * reflection.c (typebuilder_setup_events): Same.
429
430 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
431
432         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
433         and use it for allocating memory.
434
435         * reflection.c (mono_marshal_spec_from_builder): Same.
436
437         * reflection.c: Change code to use new signatures.
438
439         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
440
441 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
442
443         * decimal.c (rescale128): Put back one line which was accidently commented
444         out.
445         
446         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
447         to cause crashes.
448
449 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
450
451         * reflection.c (mono_reflection_generic_class_initialize): Name must
452         be always malloc'ed so we can free it later on. Do this for field, property
453         and event.
454
455         * metadata.c (free_generic_class): Free field, property and event names.
456
457 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
458
459         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
460         instead of g_memdup.
461
462         * reflection.c (typebuilder_setup_fields): Same.
463
464 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
465
466         * decimal.c (rescale128): Optimize this function a bit more.
467
468 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
469
470         * metadata.c (free_generic_class): Release some memory from
471         SRE generic classes.
472
473 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * reflection.c (mono_image_get_generic_field_token): No reference
476         to name is kept, free it.
477
478         * reflection.c (mono_reflection_generic_class_initialize): Free
479         more memory of the inflated field.
480
481 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
482
483         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
484         code.
485
486 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
487
488         * reflection.c (mono_dynamic_image_free): Release memory used by
489         MonoDynamicImage::array_methods elements.
490
491         * reflection.c (assembly_add_win32_resources): Release memory after
492         encoding.
493
494 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
495
496         * decimal.c (log2_32): Use an optimized version for this function too.
497         
498         * decimal.c (log2_64): Fix this on 32 bit machines.
499
500 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * class.c (mono_dup_array_type): Implement allocation using a mempool.
503
504         * class.c (mono_metadata_signature_deep_dup): Same.
505
506         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
507         a mempool.
508
509         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
510
511         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
512
513         * metadata-internals.h: Added mono_metadata_signature_dup_full.
514
515         * class-internals.h: Update signatures to take a MonoMemPool.
516
517 2008-06-02  Dick Porter  <dick@ximian.com>
518
519         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
520         * icall-def.h: Add
521         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
522         FormatMessage API to get the error text.  Fixes bug 321827.
523
524 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
525
526         * decimal.c: Add some micro optimizations to make decimal operations faster.
527
528 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * reflection.c (method_encode_clauses): Take a mempool
531         as parameter and use it to allocate the clause array.
532
533         * reflection.c (mono_image_get_field_on_inst_token): Free
534         the inflated type after encoding it.
535
536         * reflection.c (mono_dynamic_image_free): Free each element
537         of MonoDynamicImage::gen_params.
538
539         * reflection.c (reflection_methodbuilder_to_mono_method):
540         Allocate the generic param array from the mempool.
541         Allocate signature params from the mempool.
542
543         * reflection.c (mono_reflection_generic_class_initialize):
544         Free inflated fields after been used.
545
546 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * icall.c: Reapply the memory leak fixes as they no
549         longer make mono crash.
550
551 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * reflection.c (mono_type_get_object): Don't store the suplied
554         MonoType with type_hash. A caller which pass a type that
555         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
556         might end with a pointer to freed memory.
557         The solution is to use byval_arg or this_arg from the associated
558         MonoClass of the supplied type.
559
560 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
561
562         * icall.c: Revert the rest of the last change as it breaks the build too.
563
564 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
565
566         * icall.c: Revert a leak fix as it's breaking the build.
567
568 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
569
570         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
571
572 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
573
574         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
575
576 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
577
578         * icall.c: Fix some memory leaks.
579
580 2008-05-29  Dick Porter  <dick@ximian.com>
581
582         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
583         async socket operations from the pending list when a socket
584         closes.  Leaving it until the threadpool services the event
585         exposes a race condition when a socket descriptor is reused.
586         Fixes bug 377589.
587
588 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
589
590         * object.c: Fix negative index check for array alocation.
591
592 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * icall.c, marshal.c: Delegate wrappers should skip visibility.
595         This check is performed by the verifier for IL created delegates
596         and by Delegate::CreateDelegate for programatically created ones.
597         Fixes #372406.
598
599 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
600
601         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
602         Fix code to use mono_array_size_t instead of int.
603
604         Based on patch by Luis F. Ortiz.
605         Contributed under X11 license.
606         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
607
608 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
609
610         * icall.c: Added ves_icall_System_Array_GetLongLength and
611         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
612         arrays.
613
614         * icall.h: Export both new functions.
615
616         Based on patch by Luis F. Ortiz.
617         Contributed under X11 license.
618         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
619
620 2008-05-28  Martin Baulig  <martin@ximian.com>
621
622         The debugger now requires exactly r103463.
623
624         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
625         This version is not supported by the debugger, wait for 72.
626
627 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * object.h: Changed array related functions to use
630         mono_array_size_t instead of guint32. Forgot to commit this file.
631
632         Patch by Luis F. Ortiz.
633         Contributed under X11 license.
634         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
635
636
637 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
638
639         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
640         don't define it. Use the number literal instead.
641
642 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * icall.c: Changed array related functions to use
645         mono_array_size_t instead of guint32.
646
647         * icall.c (ves_icall_System_Array_GetLength): Check for length
648         overflow under MONO_BIG_ARRAYS.
649
650         Based on patch by Luis F. Ortiz.
651         Contributed under X11 license.
652         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
653
654 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
655
656         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
657
658         Based on patch by Luis F. Ortiz.
659         Contributed under X11 license.
660         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
661
662 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
663
664         * object.c, object.h: Changed array related functions to use
665         mono_array_size_t instead of guint32.
666
667         Patch by Luis F. Ortiz.
668         Contributed under X11 license.
669         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
670
671 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * object.h: Introduced mono_array_size_t typedef. This must be used
674         in all places an array length is expected. This is 64bits wide if
675         MONO_BIG_ARRAYS is enabled.
676
677         Patch by Luis F. Ortiz.
678         Contributed under X11 license.
679         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
680
681 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
682
683         * security-manager.c class.c: Set the class exception info by calling
684         mono_class_set_failure ().
685
686         * class.c (mono_class_get_exception_data): New accessor function.
687         (mono_class_set_failure): Store exception_data in the property hash.
688
689         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
690         the struct as a property.
691
692         * loader.c (mono_get_method_full): Store the lookup result for method
693         tokens in method_cache, the others in methodref_cache to decrease the memory
694         usage of hash tables.
695
696         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
697         (mono_image_init): method_cache is lazy inited now.
698
699         * metadata-internals.h (struct _MonoImage): Change method_cache to
700         a MonoValueHashTable, add a separate methodref_cache.
701
702 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
703
704         * number-formatter.h: Fix tables to avoid arithemtic overflow in
705           Double.ToString as exposed by Bug #383531.
706
707 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
708
709         * number-formatter.h: Make some tables static.
710
711         * class.c (mono_method_set_generic_container): New accessor function.
712         (mono_method_get_generic_container): Ditto.
713
714         * class-internals.h (struct _MonoMethod): Remove rarely used 
715         'generic_container' field, store it in the property hash instead. Add 
716         'is_generic' boolean field instead.
717
718         * image.c (mono_image_init): Initialize property_hash.
719         (mono_image_close): Destroy property_hash.
720
721         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
722         hold rarely used fields of runtime structures belonging to this image.
723
724         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
725         to get/set method->generic_container.
726
727         * loader.c (mono_get_method_from_token): Avoid loading the method header for
728         generic methods.
729
730 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
731
732         * class.c (mono_class_inflate_generic_method_full): Don't increase
733         mono_stats.inflated_method_count for methods found in the cache.
734
735         * threads.c (mono_thread_request_interruption): Add a comment about 
736         QueueUserAPC ().
737
738 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
739
740         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
741         interface_offsets_packed table.
742         
743         * class.c (mono_class_init): Remove some dead code.
744
745         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
746         mono_class_setup_vtable () when CAS is active to detect security problems.
747
748 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
749
750         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
751
752         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
753         parameters as it's irrelevant for delegate checking.
754
755 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
756
757         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
758
759         * class.c (mono_class_init): Control the creation of a generic vtable using
760         a global which is true by default, but set to false by the runtime startup code.
761         
762         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
763         Disabled for now since it breaks the embedding API.
764         Move the setup of class->methods for arrays to mono_class_setup_methods ().
765         (mono_class_setup_methods): Add a memory barrier.
766
767         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
768         when mono_class_init () doesn't compute the generic vtable.
769         
770 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
771         * profiler.c: Added mono_profiler_install_statistical_call_chain,
772         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
773         to support call chains (backtrace) in the stat profiler.
774         * profiler.c, profiler-private.h: Likewise.
775
776 2008-05-22  Mark Probst  <mark.probst@gmail.com>
777
778         * generic-sharing.c: Init generic class when a method of it is
779         requested via a runtime generic context.
780
781 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
782
783         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
784
785         * reflection.c (mono_type_get_object): Add a FIXME.
786
787         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
788
789         * class.c (mono_class_get_method_by_index): New helper function, returning an
790         entry in the class->methods array.
791
792 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
793
794         * class.c (mono_class_init): Only do the array optimization for szarrays. 
795         Avoid creating a generic vtable for generic instances as well.
796         (mono_class_get_method_from_name_flags): Don't search in the metadata for
797         generic instances.
798
799 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * loader.c (mono_get_method_constrained): Inflate the signature
802         with class context. Fix #325283.
803
804 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
805
806         * object.c (mono_class_create_runtime_vtable): Add a comment.
807
808         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
809         where needed.
810         (setup_interface_offsets): Handle the case when this is called twice for arrays.
811         (mono_class_setup_vtable_general): Add an assert.
812         (mono_class_init): Avoid creating a generic vtable for arrays.
813
814         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
815         here, let mono_class_init () do that.
816
817         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
818         interfaces in mscorlib.
819
820         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
821         interfaces. Add some comments.
822         (mono_class_init): Call mono_class_setup_methods () here since it is no
823         longer called by mono_class_setup_vtable ().
824
825         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
826         not set in class->vtable.
827         (mono_class_create_runtime_vtable): Reenable the disabled code.
828
829         * object.c (mono_class_create_runtime_vtable): Disable the last change for
830         now as it causes some test failures.
831
832         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
833         if using the vtable trampoline. Also remove some strange code which put the
834         generic methods themselves into the vtable slots. Remove the AOT init_vtable
835         stuff as it is no longer needed.
836
837 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
838
839         * pedump.c: Give make --verify all option check code as well.
840         Using --verify code won't check for metadata now.
841
842 2008-05-19  Martin Baulig  <martin@ximian.com>
843
844         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
845
846         * mono-debug.c
847         (_mono_debug_using_mono_debugger): New global variable; it's set
848         directly by the debugger, so mono_debug_using_mono_debugger() also
849         works after attaching.
850
851 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
852
853         * object.c (mono_class_create_runtime_vtable): Use memory barriers
854         as we do double checked locking on MonoClass::runtime_info and
855         MonoClassRuntimeInfo::domain_vtables.
856
857 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
858
859         * debug-helpers.c (print_field_value): Fix a warning.
860
861 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
862
863         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
864         set in the AOT case.
865
866 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
867
868         * class.c (mono_class_setup_vtable_general): Use memory barriers
869         as we do double checked locking on MonoClass::vtable.
870
871 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
872
873         * reflection.c (resolve_object): Inflate only if the generic context
874         is not null. Fixes #389886.
875
876 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
877
878         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
879         instead of g_free.
880
881         Code is contributed under MIT/X11 license.
882
883 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
884
885         * class.c: Revert unrelated change.
886
887 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
888
889         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
890         a generic instantiation, use mono_class_from_mono_type instead of playing
891         with MonoType directly.
892
893 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
894
895         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
896         checks must ignore generic instantiations, so mono_class_has_parent is not
897         suitable. Fixes #390128.
898
899 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
900
901         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
902         it to avoid registering tokens during metadata generation. Fixes #390023.
903
904 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
905
906         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
907         consistent.
908
909         Contributed under MIT/X11 license.
910
911 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
912
913         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
914         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
915         to fixup the EXE image.
916         (mono_cleanup): Use mono_close_exe_image.
917         (mono_close_exe_image): New function.
918         * image.c: Include "marshal.h".
919         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
920         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
921         counting when the image is loaded outside of mono_image_open_full. Set status
922         based on GetLastError.
923         * coree.c: Include required headers. Add init_from_coree.
924         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
925         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
926         (_CorExeMain): Set init_from_coree.
927         (CorExitProcess): Only call ExitProcess for now.
928         (CorBindToRuntimeEx): New stub implementation.
929         (CorBindToRuntime): New function.
930         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
931         (MonoFixupExe): ILONLY executables require no fixups.
932         (mono_set_act_ctx): New function to set activation context.
933         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
934         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
935         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
936         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
937         as MONO_INTERNAL.
938         * domain-internals.h: Add mono_close_exe_image.
939
940         Contributed under MIT/X11 license.
941
942 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
943
944         * metadata.c (mono_metadata_compute_size): Correctly calculate field
945         size for generic param and event tables. Fixes #388977.
946
947 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
948
949         * loader.c (mono_method_signature): Use memory barriers because of the double
950         checked locking pattern.
951
952         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
953         aborting or aborted as well. Fixes #376391.
954         
955         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
956         existing runtime state in the Suspend handler during shutdown.
957
958 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
959
960         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
961
962         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
963         which are starting up or shutting down.
964
965         * threads.c (mono_threads_set_shutting_down): Don't return a value since
966         this function never returns if the runtime is already shutting down.
967
968         * icall.c (ves_icall_System_Environment_Exit): Update after 
969         mono_threads_set_shutting_down () signature change.
970         
971 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
972
973         * class.c: Added can_access_instantiation to verify if the instantiation
974         is visible. Fix access check for nested types as they returned TRUE
975         before doing type and generic instantiation visibility checks.
976
977 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
978
979         * reflection.c (mono_reflection_create_generic_class): The created type
980         must have a different container from its TypeBuilder. Otherwise they
981         will end sharing generic arguments, which is wrong.
982
983         Due to the sharing, making a generic instance of the created type using
984         the TypeBuider generic arguments resulted in the generic type definition
985         been returned, which is wrong as well.
986
987         As a bonus the code was leaking the type_params array. This memory should
988         be allocated from the image mempool.
989
990         This fixes bug #354047.
991
992 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
993
994         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
995         to here         as they are now used in assembly.c new code.
996         Added a skipverification flag to MonoAssembly.
997         New internal function mono_assembly_has_skip_verification.
998
999         * assembly.c: New function mono_assembly_has_skip_verification. It checks
1000         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
1001         part of #387274.
1002
1003 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
1006         needed. Fixes #387034.
1007
1008         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
1009
1010 2008-05-06  Miguel de Icaza  <miguel@novell.com>
1011
1012         * assembly.c (mono_assembly_load_reference): Prevent crash while
1013         disassembling Silverlight 2.0 executables while we still do not
1014         have GACed libraries.
1015
1016 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * reflection.c: Special case generic type definitions as well. Fixes #383444.
1019
1020 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
1023         of the dynamic case. Fixes #387404.
1024
1025 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         *verify.c (mono_verifier_is_class_full_trust): If under
1028         verify_all and the verifier mode was not set, only
1029         gac and corlib types are fulltrust. This makes --verify-all
1030         usable to detect unverifiable code, which is the expected
1031         use case.
1032
1033 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1034
1035         * verify.h: Ops, commited the header with debug
1036         enabled.
1037
1038 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * verify.c (merge_stack): Use the new value on unverifiable
1041         stack merges.
1042
1043         * verify.c (verify_type_compatibility_full): Comparison
1044         of nullable types can't use mono_class_is_assignable_from.
1045
1046         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
1047         that makes all verification errors be reported.
1048
1049         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
1050         mono_method_verify.
1051
1052 2008-05-05  Robert Jordan  <robertj@gmx.net>
1053
1054         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
1055         support for value types. See #386415.
1056
1057         * object.c: comments.
1058
1059         Code is contributed under MIT/X11 license.
1060
1061 2008-05-05  Martin Baulig  <martin@ximian.com>
1062
1063         * debug-mono-symfile.h
1064         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
1065         for old pre-terrania symbol files.
1066
1067 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1068
1069         * mono-config.c: Add ppc64 architecture.
1070
1071         Code is contributed under MIT/X11 license.
1072
1073 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1074
1075         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
1076           PPC64 uses function descriptors as well.
1077
1078         Code is contributed under MIT/X11 license.
1079
1080 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
1081
1082         * object.c (compute_class_bitmap): Ignore literal static fields.
1083
1084         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
1085         var has an invalid format.
1086         (describe_ptr): Add some sanity checks for the vtable.
1087         (add_nursery_frag): Clear unused nursery fragments.
1088         (major_collection): Clear all remaining nursery fragments.
1089
1090 2008-05-03  Robert Jordan  <robertj@gmx.net>
1091
1092         * image.c, metadata-internals.h: add thunk_invoke_cache.
1093
1094         * marshal.c, marshal.h: implement
1095         mono_marshal_get_thunk_invoke_wrapper ().
1096
1097         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
1098
1099         Code is contributed under MIT/X11 license.
1100
1101 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1102
1103         * verify.c (do_leave): Empty the stack.
1104
1105 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1106
1107         * class.c (mono_class_is_assignable_from): Variance
1108         doesn't work between reference and value types. For example,
1109         given type C<T+>, C<int32> is not assignable to C<object>.
1110         Break the argument checking loop on first error. 
1111
1112 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
1113
1114         * icall.c : base64_to_byte_array() needs some more strict
1115           check for sequence of '=' characters. Patch by Santa
1116           Marta (http://deee.g.hatena.ne.jp/santamarta).
1117
1118           Contributed under MIT/X11 license.
1119           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
1120
1121 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
1122
1123         * domain.c: Disable LoadLibrary support to fix Win32 build.
1124
1125         Code is contributed under MIT/X11 license.
1126
1127 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
1130         to help with cache behaviour.
1131
1132 2008-05-01  Miguel de Icaza  <miguel@novell.com>
1133
1134         * appdomain.c (mono_domain_from_appdomain): Add new accessor
1135         method. 
1136
1137 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
1140
1141 2008-05-01  Dick Porter  <dick@ximian.com>
1142
1143         * process.c (process_get_fileversion): Only pass 16 bits of
1144         language ID to VerLanguageName.  Fixes bug 381204.
1145
1146 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1147
1148         * verify.c (mono_method_verify): Fix the comparison
1149         operator for code bounds check.
1150
1151 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1152
1153         * verify.c (mono_method_verify): Check the bounds of
1154         all access of the code array.
1155
1156 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
1157
1158         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
1159
1160 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * image.c (mono_image_strong_name_position): Fix return value when the rva is
1163         not valid.
1164
1165 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
1166
1167         * loader.c (mono_get_method_from_token, mono_method_signature): Add
1168         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
1169         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
1170         fixup main EXE images when using mono.exe for mixed-mode assembly support.
1171         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
1172         mono_runtime_load.
1173         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
1174         runtime initialization from metadata.
1175         * assembly.c: Remove obsolete ceGetModuleFileNameA.
1176         (mono_set_rootdir): Use mono_get_module_file_name.
1177         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
1178         handles.
1179         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
1180         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
1181         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
1182         MonoCLIImageInfo. Add support for module handles.
1183         (load_cli_header): Update mono_cli_rva_image_map signature.
1184         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
1185         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
1186         (mono_image_rva_map): Add support for module handles.
1187         (mono_image_ensure_section_idx): Add support for module handles.
1188         (mono_image_close): Add support for module handles.
1189         (do_load_header): Add support for module handles.
1190         (mono_image_open_from_module_handle): New function for internal use.
1191         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
1192         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
1193         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
1194         handles.
1195         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
1196         * image.h: Add mono_image_fixup_vtable.
1197         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
1198         support.
1199         * coree.h: New file.
1200         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
1201         unsupported native code.
1202         (mono_marshal_set_callconv_from_modopt): New function splitted from
1203         mono_marshal_get_managed_wrapper.
1204         (mono_marshal_get_managed_wrapper): Use
1205         mono_marshal_set_callconv_from_modopt.
1206         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
1207         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
1208         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
1209         that results in a deadlock when the runtime is loaded in _CorDllMain.
1210         * Makefile.am: Add coree.c and coree.h.
1211
1212         Contributed under MIT/X11 license.
1213
1214 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1215
1216         * generic-sharing.c: Search for type arguments in array element
1217         types as well.
1218
1219 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1220
1221         * class-internals.h, generic-sharing.c: New, small runtime generic context.
1222
1223         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
1224
1225         * object.c: Don't setup the RGCTX when the vtable is created,
1226         because we're setting it up lazily now.
1227
1228 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
1231         64 bit support.
1232
1233 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1234
1235         * verify.c (verify_class_for_overlapping_reference_fields): 
1236         If class is under fulltrust allow reference types to overllap
1237         if they have the same RVA.
1238
1239 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1240
1241         * pedump.c: Added new flag valid-only, that makes the verifier
1242         behaves just like --security=validil. It won't fail type load
1243         due to unverifiable restrictions.
1244
1245 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1246
1247         * class-internals.h (struct MonoMethod): Added a verification_success
1248         field to cache verifier executions. Reduced MonoMethod:slot size by
1249         one bit.
1250
1251 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
1254         instead of a 'vt' argument to save an indirection and to allow these to be used
1255         for valuetypes.
1256         (scan_vtype): New helper function to scan an area using a gc descriptor.
1257         (mono_gc_wbarrier_value_copy): Implement this.
1258         (handle_remset): Add support for REMSET_VTYPE.
1259         (find_in_remset_loc): Ditto.
1260         (mono_gc_base_init): Allow some debugging options to be controlled through the
1261         use of the MONO_GC_DEBUG env variable.
1262         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
1263         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
1264
1265 2008-04-23  Martin Baulig  <martin@ximian.com>
1266
1267         * domain.c (mono_domain_create): Move the call to
1268         mono_debug_domain_create() down, after allocating the domain id.
1269
1270 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1271
1272         verify.c (verify_class_for_overlapping_reference_fields): Skip
1273         static fields while verifying for overlapping fields as they
1274         don't matter at all.
1275
1276 2008-04-23  Marek Habersack  <mhabersack@novell.com>
1277
1278         * domain-internals.h: added a declaration of
1279         mono_make_shadow_copy.
1280
1281         * assembly.c (mono_assembly_open_full): shadow copying of
1282         assemblies moved to here, so that all the assemblies within the
1283         application domain's private binary directories can be
1284         processed. Fixes bug #380546
1285
1286         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
1287         mono_make_shadow_copy and made non-static. The decision whether
1288         to shadow-copy an assembly is made based on its location - it's
1289         copied if it's in one of the private application domain binary
1290         directories and its different to the target file in the shadow
1291         directory. Fixes bug #380546
1292
1293 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
1296
1297         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
1298         types.
1299
1300         * reflection.c (mono_image_create_token): Handle 
1301         Method/ConstructorOnTypeBuilderInst.
1302         (resolve_object): Ditto.
1303         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
1304         so it can be called from resolve_object. Also handle the case when the inflated
1305         class already has its methods setup.
1306
1307 2008-04-21  Martin Baulig  <martin@ximian.com>
1308
1309         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
1310
1311 2008-04-20  Geoff Norton  <gnorton@novell.com>
1312
1313         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
1314         pointer dereference.
1315
1316 2008-04-15  Marek Habersack  <mhabersack@novell.com>
1317
1318         * appdomain.c (try_load_from): if IOMAP is in effect, call the
1319         portability API to look up the assembly file. Fixes behavior in
1320         situations when the application has a bin/ directory, but the
1321         assembly search patch refers to Bin/ (and thus the requested file
1322         name is Bin/SomeLibrary.dll). Fixes bug #379888
1323
1324 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1325
1326         verify.c (mono_type_is_generic_argument): Extracted this check
1327         from a dozen places to here.
1328
1329         verify.c: Fixed all issues related to boxing generic arguments
1330         and their constraints.
1331
1332 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         verify.c (mono_class_interface_implements_interface): Fix win32 build.
1335
1336 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
1339         isn't finished yet. Fixes #363447.
1340
1341 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
1344         Fixes #346419.
1345
1346 2008-04-13  Jb Evain  <jbevain@novell.com>
1347
1348         * domain.c: update the 2.1 profile versions.
1349         Merged from the Moonlight 2 branch.
1350
1351 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
1354         mscorlibs for the non-refonly case as well.
1355
1356         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
1357         in mono_assembly_load_from_full (). Fixes #378924.
1358
1359 2008-04-11  Geoff Norton  <gnorton@novell.com>
1360
1361         * icall.c: The global extern environ doesn't exist on Mac.  We
1362         need to call NSGetEnviron instead.
1363
1364 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1365
1366         verify.c: Add generic method constraint verification.
1367
1368 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1369
1370         class.c (mono_class_inflate_generic_method_full): Add a long
1371         explanation to the is_mb_open hack. Remove the FIXME.
1372
1373 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * verify.c (mono_method_verify): Mark all unknown opcodes
1376         as invalid. Mark jmp as unverifiable.
1377
1378 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1379
1380         * verify.c: Add code to do type constraint verification on class instances.
1381
1382         * verify.c (mono_verifier_verify_class): Use the type constraint 
1383         verification code.
1384
1385 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1386
1387         * class.c (mono_class_get_field_default_value): Don't pass cindex
1388         as hint to mono_metadata_get_constant_index. The local is not initialized
1389         and should contain garbage most of the time. This could only work
1390         with a lot of luck.
1391
1392 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
1395
1396 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1397
1398         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
1399
1400         * class.c (mono_class_from_generic_parameter): Save the token of the
1401         generic param in MonoClass::sizes.generic_param_token.
1402
1403         * reflection.c (mono_custom_attrs_from_class): If the class type is
1404         VAR or MVAR retrieve the attributes of the generic param.
1405
1406 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * class.c (mono_class_init): Do class verification if the verifier
1409         is enabled.
1410
1411 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * verify-internal.h: Added mono_verifier_verify_class.
1414
1415         * verify.c: Added mono_verifier_verify_class. It checks for
1416         classes with explicit layout that have overlapping reference fields.
1417
1418         * pedump.c: Init the verifier state prior to verification. Fixed
1419         command line arguments.
1420
1421 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * Makefile.am: Added verify-internals.h, hopefully fix the build.
1424
1425 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * verify-internals.h: Fix a warning.
1428
1429 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1430
1431         * verify-internals.h: New header with the verifier configuration
1432         extracted from mini.c.
1433
1434         * verify.c: Implemented the new functions exported by verify-internals.h.
1435
1436 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * verify.c: Add proper verification of ckfinite.
1439
1440 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1441
1442         * verify.c (do_conversion): Improved error message to something
1443         more meanfull.
1444
1445         * verify.c (check_is_valid_type_for_field_ops): Fix to work
1446         with primitive types.
1447
1448 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1449
1450         * verify.c: Added tail prefix checking. Marked icall
1451         as unverifible.
1452
1453 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1454
1455         * verify.c: Fix the detection of branches to the middle
1456         of an instruction.
1457
1458 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1459
1460         * verify.c: Implemented verification of volatile. and
1461         unaligned. prefix. Check if a type is valid after retrieving it.
1462
1463 2008-04-01  Dick Porter  <dick@ximian.com>
1464
1465         * process.c (process_get_fileversion): If there's no string block,
1466         set the file language to en_US.  Fixes the other new part of bug
1467         374600.
1468
1469 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
1470
1471         * class.c: New functions mono_method_can_access_field_full and
1472         mono_method_can_access_method_full. They perform type visibility
1473         and type site check.
1474
1475         * class-internal.h: Added exported functions.
1476
1477         * verify.c: Use new functions to implement proper visibility checks.
1478
1479 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
1482
1483 2008-03-28  Dick Porter  <dick@ximian.com>
1484
1485         * process.c (process_get_fileversion): Use the first language ID
1486         we see, rather than insisting on an invariant language.  Fixes bug
1487         374600.
1488
1489 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
1492         the streams to fix reading of invalid memory later.
1493
1494         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
1495         to ease debugging.
1496
1497 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
1500         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
1501
1502 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
1503         * threads.h: Added MonoThreadManageCallback type and
1504         mono_thread_set_manage_callback prototype
1505         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
1506         (used to store the mono_thread_manage callback).
1507         * threads.c: Added mono_thread_set_manage_callback, and handle
1508         "MonoThread->manage_callback" in build_wait_tids.
1509
1510 2008-03-26  Dick Porter  <dick@ximian.com>
1511
1512         * process.c (process_get_fileversion): Set FileVersionInfo strings
1513         to Empty when the resource doesn't have the particular info.
1514         Fixes bug 355717.
1515
1516 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
1517
1518         * verify.c (mono_method_verify): Proper prefix validation.
1519
1520 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
1523         itself in a separate argument instead of throwing them. Fixes #373448.
1524
1525         * appdomain.c: Bump corlib version.
1526
1527 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1528
1529         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
1530
1531 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
1532
1533         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
1534         version macros.
1535
1536 2008-03-20  Mark Probst  <mark.probst@gmail.com>
1537
1538         * generic-sharing.c, class-internals.h: Code for putting
1539         reflection types into the runtime generic context.
1540
1541 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1542
1543         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
1544         Fixes #340662. 
1545
1546
1547 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1548
1549         * verify.c (VerifyContext): Added instruction prefix data to the struct.
1550
1551         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
1552
1553         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
1554
1555         * verify.c (do_cast): Let the result value keep the boxed status.
1556
1557         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
1558
1559 2008-03-17  Jb Evain  <jbevain@novell.com>
1560
1561         * reflection.c: when running on a 2.0 runtime, emit
1562         unconditionally the #~ header version as 2.0, and the
1563         CLI header version as 2.5, for symmetry's sake with csc.
1564
1565 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * class.c: Remove the unused cache_interface_offsets stuff.
1568
1569         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
1570         profiler.c: Fix warnings.
1571
1572 2008-03-16  Mark Probst  <mark.probst@gmail.com>
1573
1574         * generic-sharing.c, class-internals.h: Support for putting
1575         methods into the runtime generic context.
1576
1577 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * class.c (mono_class_setup_fields): Ignore calls made to this function for
1580         classes which are generic instances of not-yet finished typebuilders. Fixes
1581         #351172.
1582
1583         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
1584
1585 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
1586
1587         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
1588
1589         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
1590         field, replace it with a hash table in MonoDynamicImage.
1591
1592         * reflection.c (inflate_mono_method): Access the generic definition object from
1593         image->generic_def_objects instead of imethod->reflection_info.
1594
1595         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
1596
1597         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
1598         
1599         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
1600         function in reflection.c so it is easier to keep in sync with the dynamic image
1601         creation code.
1602
1603         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
1604         mono_image_close ().
1605
1606 2008-03-15  Mark Probst  <mark.probst@gmail.com>
1607
1608         * class.c (mono_class_generic_sharing_enabled): Disable generic
1609         sharing for all architectures except AMD64 and x86 to fix build.
1610
1611 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1612
1613         * verify.c: Use the generic definition MonoGenericContext when available.
1614         Remove code for checking generics instance compatibility in favor of
1615         mono_class_is_assignable_from.
1616
1617 2008-03-14  Mark Probst  <mark.probst@gmail.com>
1618
1619         * marshal.c, marshal.h, metadata-internals.h, image.c,
1620         wrapper-types.h: New wrapper for invoking a shared static method
1621         without having to pass the runtime generic context argument.
1622
1623 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1624
1625         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
1626
1627 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
1630         
1631         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
1632         create a token from a FieldOnTypeBuilderInst.
1633         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
1634         (resolve_object): Ditto.
1635
1636         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
1637         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
1638
1639 2008-03-14  Martin Baulig  <martin@ximian.com>
1640
1641         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
1642
1643         * debug-mono-symfile.h
1644         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
1645         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
1646
1647 2008-03-10  Martin Baulig  <martin@ximian.com>
1648
1649         * debug-mono-symfile.h
1650         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
1651         `lexical_block_table_offset'.
1652         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
1653         `lexical_blocks'.
1654         (MonoSymbolFile): Added `version'.
1655
1656         * mono-debug.h
1657         (MonoDebugLexicalBlockEntry): Removed.
1658         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
1659         `lexical_blocks'.
1660
1661         * mono-debug.c (mono_debug_add_method): Don't compute lexical
1662         blocks here; the debugger now does this internally.
1663
1664 2008-02-27  Martin Baulig  <martin@ximian.com>
1665
1666         * object.c (mono_runtime_exec_main): Call
1667         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
1668         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
1669
1670 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1671
1672         * verify.c (verify_type_compatibility_full): Allow native int to be converted
1673         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
1674
1675 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1676
1677         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
1678         ldftn with a virtual method.
1679
1680 2008-03-13  Geoff Norton  <gnorton@novell.com>
1681
1682         * decimal.c:  Only include memory.h if the platform has it.
1683
1684 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
1685
1686         * assembly.c, class.c, metadata-internals.h: make sure public key
1687         tokesns are compared in a case-insensitive way. Also, all
1688         the lookups in the GAC use a lowercase public key token
1689         (gaacutil already does the lowercasing on install). Fixes
1690         bug #369541.
1691
1692 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
1693
1694         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
1695         and return value.
1696
1697 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
1698
1699         * image.c: when someone loads a mscorlib from a file, return the
1700         currently loaded mscorlib (fixes bug #369253).
1701
1702 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1703
1704         * class.c: handle types with no parents by forcing them to have
1705         System.Object as a parent and marking them as broken (this currently
1706         allows the first part of bug #369173 to work as well, likely because
1707         we don't check for typeload exceptions everywhere yet).
1708
1709 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
1710
1711         * class.c: more complete check that types belong to corlib
1712         (fixes second part of bug #369173).
1713
1714 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
1715
1716         * generic-sharing.c:  Including glib.h for the MSVC builds to define
1717           "inline" to "__inline" before including mono-membar.h.
1718           
1719         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
1720           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
1721           MSVC builds.
1722
1723         Contributed under MIT/X11 license.
1724
1725 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * verify.c (do_invoke_method): Remove return type validation.
1728
1729         * verify.c (do_ret): Do return type validation at return site instead of
1730         call site.
1731
1732 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1733
1734         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
1735
1736         * verify.c: Some todos cleaned and improved a few error messages.
1737
1738 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
1741
1742 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
1745         system types correctly.
1746
1747         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
1748         function.
1749
1750 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * assembly.c (build_assembly_name): Fix a warning.
1753
1754 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
1755
1756         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
1757         the called function takes an object type argument. Fixes storing or
1758         valuetypes across remoting as well as reducing memory usage.
1759         * image.c, metadata-internals.h: remove now unused ldfld_remote and
1760         stfld_remote wrapper caches.
1761
1762 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
1765         is not found.
1766
1767         * reflection.c (mono_image_register_token): New helper function to save
1768         a token->object mapping.        
1769
1770         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
1771         managed code.
1772
1773         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
1774         one dimension arrays. Fixes #367670.
1775         (mono_reflection_get_type_internal): Ditto.
1776
1777 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
1778
1779         * marshal.c: mono_load_remote_field_new() always returns object.
1780         so use the proper signature (fixes bug #366445).
1781
1782 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1783         
1784         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
1785         add an 'inline_failure' flag instead.
1786
1787 2008-03-04  Mark Probst  <mark.probst@gmail.com>
1788
1789         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
1790         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
1791         contains the location of "this", used for exception handling.
1792
1793 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
1796         their size on all platforms for perf reasons.
1797
1798 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1799
1800         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
1801         object-internal.h
1802
1803         * object-internal.h: Same.
1804
1805 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1806
1807         * reflection.h: Fix the build I just broke.
1808
1809 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1810
1811         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
1812         Test if a token is valid, this remove explicit usage of 
1813         MonoDynamicImage::tokens from the verifier code.
1814
1815         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
1816
1817         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
1818         instead of direct access to MonoDynamicImage::tokens.
1819
1820 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1821
1822         * verify.c (token_bounds_check): Fix the build I just broke.
1823
1824 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1825
1826         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
1827
1828         * verify.c (verifier_load_method): Fixed the errors message.
1829
1830         * verify.c (mono_method_verify): Fixed a debug message.
1831
1832 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
1833
1834         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
1835         mono-perfcounters.h, class-internals.h: support for predefined
1836         writable counters, query of categories and counters, bugfixes.
1837
1838 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1839
1840         * verify.c (do_refanytype): Verify the refanytype opcode.
1841
1842         * verify.c (mono_method_verify): Use do_refanytype.
1843
1844 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1845
1846         * verify.c (do_mkrefany): Verify the mkrefany opcode.
1847
1848         * verify.c (mono_method_verify): Use do_mkrefany.
1849
1850 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
1851
1852         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
1853         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
1854         implementation.
1855
1856 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1857
1858         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
1859         the type load exception.
1860
1861 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1862
1863         * verify.c: Added a few FIXME for method signatures
1864
1865         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
1866         of mono_method_get_signature and get vararg call working. Removed unused
1867         checks for return value.
1868
1869         * verify.c (do_refanyval): Verify the refanyval opcode.
1870
1871         * verify.c (mono_method_verify): Implemented verification of arglist and
1872         use do_refanyval.
1873
1874 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
1877         vtypes to marshal.c.
1878
1879         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
1880         it works for AOT as well.
1881
1882 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1883
1884         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
1885         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
1886         the system time is adjusted.
1887
1888 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
1889
1890         * icall.c, icall-def.h: use the new time functions (fixes the
1891         non-monotonic behaviour of TickCount).
1892
1893 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
1894
1895         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
1896         it breaks the build.
1897         
1898         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
1899         cattr is not finished yet.
1900
1901 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1902
1903         * verify.c: Proper token validation for field, method and type.
1904
1905 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1906
1907         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
1908
1909         * loader.c (method_from_memberref): Generate type load error instead of method missing
1910         if the type is not found.
1911
1912 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
1913
1914         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
1915         some of the conversions caused the generation of a marshal directive exception.
1916
1917 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         verify.c: Report which exception should be thrown by the JIT.
1920         Added a lot of FIXME notes.
1921
1922 2008-02-22  Mark Probst  <mark.probst@gmail.com>
1923
1924         * generic-sharing.c: Runtime generic context slots are not
1925         instantiated on init anymore.  Instead, provide function to do the
1926         instantiating on demand.
1927
1928         * class-internals.h: Added vtable to runtime generic context.
1929         Macros for encoding direct and indirect slot offsets in one
1930         guint32.
1931
1932 2008-02-21  Mark Probst  <mark.probst@gmail.com>
1933
1934         * object.c, generic-sharing.c: Moved some generic sharing code
1935         from object.c to generic-sharing.c.
1936
1937         * generic-sharing.c: Added support for extensible runtime generic
1938         context.
1939
1940         * metadata-internals.h: Two new hash tables in MonoImage for
1941         extensible runtime generic context support.
1942
1943         * domain.c: Unregister generic vtables upon domain unloading.
1944
1945         * image.c: Destroy new hash tables upon image unloading.
1946
1947         * metadata.c: Unregister generic subclasses upon image unloading.
1948
1949         * class-internals.h: New data structure for runtime generic
1950         context template.  New fields in the runtime generic context for
1951         extensible part.
1952
1953         * Makefile.am: Added generic-sharing.c.
1954
1955 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
1958         there is a pending loader exception, raise it.
1959
1960         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
1961         same.
1962
1963         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
1964         same.
1965
1966         Fixes #363450.
1967
1968 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
1971
1972         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
1973         
1974         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
1975         ref-only requests for compatibility with MS.
1976
1977 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
1978
1979         * reflection.c (mono_custom_attrs_from_method): Don't silently
1980         return an empty list for generic method instances.
1981         (mono_custom_attrs_from_param): Likewise.
1982
1983 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
1984             Raja R Harinath  <harinath@hurrynot.org>
1985
1986         Fix #354757
1987         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
1988         * class.c (mono_class_inflate_generic_method_full): Initialize it
1989         when a fully-open method is instantiated.
1990         * metadata.c (inflated_method_equal, inflated_method_hash): Update
1991         to new field.
1992         * reflection.c (inflate_mono_method): Don't create a temporary context.
1993
1994 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
1995
1996         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
1997         Compute correct value, to prepare for imethod->reflection_info going away.
1998
1999 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
2002
2003 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2004
2005         * verify.c: Implement skip visibility flag.
2006
2007 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2008
2009         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
2010         which contains an extra field to tell the kind of exception that should be thrown.
2011
2012         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
2013
2014 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
2015
2016         * loader.c (mono_method_get_param_names): Initialize 'klass' after
2017         'method' is updated.
2018
2019 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
2020
2021         * class.c (mono_class_layout_fields): Set class->min_align for classes using
2022         explicit layout as well. Fixes #360375.
2023
2024 2008-02-11  Geoff Norton  <gnorton@novell.com>
2025
2026         * loader.c: Guard and dereference against inflated generic methods
2027
2028 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
2029
2030         * class.c: Include Retargetable spec in assembly name.
2031         * assembly.c: Always include PublicKeyToken spec in assembly name
2032         (with value "null" if assembly is not signed), and include
2033         Retargetable spec.
2034         * icall-def.h: Added icall for Assembly.get_fullname.
2035         * icall.c: Added icall returning the fullname of an assembly.
2036
2037 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * class.c (mono_class_setup_vtable_general): Add a missing call to
2040         mono_class_setup_methods () which is needed in the AOT case.
2041
2042 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
2043
2044         * verify.c (mono_type_get_stack_name): Added. Return the name for the
2045         stack type of the given MonoType.
2046
2047         * verify.c (verify_type_compatibility_full): Handle the void type.
2048
2049         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
2050         way stack merging works.
2051
2052         * verify.c (store_local): Improved verification message.
2053
2054         * verify.c (do_branch_op): If the merging is invalid, the method
2055         is unverifiable and not invalid. Improved error message.
2056
2057         * verify.c (merge_stacks): Properly merge a boxed valuetype and
2058         a reference type diferent than System.Object. Improved error
2059         message.
2060
2061 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
2062
2063         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
2064
2065         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
2066         type of an enum even if the argument is byref.
2067
2068         * verify.c: Replace all explicit uses of enumtype and enum_basetype
2069         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
2070
2071         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
2072
2073         *verify.c (verify_type_compatibility_full): Make enum types
2074         compatible with their base types.
2075
2076         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
2077         types are compatible for the special case of a boxed valuetype and
2078         System.Object.
2079
2080         * verify.c (verify_stack_type_compatibility): The function
2081         is_compatible_boxed_valuetype was extracted from here.
2082
2083         * verify.c (push_arg): Only set ctx->has_this_store if the method
2084         is not static.
2085
2086         * verify.c (do_ldelem): Fixed a typo in an error message and added
2087         strict check for mixing int32 and native int as the array type
2088         and ldelem type.
2089
2090         * verify.c (merge_stacks): Consider boxed valuetypes in the
2091         compatibility checks.
2092
2093 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
2094         * profiler.h: (MonoGCEvent): Added start-stop the world events.
2095
2096 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2097         *class.c: use_new_interface_vtable_code: renamed the env var to have
2098         a "MONO_" prefix, and fix the logic to enable it by default.
2099
2100 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2101         *class.c:
2102         mono_class_setup_vtable_general: rewrote the way in which interface
2103         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
2104         makes the code more maintainable.
2105         For now the old code is still there, and can be activated setting
2106         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
2107
2108 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
2109
2110         * verify.c: guarded some debug functions around and #ifdef.
2111
2112         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
2113
2114 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
2117         changes for now since they seem to break too many things.
2118
2119 2008-02-05  Mark Probst  <mark.probst@gmail.com>
2120
2121         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
2122         mono_marshal_find_nonzero_bit_offset): Added macro and function
2123         for finding the byte- and bit-offset of a bitfield within a
2124         struct.
2125
2126 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
2129         (mono_marshal_get_struct_to_ptr): Ditto.
2130
2131         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
2132         cctor_signature.
2133
2134 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
2137         between methods for non-corlib types.
2138
2139 2008-02-02  Geoff Norton  <gnorton@novell.com>
2140
2141         * loader.c (mono_method_get_param_names): Populate the parameter name for 
2142         generic parameters as well. (Fixes #342536)
2143
2144 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
2145
2146         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
2147
2148         * verify.c (do_invoke_method): Fix for calling with byref structs.
2149
2150         * verify.c (do_cast): push a boxed value type based on the type token and not
2151         the type of stack.
2152
2153 2008-01-31  William Holmes  <billholmes54@gmail.com>
2154
2155         * process.c (process_module_string_read): Check the size returned form 
2156           VerQueryValue to avoid out of memory exception. 
2157
2158 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
2161         Handle properly modules which are not in the moduleref table. Fixes
2162         #356938.
2163
2164 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
2167         the dynamic case which is now in managed code.
2168         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
2169
2170         * marshal.c (mono_string_to_bstr): Fix a warning.
2171         (init_com_provider_ms): Ditto.
2172
2173         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
2174
2175         * exception.c (mono_get_exception_out_of_memory): New helper function.
2176
2177 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
2178
2179         * marshal.c: Add support for BSTR marshalling
2180         using other COM systems.
2181
2182         Code is contributed under MIT/X11 license.
2183
2184 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2185
2186         * object.c (mono_runtime_invoke_array): reverted previous
2187         commit as it breaks the build.
2188
2189 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         * object.c (mono_runtime_invoke_array): Verify arguments for
2192         invalid types. Fixes #348522.
2193
2194 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2195
2196         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
2197         non-final virtual calls using call. 
2198
2199         * verify.c (do_invoke): fixed some TODOs.
2200
2201         * verify.c (push_arg): set has_this_store for "ldarga 0".
2202
2203 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
2206         which belong to an inflated class. Fixes #356531.
2207
2208 2008-01-26  Robert Jordan  <robertj@gmx.net>
2209
2210         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
2211         which resort to FindFirstFile when a certain error condition
2212         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
2213         Code is contributed under MIT/X11 license.
2214
2215 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
2216
2217         * marshal.c (emit_marshal_string): Fix out string marshalling
2218         to use specified encoding. Fixes #323900.
2219
2220         Code is contributed under MIT/X11 license.
2221
2222 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
2223
2224         * class.c (mono_class_inflate_generic_method_full): Don't modify
2225         iresult->context after cache check.
2226
2227 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * class.c (mono_class_inflate_generic_method_full): Change the
2230         struct assignments to memcpy for better visibility and add some comments.
2231
2232 2008-01-23  Dick Porter  <dick@ximian.com>
2233
2234         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
2235         procedure, and make it work on windows.
2236
2237 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
2240         a MonoReflectionTypeBuilder since it is always of that type.
2241
2242         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
2243
2244         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
2245
2246         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
2247         
2248         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
2249
2250         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
2251
2252         * reflection.c (mono_reflection_create_runtime_class): Remove already created
2253         instantiations from the type cache.
2254
2255 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
2258
2259         * verify.c (do_unbox_value): push a controled mutability managed pointer.
2260
2261 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2262
2263         * verify.c (do_ldstr): added, verifies if the #US token is valid.
2264
2265         * verify.c (mono_method_verify): removed old TODO
2266
2267 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         * verify.c (do_newobj): add visibility check.
2270
2271 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2272
2273         * verify.c (do_load_function_ptr): add visibility check.
2274
2275 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
2276         *class.c:
2277         mono_generic_class_get_class: hook profiler events.
2278         mono_field_get_offset: added to support heap-shot in the new profiler.
2279         *class.h: exported mono_field_get_offset.
2280         * reflection.c:
2281         mono_reflection_setup_internal_class: hook profiler events.
2282
2283 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
2286         argument here too and use it to avoid checking for pending exceptions if 
2287         possible.
2288
2289 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
2290
2291         * assembly.c (build_assembly_name): add arg for passing the assembly
2292         flags. Do not consider a PublicKey with value "null" valid.
2293         (mono_assembly_name_parse_full): added boolean argument that will be
2294         set if the assembly name contains a PublicKeyToken spec. Added support
2295         for the Retargetable spec for which only Yes or No are allowed as valid
2296         value. Consider assembly name invalid if Retargetable spec is set, but
2297         either version, culture or public key (token) are not specified.
2298         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
2299         with implementation in assembly.c.
2300         * icall.c (fill_reflection_assembly_name): also copy assembly flags
2301         from MonoAssemblyName.
2302         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
2303         introduced argument for mono_assembly_name_parse_full to know if the
2304         assembly name has a PublicKeyToken spec, and if it has instruct
2305         fill_reflection_assembly_name to use default value for keyToken (if
2306         PublicKeyToken is null).
2307
2308 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2309
2310         * verify.c (mono_method_verify): fixed ovf ops with
2311         float values. They are unverifiable now.
2312
2313 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2314
2315         * class.c (set_failure_from_loader_error): add BadImageException to the
2316         list of exceptions that can cause a type to fail to load.
2317
2318         * class.c (mono_class_get_exception_for_failure): same.
2319
2320 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2321
2322         * verify.c (in_any_exception_block): added, check if offset
2323         is part of any exception handling clause.
2324
2325         * verify.c (get_stack_type): added VAR and MVAR types.
2326
2327         * verify.c (do_stobj): better error messages.
2328
2329         * verify.c (do_cpobj): added, check cpobj.
2330
2331         * verify.c (do_initobj): added, check initobj.
2332
2333         * verify.c (do_sizeof): added, check sizeof.
2334
2335         * verify.c (do_localloc): added, check localloc.
2336
2337         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
2338
2339 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
2342         save_lmf/restore_lmf opcodes.
2343
2344         * threads.c (mono_threads_install_notify_pending_exc): New function to
2345         install a callback notifying the JIT there is a pending exception on a thread.
2346         (mono_thread_request_interruption): Call the new callback.
2347         (mono_thread_get_and_clear_pending_exception): New function to return the
2348         exception pending on a thread.
2349
2350         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
2351         to turn off checking for pending exceptions.
2352         (mono_marshal_get_native_wrapper): Ditto.
2353
2354 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * threads-types.h: Get rid of the unnecessary extern declarations.
2357
2358 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
2359
2360         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
2361         return field from parent class if not private.
2362         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
2363         returns fields from parent class if they are not private.
2364         (method_nonpublic): added function to determine if a given method
2365         should be considered non-public. Returns false for private methods
2366         on parent class, and internal methods from parent on the 1.0 profile.
2367         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
2368         use method_nonpublic function to determine whether method should be
2369         returned.
2370         (property_accessor_public): use newly introduced method_nonpublic
2371         function to determine whether accessor is non-public. 
2372         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
2373         event from parent class if not private. Only return static event if
2374         Static flag is set, and only return static event from parent class if
2375         FlattenHierarchy flag is set.
2376         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
2377         include non-private events from parent class.
2378
2379 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
2382         warning.
2383
2384 2008-01-16  Wade Berrier <wberrier@novell.com>
2385
2386         * security.c: Add assembly.h header to appease some warnings
2387
2388 2008-01-16  Dick Porter  <dick@ximian.com>
2389
2390         * process.c (process_module_string_read): Remove trailing null
2391         when saving string.
2392
2393 2008-01-16  Mark Probst  <mark.probst@gmail.com>
2394
2395         * class-internals.h: A new data structure describing the layout of
2396         a runtime generic context (MonoRuntimeGenericContextTemplate).
2397
2398         * metadata-internals.h: Added a hash table to MonoDomain that maps
2399         from open generic classes to their runtime generic context
2400         templates.
2401
2402         * object.c: Building of the runtime generic context, including
2403         proper handling of generic type arguments of superclasses.
2404         Building of the runtime generic context according to the template.
2405
2406 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * class.c (mono_class_setup_fields): Set field.count for generic instances.
2409         Fixes #350856.
2410
2411         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
2412         mono_portability_find_file (). Fixes #325466.
2413         (mono_image_get_public_key): Fix a warning.
2414
2415 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
2416
2417         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
2418         Fixes #353550.
2419         (mono_class_from_name_case): Ditto.
2420
2421 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
2422
2423         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
2424           common storage for the tables used in the System/NumberFormatter class.
2425
2426 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
2429
2430 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
2431
2432         * verify.c (get_boxable_mono_type): check if the token is valid.
2433
2434         * verify.c (set_stack_value): changed to add an error if an
2435         invalid type is set on stack. Changed all callers due to signature change.
2436
2437         * verify.c (do_stobj): implement stobj validation.
2438
2439 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
2442         set container->is_method, it was set earlier.
2443
2444         * metadata.c (type_in_image): Handle MVARs which belong to not finished
2445         generic methods.
2446
2447         * reflection.c (mono_reflection_initialize_generic_parameter): Set
2448         is_method of the generic container to TRUE for methods.
2449
2450 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * metadata.c (type_in_image): Handle type parameters properly.
2453
2454         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
2455         memory ownership of this structure.
2456
2457 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
2458
2459         * verify.c (get_boxable_mono_type): make typedref types been just
2460         unverifiable. check for void type.
2461
2462         * verify.c (do_unbox_any): added, verify opcode unbox.any.
2463
2464         * verify.c (do_load_function_ptr): accept method spec tokens.
2465
2466 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2467
2468         * marshal.c (mono_class_native_size): Always set *align even if this is called
2469         recursively.
2470
2471 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
2474         out-of-date.
2475
2476 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
2477
2478         * verify.c: removed some old unused tables. A huge bunch of small fixes
2479         to things found while testing the verifier with mono basic.
2480
2481         * verify.c (dump_stack_value): dump null literal flag to.
2482
2483         * verify.c (verify_type_compatibility_full): fix comparison
2484         for types that have a generic super type.
2485
2486         * verify.c (verify_stack_type_compatibility): fix compatibility
2487         between null literals and reference types. fix compatibility between
2488         boxed valuetypes and object. fix corner case test for enums.
2489
2490         * verify.c (do_cmp_op): proper verification of cgt.un in case
2491         of reference types.
2492
2493         * verify.c (do_invoke_method): fix error message.
2494
2495         * verify.c (do_store_indirect
2496
2497         * verify.c (check_is_valid_type_for_field_ops): proper verification
2498         of managed pointers to valuetypes and boxed valuetypes. proper verification
2499         of null literals.
2500
2501         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
2502         allow token to be a reference type.
2503
2504         * verify.c (do_cast): proper handling of boxes valuetypes.
2505
2506         * verify.c (do_stelem): proper handling of storing a boxed valuetype
2507         in object[].
2508
2509         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
2510         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
2511         fixed the decoding of unbox_any
2512
2513 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
2516
2517 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2518
2519         * verify.c (do_newobj): do delegate verification.
2520
2521         * verify.c (verify_delegate_compatibility): perform delegate
2522         verification.
2523
2524         * verify.c (verify_ldftn_delegate): perform tests related to
2525         ldftn delegates.
2526
2527         * verify.c (mono_delegate_signature_equal): perform the
2528         slightly diferent signature comparison required by delegates.
2529
2530         * metadata.c (mono_metadata_type_equal_full): added and exported
2531         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
2532         allows signature only comparison.
2533
2534         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
2535         as MONO_INTERNAL.
2536
2537 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2538
2539         * verify.c: added a bunch of stack_slot_* functions to
2540         make access to stack slot type easier. This is required to
2541         allow optional flags, like null literal, boxed value and
2542         this pointer.
2543         All access paths to IlStackDesc::stype have been changed 
2544         to use these new funcions.
2545         Removed a bunch of unused functions and cleared all warnings.
2546         This patch introduces the usage of the this pointer and 
2547         boxed value flags.
2548
2549 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
2552
2553 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
2556         match managed version.
2557
2558         * appdomain.c: Bump corlib version.
2559         
2560         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
2561         argument.
2562
2563 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
2564
2565         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
2566         Set public key token to zero-length byte array if assembly is not
2567         strongnamed.
2568
2569 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
2572         writing a vtype array elem.
2573
2574 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
2575
2576         * assembly.c (build_assembly_name): return FALSE if length of token is
2577         not 16 (if not "null").
2578         (mono_assembly_name_parse_full): return FALSE if value of version,
2579         culture, token or key is 0.
2580         * icall.c (fill_reflection_assembly_name): add boolean arguments to
2581         specify whether public key and public key token must be set to default
2582         value (zero-length byte array) if not available. Set versioncompat to
2583         SameMachine. If public key is available or the default is set, then
2584         set PublicKey flag.
2585         (ves_icall_System_Reflection_Assembly_FillName): if no public key
2586         is available, use empty byte array as default value. On the 2.0
2587         profile, use default value for public key token if not set.
2588         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
2589         profile, use default value for public key if not set. On the 2.0
2590         profile, use default value for public key token if not set.
2591         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
2592         default values for public key and public key token.
2593
2594 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
2597         field to keep it in synch with the managed object.
2598
2599         * marshal.c (emit_marshal_object): Add support for byref marshalling of
2600         delegates. Fixes #351520.
2601
2602         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
2603         contains defined memory.
2604         
2605         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
2606
2607         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
2608         
2609         * sgen-gc.c (check_consistency): New helper function to do a consistency check
2610         of the GC data structures.
2611
2612         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
2613
2614         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
2615         
2616         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
2617         barrier.
2618         (mono_array_clone_in_domain): Ditto.
2619         (mono_array_clone_in_domain): Ditto.
2620
2621         * threads.c (start_wrapper): Register the thread start argument as a GC root.
2622         (cache_culture): Use a write barrier.
2623
2624         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
2625         (ves_icall_get_property_info): Ditto.
2626
2627         * object.h (MONO_STRUCT_SETREF): New macro.
2628
2629         * class-internals.h (MonoStats): Add some GC statistics.
2630
2631         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
2632
2633 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
2634
2635         * exception.c (mono_exception_from_name_two_strings):
2636         Break from loop after method is found.
2637
2638 2008-01-04  Dick Porter  <dick@ximian.com>
2639
2640         * process.c (process_module_string_read): Rename variable to
2641         reflect correct usage, after fixing bug 345972.
2642
2643 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
2644
2645         * verify.c (mono_type_create_fnptr_from_mono_method): 
2646         created a MonoType function pointer instance to be used during
2647         verification. The verifier releases this memory at end.
2648
2649         * verify.c (mono_method_is_constructor): extracted repeated
2650         checks for constructor into a single class.
2651
2652         * verify.c (do_push_field): use new extracted method
2653         for constructor check.
2654
2655         * verify.c (do_newobj): same.
2656
2657         * verify.c (do_ldftn): renamed to do_load_function_ptr
2658         and make it verify ldvirtftn too.
2659
2660         * verify.c (mono_method_verify: proper verification
2661         of ldvirtftn. release created MonoMethod instances.
2662
2663 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2664
2665         * verify.c (token_bounds_check): added.
2666
2667         * verify.c (do_ldftn): added.
2668
2669         * verify.c (mono_method_verify): proper verificartion of ldftn.
2670
2671 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2672
2673         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
2674         than the table row count. It's the resposibility of the caller to
2675         make the bounds check and raise the correct error.
2676
2677         * metadata.c (mono_metadata_decode_row_col): Same.
2678
2679         * loader.c (mono_get_method_from_token): perform bounds check
2680         on token for methoddef table.
2681
2682 2007-12-29  Miguel de Icaza  <miguel@novell.com>
2683
2684         * icall.c
2685         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
2686         assert into a negative result, the managed code already coped with
2687         that.
2688
2689         Some folks on Windows reported this error. 
2690
2691 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
2692
2693         * appdomain.c: Bump corlib version.
2694         * icall.c:
2695         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
2696         CultureInfo.CreateCulture to create CultureInfo for name.
2697         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
2698         create CultureInfo for name. Fixes bug #347174.
2699
2700 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
2703         flags.
2704
2705         * verify.c (is_valid_branch_instruction): allow branching to the
2706         first instruction of the protected block.
2707
2708         * verify.c (is_valid_cmp_branch_instruction): same.
2709
2710         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
2711         avoid double initialization.
2712
2713         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
2714         detect which cases the eval stack should just be copied.
2715
2716         * verify.c (mono_method_verify): check if the eval stack
2717         is empty when entering a protected block.
2718
2719 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2720
2721         * verify.c: added is_clause_in_range, is_clause_inside_range,
2722         is_clause_nested and verify_clause_relationship. They perform
2723         the verifications stated in P1 12.4.2.7.
2724
2725         * verify.c (mono_method_verify): remove some unused variables,
2726         add the new exception clause checks, add instruction border
2727         checks for protected block start/end, improved some error 
2728         messages and fixed a bug in the way invalid instruction access
2729         is detected.
2730
2731 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
2734         from GC 7.0 if available.
2735
2736         * object.c: Remove an unused define.
2737         
2738         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
2739
2740         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
2741
2742         * null-gc.c (mono_gc_make_descr_for_array): Implement.
2743
2744         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
2745
2746         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
2747         to take the same arguments as the other make_descr functions.
2748
2749         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
2750
2751         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
2752         directly.
2753
2754         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
2755         mini.c.
2756
2757         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
2758         call to boehm-gc.c.
2759
2760         * boehm-gc.c (mono_gc_register_root): Fix a warning.
2761
2762         * null-gc.c (mono_gc_register_root): Fix a warning.
2763
2764         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
2765
2766         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
2767         (mono_gc_base_init): Call GC_init ().
2768
2769         * null-gc.c: Define mono_gc_register_root () as a no-op.
2770
2771         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
2772
2773 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * verify.c: add prototype for merge_stacks at top
2776
2777         * verify.c (do_switch): added.
2778
2779         * verify.c (merge_stacks): on some cases the stack merging
2780         was not happening properly. Unequal stack sizes at merge
2781         points should be invalid.
2782
2783         * verify.c (mono_method_verify): added more debug info on stack state.
2784         verify switch properly.
2785
2786 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * method-builder.h: New file, moved the mono_mb_ declarations here from 
2789         marshal.h.
2790
2791         * boehm-gc.c marshal.c: Include method-builder.h.
2792
2793         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
2794
2795         * marshal.c: Remove some code which is now in method-builder.c.
2796
2797 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * method-builder.c: New file, extraction of the method builder functionality 
2800         from marshal.c.
2801
2802         * marshal.c: Move the mb functions into method-builder.c.
2803
2804         * marshal.h marshal.c: Export some mono_mb_... functions.
2805
2806         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
2807
2808         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
2809         the caller.
2810
2811         * class.c (mono_class_get_full): Check the token type in the dynamic case.
2812
2813         * loader.c (mono_field_from_token): Ditto.      
2814
2815         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
2816         type as well.
2817         
2818         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
2819         Fixes #342565.
2820
2821         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
2822         a helper function for setting it.
2823
2824         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
2825
2826         
2827         * assembly.c: Significally simplify code now that referenced assemblies are 
2828         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
2829
2830         * threads.h: Don't include  the internal threads-types.h header file. Fixes
2831         #349952.
2832
2833 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
2836         instructions that were target of branches or are at protected block boundaries.
2837
2838         * verify.c (in_same_block): handle filter clauses.
2839
2840         * verify.c (is_valid_branch_instruction): added. checks the target of
2841         instructions br or brtrue/false.
2842
2843         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
2844         binary branch instructions such as beq and bge.
2845
2846         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
2847         and made it pin the instruction as been part of the exception block.
2848
2849         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
2850         of in_same_block.
2851
2852         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
2853         of in_same_block.
2854
2855         * verify.c (do_ret): ret from a protected block is unverifiable and
2856         not invalid.
2857
2858         * verify.c (do_static_branch): verify br and br.s instructions.
2859
2860         * verify.c (merge_stacks): add extra param to support detection
2861         of branches in the middle of instructions.
2862         
2863         * verify.c (mono_method_verify): verify branches and exception blocks
2864         that target the middle of instructions. Proper verification of br and br.s.
2865
2866 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
2869         skip_visibility field.
2870         (reflection_methodbuilder_from_dynamic_method): Ditto.
2871
2872         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
2873         registrations. Fixes #348193.
2874
2875         * threads.h: Move the internal mono_thread_get_pending_exception () to
2876         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
2877
2878 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
2881         icall registration. Fixes #348193.
2882
2883         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
2884         for corlib classes into object. Fixes #349621.
2885
2886 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
2887
2888         * icall.c (property_accessor_nonpublic): new function to determine
2889         whether an accessor allows a property to be considered non-public.
2890         Returns false for private accessor(s) from parent class, and internal
2891         accessor(s) from parent on 2.0 profile (and higher).
2892         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
2893         to determine whether property should be included if NonPublic flag
2894         is set. Fixes bug #349078.
2895
2896 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
2897
2898         * verify.c (init_stack_with_value): added.
2899
2900         * verify.c (mono_method_verify): extracted common
2901         code for exception initialization into init_stack_with_value.
2902
2903         * verify.c (mono_method_verify): initialize the exception
2904         for handler clauses as well.
2905
2906         * verify.c (mono_method_verify): fix the exception clause
2907         ordering rules, it should use handler end offset and not
2908         start offset.
2909
2910 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
2911
2912         * rawbuffer.c: remove useless warning.
2913
2914 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
2915
2916         * threads.h, threads-types.h: move functions to the correct header
2917         (fixes bug#349952).
2918
2919 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2920
2921         * verify.c (mono_method_verify): proper verification
2922         of exception handling clauses ranges and fallthru in
2923         and out of protected blocks.
2924
2925 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2926
2927         * verify.c (mono_method_verify): fixed compilation issue.
2928
2929 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2930
2931         * verify.c (mono_method_verify): a printf slipped in, changed
2932         to use verifier debug macro.
2933
2934 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
2935
2936         * verify.c (is_correct_leave): check for filter clauses.
2937
2938         * verify.c (do_filter): added.
2939
2940         * verify.c (mono_method_verify): property verification of leave.
2941
2942
2943 2007-12-18  Mark Probst  <mark.probst@gmail.com>
2944
2945         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
2946         Win32 build, until we figure out how to do the proper thing on
2947         Win32.
2948
2949 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
2952         by the previous patch.
2953         
2954         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
2955         the assembly resolve handler for refonly assemblies.
2956
2957 2007-12-17  Mark Probst  <mark.probst@gmail.com>
2958
2959         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
2960         Make sure only one thread is allowed to commence shutdown, and
2961         don't allow new threads to be started once shutdown is in
2962         progress.
2963
2964 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2965
2966         * verify.c (is_correct_endfilter): added.
2967
2968         * verify.c (is_unverifiable_endfilter): added.
2969
2970         * verify.c (do_endfilter): added.
2971
2972         * verify.c (mono_method_verify): property verification of endfilter
2973         and fixed a corner case or endfinally.
2974
2975 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
2976
2977         * verify.h: new flags to support fail fast of unverifiable code and
2978         do non-strict verification. Non-strict verification is required to
2979         have MS runtime compatibility. There are a huge amount of unverifiable
2980         code that it accepts as verifiable. The strict mode verifies the code
2981         as the specs says.
2982         Non-strict mode will be required in cases where code needs to be
2983         accepted as verifiable but fails under strict mode.
2984
2985         * pedump.c: added support to fail fast and non-strict verification.
2986
2987         * verify.c: added support for both fail fast and non-strict verification.
2988
2989 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2990
2991         * verify.c (is_correct_endfinally): added.
2992
2993         * verify.c (mono_method_verify): property verification of endfinally.
2994
2995 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
2996
2997         * verify.c (in_any_block): check for filter clauses.
2998
2999         * verify.c (is_correct_rethrow): added.
3000
3001         * verify.c (mono_method_verify): property verification of rethrow.
3002
3003         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
3004
3005 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * verify.c (do_throw): added.
3008
3009         * verify.c (mono_method_verify): property verification of throw
3010
3011 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
3014         assemblies. Fixes #346425.
3015
3016 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
3019         FieldBuilders.
3020
3021         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
3022
3023         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
3024         prevent asserts when this is called with a token which might not be valid.
3025
3026         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
3027         lookup_dynamic_token_class with valid_token == FALSE.
3028
3029         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
3030
3031         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
3032
3033         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3034         
3035 2007-12-10  Mark Probst  <mark.probst@gmail.com>
3036
3037         * gc.c: Don't delay threadpool thread finalization unless Mono is
3038         shutting down.
3039
3040 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
3041
3042         * threads.c: turn an assert into a non-fatal warning.
3043
3044 2007-12-09  Robert Jordan  <robertj@gmx.net>
3045
3046         * icall.c (GetVirtualMethod): Add missing argument validation.
3047
3048 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * verify.c (do_cast): added.
3051
3052         * verify.c (mono_method_verify): property verification of castclass and isinst.
3053
3054
3055 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3056
3057         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
3058
3059         * verify.c (do_stelem): added.
3060
3061         * verify.c (mono_method_verify): property verification of stelem.X.
3062
3063 2007-12-07  Mark Probst  <mark.probst@gmail.com>
3064
3065         * class.c, class-internals.h: Introduce an environment variable
3066         (MONO_GENERIC_SHARING) through which the extent of generic code
3067         sharing can be controlled (share all classes, share only corlib
3068         classes, or share nothing).
3069
3070         * object.c: Only create runtime generic context for classes for
3071         which sharing is enabled.
3072
3073 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3074
3075         * verify.c (do_ldelem): refactor it to work with ldelem.any.
3076
3077         * verify.c (mono_method_verify): property verification of ldelem.any.
3078
3079 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3080
3081         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
3082         added ldelem.X opcodes.
3083
3084         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
3085
3086         * verify.c: proper verification of ldelem.X 
3087
3088 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
3091
3092 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3093
3094         * verify.c (mono_method_verify): null literal requires special handling,
3095         the value pushed on stack need to be flagged as so.
3096
3097         * verify.c (do_ldelema): Verify ldelema properly.
3098
3099 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3100
3101         * verify.c: Verify ldlen properly.
3102
3103 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
3106         to the target object's type. Fixes #346160.
3107
3108 2007-12-05  Dick Porter  <dick@ximian.com>
3109
3110         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
3111         Solaris needs the same workaround as BSD-derived systems.  Fixes
3112         bug 323524, patch by Burkhard Linke
3113         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
3114
3115 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
3116
3117         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
3118         handle to use when error dialog is shown; otherwise, update mask
3119         to show no error dialog when an error occurs.
3120
3121 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
3124
3125         * class.c (mono_class_get_field_default_value): New helper function to initialize
3126         field->def_type and field->data.
3127
3128 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
3131         the general one.
3132
3133         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
3134
3135         * marshal.c: Avoid depending on delegate->method_info being set.
3136
3137         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
3138         
3139         * object.c (mono_delegate_ctor): Set delegate->method.
3140
3141         * object-internals.h (struct _MonoDelegate): Add 'method' field.
3142
3143         * appdomain.c: Bump corlib version.
3144
3145 2007-11-27  Raja R Harinath  <harinath@gmail.com>
3146
3147         * metadata.c (mono_generic_inst_equal_full): Short-circuit
3148         equality check if we're comparing canonicalized MonoGenericInsts.
3149
3150 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * class.c (generic_array_methods): Call mono_class_setup_methods () before
3153         accessing class->methods.
3154
3155 2007-11-22  Dick Porter  <dick@ximian.com>
3156
3157         * threads.c: Ensure that the synch_cs is set before trying to use
3158         it.
3159
3160 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
3161
3162         * profiler.c: r89126 broke the statistial profiler, unbreak.
3163
3164 2007-11-22  Martin Baulig  <martin@ximian.com>
3165
3166         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
3167
3168         * mono-debug.c
3169         (mono_debug_debugger_version): Bump to 3.
3170         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
3171         -> mono_debugger_class_initialized().
3172
3173         * mono-debug-debugger.c
3174         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
3175
3176         * class.c
3177         (mono_debugger_start_class_init_func): Removed.
3178         (mono_debugger_class_loaded_methods_func): Added.
3179         (mono_class_setup_methods): Call it here.
3180
3181 2007-11-22  Martin Baulig  <martin@ximian.com>
3182
3183         * mono-debug.c
3184         (mono_debug_add_delegate_trampoline): New public method.
3185         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
3186
3187         * mono-debug.h
3188         (MonoSymbolTable): Added `global_data_table'.
3189         (MonoDebuggerTypeKind): Removed.
3190
3191 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
3192
3193         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
3194         these methods.
3195
3196         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3197         
3198 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
3199
3200         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
3201
3202 2007-11-20  Martin Baulig  <martin@ximian.com>
3203
3204         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
3205
3206         * mono-debug-debugger.c
3207         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
3208         (mono_debugger_remove_breakpoint): Likewise.
3209         (mono_debugger_check_breakpoints): Likewise.
3210         (mono_debugger_register_class_init_callback): New public method.
3211         (mono_debugger_remove_class_init_callback): Likewise.
3212         (mono_debugger_add_type): Likewise.
3213
3214         * mono-debug-debugger.h
3215         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
3216
3217 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
3218
3219         * class.c: more interface implementations needed for the
3220         array enumerator (fixes bug #341112).
3221
3222 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
3223
3224         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
3225         fix ParamName of ArgumentNullExceptions.
3226
3227 2007-11-17  Miguel de Icaza  <miguel@novell.com>
3228
3229         * reflection.c (mono_reflection_encode_sighelper): Generate the
3230         modopts and modreqs.   I have a useless test that crashes monodis,
3231         but that shows the code working.
3232
3233 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
3236         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
3237
3238 2007-11-15  Dick Porter  <dick@ximian.com>
3239
3240         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
3241         When joining a thread, it's the thread that's calling Join that
3242         gets WaitSleepJoin state not the target.  Fixes the standalone
3243         test case in bug 334740, and hopefully the whole bug too.
3244
3245 2007-11-15  Dick Porter  <dick@ximian.com>
3246
3247         * process.c: Read file version info from the files pointed at by
3248         process modules, not the current process.  Fixes bug 315969.
3249
3250         Use windows typedef names in some places to fix warnings on the
3251         windows build.
3252
3253 2007-11-15  Mark Probst  <mark.probst@gmail.com>
3254
3255         * image.c, metadata-internals.h: Added a generic_class_cache hash
3256         to MonoImage for looking up generic classes when sharing generics.
3257
3258 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
3259
3260         * sgen-gc.c: warning cleanups.
3261
3262 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
3265         inherited properties.
3266
3267 2007-11-14  Mark Probst  <mark.probst@gmail.com>
3268
3269         * object.c, class-internals.h: Added more information to the
3270         runtime generic context.
3271
3272 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
3275         instead of just the target method. Generalize the abstract method handling to
3276         handle any non-static method.
3277
3278         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3279         mono_marshal_get_delegate_invoke () signature change.
3280
3281 2007-11-13  Mark Probst  <mark.probst@gmail.com>
3282
3283         * class.c, class-internals.h: Made
3284         mono_type_get_basic_type_from_generic () public.  Fixed member
3285         access check for shared generics.
3286
3287         * loader.c: Don't insert field into field cache if it's part of a
3288         non-inflated generic class.
3289
3290         * domain.c, domain-internals.h: The generic sharing context is now
3291         part of the jit info data structure.  Added two accessor
3292         functions.
3293
3294 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
3297         the array Get/Set/Address methods, since the JIT inlines them.
3298
3299         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
3300
3301         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
3302         (mono_image_init): Initialize runtime_invoke_direct_cache.      
3303
3304         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3305         mono_marshal_get_delegate_invoke signature change.
3306
3307         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
3308         an additional argument. Add support for invoking abstract methods.
3309
3310         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
3311
3312         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
3313
3314 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3315
3316         * class.c: Do field layout for open generic classes as well.
3317
3318 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3319
3320         * gc.c, gc-internal.h: Don't finalize threadpool threads with
3321         other objects, because the threadpool is still around.  Put them
3322         in a list instead and after finalizing all other objects in the
3323         root domain shut down the thread pool and then finalize the
3324         threads.  Fixes bug #337383.
3325
3326         * threads.c, thread-types.h: New mono_thread_create_internal()
3327         function for marking a thread with the threadpool flag before it
3328         started.  Set synch_cs to NULL after freeing it.
3329
3330         * threadpool.c: Mark threadpool threads before they start.
3331
3332 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
3333
3334         * reflection.h, reflection.c: don't export random functions
3335         and lazy load dbnull and missing objects.
3336
3337 2007-11-07  Jonathan Chambers <joncham@gmail.com>
3338
3339         * class.c: Initialize COM types if COM interfaces
3340         are present (not just COM classes).
3341         
3342         Code is contributed under MIT/X11 license.
3343
3344 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3345         * reflection.c:
3346         create_dynamic_mono_image: hook module profiler events (dynamic case).
3347         mono_image_basic_init: hook assembly profiler events (dynamic case).
3348
3349 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3350         * profiler.c:
3351         simple_appdomain_unload: completely terminate the profiler
3352         instead of only processing the statistical samples.
3353         simple_shutdown: make sure this is really called exactly once,
3354         even in multithreaded applications, and always listen to
3355         appdomain events.
3356         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
3357         here, the "[un]load" functions will do it.
3358         Fixes bugs #333791 and #325261.
3359
3360 2007-11-07  Geoff Norton  <gnorton@novell.com>
3361
3362         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
3363         rather than depend on __APPLE__.
3364
3365 2007-11-07  Mark Probst  <mark.probst@gmail.com>
3366
3367         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
3368
3369 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
3370
3371         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
3372         UTF16 MonoString. Fix the crash from bug #335488
3373
3374 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
3375
3376         * marshal.c: Correct (for non-Win32 OS) length != size in 
3377         mono_string_from_bstr. Fix #339530.
3378
3379 2007-11-06  Geoff Norton  <gnorton@novell.com>
3380
3381         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
3382         to succeed
3383
3384 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
3385
3386         * process.c: Added run-time GetProcessId API detection for Windows.
3387
3388 2007-11-04  Miguel de Icaza  <miguel@novell.com>
3389
3390         * reflection.c  (mono_param_get_objects): If a parameter has the
3391         attribute [System.Runtime.InteropServices.Optional] we should
3392         set the DefaultValue of the ParameterInfo to be
3393         System.Reflection.Missing instead of DBNull.
3394
3395         See bug #339013.
3396
3397         (mono_get_reflection_missing_object): New method,
3398         returns the System.Reflection.Missing.Value singleton instance.
3399
3400 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
3401
3402         * culture-info-table.h : regenerated.
3403
3404 2007-11-02  Jonathan Chambers <joncham@gmail.com>
3405
3406         * icall.c: Use GetEnvironmentStrings on windows
3407         so we are using the same environment block as 
3408         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
3409         #333740.
3410         
3411         Code is contributed under MIT/X11 license.
3412
3413 2007-10-31  Martin Baulig  <martin@ximian.com>
3414
3415         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
3416
3417         * mono-debug-debugger.h
3418         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3419
3420 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
3423         classes.
3424
3425 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
3426
3427         * culture-info-table.h : regenerated.
3428
3429 2007-10-30  Robert Jordan  <robertj@gmx.net>
3430
3431         * icall-def.h, icall.c:
3432         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
3433
3434         Code is contributed under MIT/X11 license.
3435
3436 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * class.c (mono_class_setup_vtable): Find the inflated methods in the
3439         inflated class instead of inflating them again.
3440         
3441         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
3442         dynamic case.
3443
3444         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
3445         Call setup_supertypes () after klass->parent is set.
3446         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
3447
3448         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
3449         for inflated instances of not yet created dynamic generic classes.
3450         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
3451         times from inflated_method.
3452         (methodbuilder_to_mono_method): Ditto.
3453
3454 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
3455
3456         * gc.c: code cleanup and removed old untested option of not creating the
3457         finalizer thread.
3458
3459 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
3462         creating a jump trampoline for dynamic methods.
3463
3464 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
3465
3466         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
3467         generic TypeBuilders when called from another method of the same type (bug #335131).
3468
3469
3470 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
3473         doesn't seem to work perfectly.
3474         
3475         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
3476         called multiple times.
3477         (methodbuilder_to_mono_method): Ditto.
3478         (resolve_object): Inflate FieldBuilder's.
3479
3480 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3481
3482         * string-icalls.c, string-icalls.h, appdomain.c: patch from
3483         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
3484         RemoveEmptyEntries in the string.Split implementation (bug #322375).
3485
3486 2007-10-26  Dick Porter  <dick@ximian.com>
3487
3488         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
3489         Thread initialisation changes
3490
3491 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
3492
3493         * verify.c: fix compatibility check between arrays and System.Array
3494
3495 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
3498         too. Fixes #336999.
3499
3500 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * object.c (mono_value_box): Use typed allocation here.
3503
3504 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
3505
3506         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
3507         trampoline instead of compiling the method right away.
3508
3509         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
3510
3511 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
3514         related fields for dynamic classes. Fixes #334493.
3515
3516 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
3517
3518         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
3519         
3520         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
3521
3522         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
3523         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
3524
3525         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
3526
3527         * reflection.c (create_generic_typespec): Initialize klass->generic_container
3528         if needed.
3529         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
3530
3531 2007-10-18  Jonathan Chambers <joncham@gmail.com>
3532
3533         * marshal.c: Use correct key when removing item
3534         from ccw_hash.
3535         
3536         Code is contributed under MIT/X11 license.
3537
3538 2007-10-17  William Holmes  <billholmes54@gmail.com>
3539
3540         *marshal.c: Adding a case to marshal booleans to U1
3541
3542         Code is contributed under MIT/X11 license.
3543
3544 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
3545
3546         * class.c (mono_class_from_name): Search the modules compromising dynamic
3547         assemblies. Fixes #331601.
3548
3549 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
3550
3551         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
3552         exception if the type name contains an assembly component. Fixes #334203.
3553
3554         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
3555         modules inside dynamic assemblies. Fixes #334200.
3556         
3557         * reflection.c: Set image->public_key and image->public_key_length;
3558
3559         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
3560         fields.
3561
3562         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
3563         
3564 2007-10-16  Mark Probst  <mark.probst@gmail.com>
3565
3566         * metadata.c: Implemented correct comparing of generic classes.
3567         An inflated generic class can be equal to a non-inflated one if it
3568         is inflated with generic type variables as type arguments.  Fixes
3569         bug #333798.
3570
3571 2007-10-15  Dick Porter  <dick@ximian.com>
3572
3573         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
3574         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
3575         81646.
3576
3577         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
3578         instead of a monitor lock.  This means that monitor_try_enter and
3579         co can set the thread state safely.
3580         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
3581         thread_interrupt_requested, so interrupt actually works.
3582
3583         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
3584         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
3585         state accessor function
3586
3587 2007-10-15  Martin Baulig  <martin@ximian.com>
3588
3589         * mono-debug.h
3590         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
3591         the debugger with the current runtime.
3592
3593 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
3594
3595         * object.c, object-internals.h: added the ability to set a single
3596         trampoline for all the slots in a vtable.
3597
3598 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3599
3600         * marshal.c: deal with a possible race condition during multicast
3601         delegate invocation.
3602
3603 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3604
3605         * class.c: ensure value type methods don't have the synchronized
3606         flag set.
3607
3608 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
3609
3610         * string-icalls.c, string-icalls.h: reverted unapproved patch that
3611         breaks the build.
3612
3613 2007-10-11  Joel Reed  <joelwreed@comcast.com>
3614
3615         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
3616         to take an options parameter so that empty entries can be removed during
3617         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
3618
3619 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3620
3621         * marshal.c: make sure we don't store the signature from a dynamic
3622         method into the runtime invoke cache (bug #327189).
3623
3624 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3625
3626         * marshal.c: make sure the wrapper methods are properly initialized.
3627
3628 2007-10-11  Mark Probst  <mark.probst@gmail.com>
3629
3630         * metadata.c, metadata-internals.h: Generalized
3631         mono_type_stack_size() to mono_type_stack_size_internal() which
3632         takes an additional argument specifying whether it allows open
3633         types.
3634
3635 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3636
3637         * verify.c (do_invoke_method): handle typedbyref params
3638         correctly and check for unverifiable return values.
3639
3640         * verify.c (do_newobj): fix a warning.
3641
3642 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3643
3644         * verify.c: don't tread typedbyref as allways unverifable,
3645         so uses, like (ld/st)loc.0 are valid. verify for the cases
3646         that it matters, like boxing related operations.
3647
3648 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3649
3650         * verify.c: add verification of the newobj opcode. verification
3651         of delegate instantation still missing due ldftn and virldftn not
3652         pushing the function type on stack
3653
3654 2007-10-08  Mark Probst  <mark.probst@gmail.com>
3655
3656         * class-internals.h: Runtime generic context data structure
3657         definition.
3658
3659         * object.c: Initialization of runtime generic context at runtime
3660         vtable creation time.
3661
3662 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
3663         * class.c (mono_class_create_from_typedef,
3664         mono_class_from_generic_parameter, mono_ptr_class_get,
3665         mono_fnptr_class_get, mono_bounded_array_class_get)
3666         * domain.c (mono_domain_create, mono_domain_free)
3667         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
3668         * image.c (do_mono_image_load, mono_image_close):
3669         Hooked up load-unload profiler events.
3670
3671 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
3672
3673         * domain.c: track statistics about the actual amount of native code
3674         allocated.
3675
3676 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
3677
3678         * class.c: the valuetype enumerators don't have the additional
3679         supertypes interfaces.
3680
3681 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3682
3683         * class.c: need more interfaces setup for the IEnumerator<T>
3684         object created for arrays (tests/ienumerator-interfaces.2.cs).
3685
3686 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
3687
3688         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
3689
3690 2007-10-05  Alp Toker  <alp@atoker.com>
3691
3692         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
3693         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
3694         #315863.
3695
3696 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3697
3698         * verify.c (verify_type_compatibility_full): verification of
3699         compatibility improved, validates correctly non-strict checks between
3700         native int and I4 types different than (unsigned)int32.
3701
3702         * verify.c (do_store_indirect): added, do all verification of
3703         ldind.X opcodes. 
3704
3705         * verify.c (get_load_indirect_mono_type): renamed to
3706         get_indirect_op_mono_type, as it now returns the MonoType for 
3707         ldind.X and stind.X opcodes.
3708
3709 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * reflection.c: Fix the encoding of generic type definition for
3712         TypeBuilders.
3713
3714         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
3715         mono_image_typedef_or_ref but allows to specify if typespec lookups should
3716         be made. Typespec check is done prior to typeref cache lookup.
3717
3718         * reflection.c (mono_image_typedef_or_ref): now just delegate to
3719         mono_image_typedef_or_ref_full.
3720
3721         * reflection.c (encode_generic_class): encode the generic class
3722         directly instead of calling encode_type.
3723
3724         * reflection.c (encode_type): encode the generic type definition
3725         MonoClass as a generic instantiation.
3726
3727         * reflection.c (create_typespec): cache typespec tokens in
3728         the assembly->typespec cache. Don't create typespec for a generic
3729         instance MonoClass. Create typespec for the generic type defintion.
3730
3731         * reflection.c (create_generic_typespec): encode the generic
3732         class directly instead of calling encode_type.
3733
3734         * reflection.c (mono_image_create_token): encode the generic
3735         type definition not using a typespec for MonoType instances.
3736
3737
3738 2007-10-04  Raja R Harinath  <rharinath@novell.com>
3739
3740         Fix #328812
3741         * class.c (mono_image_init_name_cache): Don't return nested
3742         'protected internal' classes.
3743         (mono_class_from_name_case): Likewise.
3744
3745 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
3746
3747         * icall-def.h, icall.c : get_bundled_machine_config() is now the
3748           common function used by both DefaultConfig in System.dll and
3749           InternalConfigurationHost in System.Configuration.dll.
3750
3751 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3752
3753         * class.c: automatically add to vectors only a few essential explicit
3754         generic interfaces. The rest of the interfaces that arrays should
3755         provide are currently implicitly added (but still not lazily, see the
3756         design in the discussion of bug#325495 for the details of what is
3757         needed for that). Additionally, implicit interfaces are assigned the
3758         same vtable slot as the explicit interfaces (as they are compatible):
3759         this enables huge memory savings since we don't need to instantiate
3760         as many memthods and as large vtables anymore. Also, Since
3761         GetEnumerator<T> returns an instance of a type that is required to
3762         support a similarly large set of interfaces as arrays, we add
3763         implicit interfaces and interface offset sharing support to those
3764         types, too. This change adds all the required interfaces so that
3765         the anonarray.cs test case in the bug report works (we don't add
3766         all the interfaces to arrays of arrays 3-level deep and more because
3767         of the memory requirements explained in the bug and since they are much
3768         less common: the lazy-loading support will enabled them to work, too).
3769
3770 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3771
3772         * verify.c (merge_stacks): major clean up, all type compatibility
3773         checks are done by verify_type_compatibility. This fix my earlier lack
3774         of understanding of the CLR type system and merge_stacks no longer looks
3775         scary.
3776
3777         * verify.c: fixed some bad spelling.
3778
3779 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3780
3781         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
3782         a given stack slock.
3783         
3784         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
3785         verify_type_compatibility_full. This removed a near indentical function and fixed
3786         handling of Int32 and IntPtr across all opcodes.
3787
3788 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3789
3790         * class.c: only vectors have the additional generic interfaces.
3791
3792 2007-10-01  Jonathan Chambers <joncham@gmail.com>
3793
3794         * mono-config.c: Use g_strcasecmp instead of
3795         strcasecmp like everywhere else to fix
3796         compilation with MSVC.
3797         
3798         Code is contributed under MIT/X11 license.
3799
3800 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3801
3802         * object.c, object-internals.h: refactored the IMT code to enable
3803         building a single slot at a time and lazily creating the IMT trampolines
3804         and thunks.
3805
3806 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
3809
3810         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
3811         Fixes #328501.
3812         
3813 2007-09-29  Raja R Harinath  <harinath@gmail.com>
3814
3815         * loader.c (method_from_methodspec): Rearrange to avoid
3816         un-necessary exposition.  Don't assert out if the method's
3817         declaring type is a generic type definition.
3818
3819 2007-09-28  Martin Baulig  <martin@ximian.com>
3820
3821         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
3822
3823 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
3824
3825         * class-internals.h: optimize field layout of MonoClass to
3826         requires less cachelines at runtime and save a few bytes on 64 bit
3827         systems.
3828
3829 2007-09-28  Jb Evain  <jbevain@novell.com>
3830
3831         * reflection.c: when encoding type names in custom attributes,
3832         if the type is a closed generic type, its generic arguments
3833         have to be serialized as AssemblyQualifiedName, so that when
3834         they are deserialized, it's possible to re-create them properly.
3835         Fixes #329450.
3836
3837
3838 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
3839
3840         * object.c, class-internals.h: added delegate-creation counter.
3841
3842 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
3843
3844         * class.c: cleanup of the code that synthetizes interfaces for
3845         arrays in 2.0: saves quit a bit of corlib mempool memory.
3846         Code to fix bug #325495 ifdeffed out for now until the issues
3847         with memory usage and O(n^2) behaviour are fixed.
3848
3849 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3850
3851         * marshal.c: when possible, do not duplicate the name of the methods
3852         in the method builder and in the generated MonoMethod.
3853
3854 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3855         * verify.c: added support for type checking ldind_* opcodes.
3856
3857 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3858
3859         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
3860         which is used to distinguish the fully open instantiation of a TypeBuilder
3861         with the rest. This temporary hack is required to restore the property that
3862         the fully open instantiation is the same type of the generic type definition.
3863
3864         * class-internals.h (mono_generic_class_is_generic_type_definition):
3865         new function as part of the internal API.
3866
3867         * class.c (inflate_generic_type): return NULL when the generic inst is
3868         fully open. The fully open generic type is now the same as the generic type
3869         definition for non TypeBuilder types.
3870
3871         * class.c (mono_generic_class_get_class): removed assert since it is
3872         no longer valid, gklass->cached_class can point to the generic type definition.
3873
3874         * class.c (mono_generic_class_is_generic_type_definition): new.
3875
3876         * metadata.c (mono_generic_class_hash): added is_tb_open field
3877         to the hash calculation.
3878
3879         * metadata.c (free_generic_class): if the generic class is associated
3880         with the generic type definition, its field will come from the mempool and
3881         must not be freed.
3882
3883         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
3884         new, this function identifies the corner case of a TypeBuilder fully open
3885         instantiation.
3886
3887         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
3888         for lookup. Set gclass->cached_class to be the container class in case of
3889         the fully open instantiation of non TypeBuilder types.
3890
3891         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
3892         to compare generic classes.
3893
3894         * reflection.c (method_encode_methodspec): remove assert that
3895         no longer is valid.
3896
3897         * reflection.c (mono_reflection_generic_class_initialize): add
3898         an aditional assert to ensure the proper type is used.
3899
3900 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
3903         to enjoy it.
3904
3905 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3906
3907         * verify.c (push_arg): Fixed support for ldarga
3908         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
3909         MonoType used as first arg in case of instance calls.
3910
3911 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3912
3913         * verify.c: Support for verifying VAR and MVAR types, 
3914
3915 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * icall.c (ves_icall_get_property_info): Set the reflected type of the
3918         accessors correctly.
3919
3920 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
3921
3922         * threads.c: support OSX and other systems in
3923         mono_thread_get_stack_bounds (bug #328026).
3924
3925 2007-09-25  Martin Baulig  <martin@ximian.com>
3926
3927         * mono-debug.h
3928         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
3929
3930 2007-09-24  Martin Baulig  <martin@ximian.com>
3931
3932         * mono-debug.h
3933         (MonoDebugClassEntry): Moved the definition of this struct into
3934         mono-debug.c to make it private.
3935
3936         * mono-debug.c
3937         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
3938         type table per symbol file, we don't need to store the symfile id
3939         any longer.
3940
3941 2007-09-24  Martin Baulig  <martin@ximian.com>
3942
3943         Create one type table per symbol file, since a `MonoClass *' gets
3944         invalid when its image is unloaded.
3945
3946         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
3947         (MonoDebugHandle): Added `type_table'.
3948
3949 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
3950
3951         * mempool.c, mempool.h: added mono_mempool_new_size () API
3952         to be able to specify a smaller initial size for the pool.
3953         Adjusted the code to slowly increase pool size before using
3954         the previous default size.
3955         * image.c: use a small initial size for image mempools.
3956
3957 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
3960         Fixes ##320990.
3961
3962         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
3963         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
3964
3965 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
3966
3967         * metadata.c (mono_type_create_from_typespec): Remove an invalid
3968         free. Fixes #327438.
3969
3970 2007-09-21  Raja R Harinath  <harinath@gmail.com>
3971
3972         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
3973         generic instantiations, etc.
3974         <MONO_TYPE_ARRAY>: Likewise.
3975
3976 2007-09-21  Martin Baulig  <martin@ximian.com>
3977
3978         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
3979         these structs were never defined.
3980         (MonoDebugHandle): Removed the `_priv' field, it was never used.
3981
3982 2007-09-21  Martin Baulig  <martin@ximian.com>
3983
3984         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
3985
3986 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
3987
3988         * image.c: removed the guid hash tables: we can get the same info
3989         without the additional memory usage hit (partially fixes also bug #327052).
3990
3991 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3992
3993         * profiler.h, profiler-private.h, profiler.c: add a new profiler
3994         event to handle unloading methods. After the event is called, the
3995         corresponding MonoMethod* must be considered invalid.
3996         * loader.c (mono_free_method): call the new mono_profiler_method_free
3997         event.
3998
3999 2007-09-20  Mark Probst  <mark.probst@gmail.com>
4000
4001         * domain-internals.h: New flag in MonoJitInfo which marks shared
4002         generic methods.  New hash table (shared_generics_hash) in
4003         MonoDomain to keep track of shared generic methods.  Prototypes
4004         for functions to register and lookup shared generic methods.
4005
4006         * domain.c: Support for registering and looking up shared generic
4007         methods via a hash table (shared_generics_hash) in MonoDomain.
4008
4009         * class-internals.h: New exception to signal failure of shared
4010         compilation of a generic method.  New counters for generics
4011         sharing in MonoStats.
4012
4013 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
4014
4015         * image.c, metadata-internals.h: don't keep a file descriptor open
4016         for loaded assemblies (bug#325988).
4017
4018 2007-09-19  Raja R Harinath  <rharinath@novell.com>
4019
4020         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
4021         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
4022         use the corresponding datatypes.
4023         (type_in_image): Update to changes.
4024         (CleanForImageUserData): Simplify.
4025         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
4026         Avoid quadratic behaviour in handling the "stolen" list by
4027         separating the filter predicate out, and by prepending the stolen
4028         items rather than appending them.
4029         (steal_ginst_in_image): Likewise.
4030         (mono_metadata_clean_for_image): Update to changes.
4031
4032 2007-09-19  Martin Baulig  <martin@ximian.com>
4033
4034         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
4035
4036 2007-09-19  Martin Baulig  <martin@ximian.com>
4037
4038         * mono-debug.c (mono_debug_cleanup): Don't call
4039         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
4040
4041 2007-09-19  Raja R Harinath  <harinath@gmail.com>
4042
4043         Fix crash on 'make run-test' in mcs/errors
4044         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
4045         Avoid more potential allocations in mono_class_from_mono_type.
4046         (ginst_in_image): Update to changes.
4047         (gclass_in_image): Rearrange slightly.
4048
4049 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * class.c (mono_class_init): Move the code that sets up class->methods to 
4052         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
4053
4054         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
4055         canonical instance of an inflated generic signature.
4056         (mono_type_create_from_typespec): Remove an invalid free.
4057
4058         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
4059
4060 2007-09-18  Marek Habersack  <mhabersack@novell.com>
4061
4062         * domain-internals.h: added a declaration of the
4063         mono_assembly_load_full_nosearch internal function.
4064
4065         * assembly.c (mono_assembly_load_with_partial_name): use
4066         mono_try_assembly_resolve return value properly.
4067         (mono_assembly_load_full_nosearch): copied the function body from
4068         mono_assembly_load_full, without the code to invoke assembly
4069         search hooks.
4070         (mono_assembly_load_full): calls the above new function and if the
4071         assembly is not resolved, invokes the search hooks.
4072
4073         * appdomain.c (mono_runtime_init): restore the global postload
4074         assembly search handlers.
4075
4076 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * class.c (mono_class_init): Make sure class->methods and class->properties
4079         are never NULL in the generics case.
4080
4081         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
4082
4083 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * metadata.c (free_generic_class): Disable some code to fix the build.
4086
4087         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
4088
4089         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
4090         from the image mempool.
4091
4092         * metadata.c (free_generic_class): Free more data from the inflated class.
4093
4094         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
4095
4096         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
4097         mempool.
4098         (mono_type_create_from_typespec): Ditto.
4099
4100         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
4101         MonoImage to the caller.
4102         (mono_init_internal): Save the opened image in a global variable.
4103         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
4104
4105         * reflection.c (resolve_object): Fix a leak.
4106
4107         * metadata.c: Fix the freeing of data in the generics caches.
4108         
4109         * metadata.c (free_generic_inst): Comment this out to fix the build.
4110         (free_generic_class): Ditto.
4111
4112         * metadata.c: Free cached generic methods, instantinations and classes when
4113         they are removed from the caches.
4114         (mono_metadata_free_type): Free the type itself.
4115
4116         * class.c: Free the result of mono_class_inflate_generic_type () in a few
4117         places.
4118
4119 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4120
4121         * boehm-gc.c: restrict managed allocs to __thread supporting
4122         architectures.
4123
4124 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
4125
4126         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
4127         (mono_generic_class_get_class): Fix a leak.
4128
4129         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
4130         mono_metadata_free_type ().
4131         (mono_metadata_inflate_generic_inst): Fix a leak.
4132
4133 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4134
4135         * mono-debug.c (free_header_data): Fix a leak missed earlier.
4136
4137         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
4138         mempool.
4139
4140         * mono-debug.c (mono_debug_close_image): Fix call to 
4141         g_hash_table_remove ().
4142
4143 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4144
4145         * icall-def.h: redirect all the string ctor to the managed
4146         CreateString () methods.
4147         * string-icalls.c, string-icalls.h: removed dead code for string
4148         ctors and icalls.
4149
4150 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * mono-debug.c: Fix memory leaks.
4153
4154 2007-09-14  Jonathan Chambers <joncham@gmail.com>
4155
4156         * threads-types.h: Implement mono_hazard_pointer_set and 
4157         mono_hazard_pointer_clear macros using do/while(0) to fix
4158         compilation with MSVC.
4159         
4160         Code is contributed under MIT/X11 license.
4161
4162 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
4165         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
4166
4167 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4168
4169         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
4170         icalls.
4171
4172 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4173
4174         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
4175         managed-code allocated as well.
4176
4177 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * class.c (mono_class_is_assignable_from): Add support for generic variance.
4180
4181 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4182
4183         * boehm-gc.c: fixed the build after the AOT changes.
4184
4185 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * wrapper-types.h: Add an ALLOC wrapper type.
4188
4189         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
4190         reference managed allocator methods.
4191
4192 2007-09-12  Marek Safar  <marek.safar@gmail.com>
4193
4194         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
4195         of Type array and not MonoType, a fix suggested by Hari.
4196         
4197 2007-09-12  Jonathan Chambers <joncham@gmail.com>
4198
4199         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
4200         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
4201         
4202         Code is contributed under MIT/X11 license.
4203
4204 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4205
4206         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
4207
4208 2007-09-12  Marek Habersack  <mhabersack@novell.com>
4209
4210         * image.c (do_mono_image_open): if assembly file fails to open and
4211         MONO_IOMAP is in effect, try to find the path in a
4212         case-insensitive way.
4213
4214         * appdomain.c (mono_runtime_init): do not install postload hooks -
4215         tests show that MS.NET doesn't use anything of that sort to
4216         trigger the AppDomain.AssemblyResolve event.
4217         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
4218         made non-static.
4219         (mono_runtime_init): init portability helpers here.
4220
4221         * assembly.c (mono_assembly_load_with_partial_name): if other   
4222         attempts fail, trigger the AppDomain.AssemblyResolve event handler
4223         to resolve the assembly.
4224
4225         * domain-internals.h: added mono_try_assembly_resolve and marked
4226         it as internal.
4227
4228 2007-09-11  Jb Evain  <jbevain@novell.com>
4229
4230         * object-internals.h (MonoReflectionDynamicMethod): add
4231         a `MonoReflectionType *owner` field. The owner is used
4232         * reflection.c:
4233         (mono_reflection_create_dynamic_method): use the owner of the dynamic
4234         method as the class declaring the dynamic method.
4235         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
4236         dynamic method to the declaring type of the methodbuilder.
4237
4238 2007-09-11  Mark Probst  <mark.probst@gmail.com>
4239
4240         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
4241         rules for calling methods via reflection.
4242
4243 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * reflection.c (resolve_object): Add support for MonoGenericClass. 
4246         Inflate MonoType's.
4247
4248 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
4249
4250         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
4251         provide a managed method that does fast allocations without needing
4252         a managed->unmanaged transition. Boehm GC implementation currently
4253         enabled for ptrfree objects on sane architectures.
4254
4255 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4256
4257         * marshal.c, marshal.h: exported a couple of useful functions and
4258         added mono_mb_get_label () to easily handle backward branches.
4259
4260 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
4261
4262         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
4263
4264 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4265
4266         * loader.c (find_method): Fixed the regression introduced while
4267         fixing bug #81466.
4268
4269 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
4272         well.
4273         
4274         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
4275         icall.c reflection.c: Pass a MonoGenericContext argument to 
4276         mono_lookup_dynamic_token ().
4277
4278         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
4279         #82744.
4280         
4281 2007-09-09  Robert Jordan  <robertj@gmx.net>
4282
4283         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
4284         for generic methods.
4285
4286         * object.c (mono_object_get_virtual_method): Handle generic methods.
4287         Fixes bug #78882.
4288
4289         Code is contributed under MIT/X11 license.
4290
4291 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4292
4293         * image.c: fix locking in mono_image_load_file_for_image ().
4294
4295 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
4296
4297         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
4298         used only as a cache: added an icall to fill it.
4299
4300 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
4301
4302         * reflection.h: exposed mono_reflection_free_type_info
4303         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
4304         since mono_reflection_bind_generic_parameters makes a copy of it.
4305         * reflection.c (free_type_info): subinfos should be freed.
4306         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
4307         made non static.
4308         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
4309         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
4310         this fixes #82695 and #81726.
4311    
4312
4313 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
4314
4315         * process.h, process.c:  added support for user profile/info in
4316           ProcessStartInfo. For now only Windows works.
4317
4318 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4319
4320         * metadata.c: consider the generic arguments when comparing
4321         signatures (bug #82614).
4322
4323 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4324
4325         * cil-coff.h, image.c: updated assembly loader to cope with the
4326         PE32+ 64 bit file format.
4327
4328 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4329
4330         * assembly.c, class.c, domain.c, loader.c: remove useless
4331         inclusion of cil-coff.h.
4332
4333 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
4334
4335         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
4336         if interface is marked with CoClassAttribute. 
4337    
4338         Code is contributed under MIT/X11 license.
4339
4340 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4341
4342         * sgen-gc.c: ensure no object from the to space is copied again or finalized
4343         if it's seen twice in major collections.
4344
4345 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4346
4347         * sgen-gc.c: big objects are not copied to the gray area, but they
4348         need to be considered for scanning, too, if they are brought alive
4349         by an object ready for finalizations or a survived one.
4350
4351 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4352
4353         * sgen-gc.c: properly account the number of disappearing links when
4354         they are nullified.
4355
4356 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4357
4358         * sgen-gc.c: share the code to scan the registered roots between the
4359         different types of collections.
4360
4361 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4362
4363         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
4364
4365 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4366
4367         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
4368         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
4369
4370 2007-08-28  Mark Probst  <mark.probst@gmail.com>
4371
4372         * security-manager.c (mono_security_manager_get_methods):
4373         LinkDemandSecurityException now has 2 arguments instead of 3.
4374
4375 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
4376
4377         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
4378         platforms which need it.
4379
4380 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4381
4382         * sgen-gc.c: unregister thread data structures with a pthread_key_t
4383         dtor.
4384
4385 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4386
4387         * threads.c: free the thread static data on thread exit.
4388
4389 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
4390
4391         * class.c: walk the hierarchy to find the generic definition for
4392         a class (fixes runtime part of bug #82498).
4393
4394 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4395
4396         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
4397         ...
4398
4399         * image.c (mono_image_close): Here. Hopefully fixes #82510.
4400
4401 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4402
4403         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
4404
4405 2007-08-24  Robert Jordan  <robertj@gmx.net>
4406
4407         * appdomain.c: don't perform the ':'->';' substitution on Win32.
4408
4409 2007-08-24  Jb Evain  <jbevain@novell.com>
4410
4411         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
4412         for byref types.
4413
4414 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4415
4416         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
4417         #82286.
4418
4419 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4420
4421         * assembly.c: Fix a warning.
4422         
4423 2007-08-23  Marek Habersack  <mhabersack@novell.com>
4424
4425         * appdomain.c: parse the <runtime> section looking for the probing
4426         element with the 'privatePath' attribute, which sets additional
4427         directories in which the runtime should look for assemblies.
4428
4429 2007-08-23  Robert Jordan  <robertj@gmx.net>
4430
4431         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
4432         Fixes #82499.
4433
4434 2007-08-23  Martin Baulig  <martin@ximian.com>
4435
4436         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
4437         _mono_debug_init_corlib() and remove it from the header file.
4438
4439 2007-08-23  Martin Baulig  <martin@ximian.com>
4440
4441         * mono-debug-debugger.c
4442         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
4443         don't notify the debugger about it.
4444
4445         * mono-debug-debugger.h
4446         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
4447
4448 2007-08-23  Robert Jordan  <robertj@gmx.net>
4449
4450         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
4451         Code is contributed under MIT/X11 license.
4452
4453 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4454
4455         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
4456
4457 2007-08-22  Martin Baulig  <martin@ximian.com>
4458
4459         * mono-debug.c: Store debugging info on a per-domain basis and
4460         free it on domain unload.  Add support for unloading symbol files.
4461
4462         * mono-debug.h
4463         (MonoDebugList): New typedef.
4464         (MonoSymbolTable):
4465         - add `data_tables and `type_table'.
4466         - replace 'symbol_files' and `num_symbol_files' with a
4467           `MonoDebugList *'.
4468         (mono_debug_data_table): Removed.
4469         (mono_debug_list_add): New public function.
4470         (mono_debug_list_remove): New public function.
4471         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
4472         (mono_debug_init_2_memory): Renamed into
4473         mono_debug_open_image_from_memory().
4474         (mono_debug_close_image): New public function.
4475         (mono_debug_domain_create): Likewise.
4476         (mono_debug_domain_unload): Likewise.
4477         (MONO_DEBUGGER_VERSION): Bump to 60.
4478
4479         * mono-debug-debugger.h
4480         (MonoDebuggerEvent):
4481         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
4482         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
4483         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
4484         - rename `THREAD_CREATED' and `THREAD_EXITED' into
4485           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
4486         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
4487           meaning.
4488         (mono_debugger_add_symbol_file): Removed.
4489         (mono_debugger_add_type): Removed.
4490         (mono_debugger_lookup_type): Removed.
4491         (mono_debugger_lookup_assembly): Removed.
4492
4493         * domain.c
4494         (mono_domain_create): Call mono_debug_domain_create().
4495         (mono_init_internal): Call mono_debug_init_corlib().
4496
4497         * assembly.c
4498         (mono_assembly_close): Call mono_debug_close_image().
4499
4500 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
4501
4502         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
4503         mmap call.
4504
4505 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4506
4507         * sgen-gc.c: ensure section->pin_queue_end is initialized
4508         correctly when non pinning objects in the section have been found.
4509
4510 2007-08-22  Marek Habersack  <mhabersack@novell.com>
4511
4512         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
4513         containing a list of directories separated by ':'. MSDN docs say
4514         the directories should be separated with ';'. Part of a bugfix for
4515         bug #81446
4516
4517 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
4518
4519         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
4520         it should MonoType and not MonoClass.
4521
4522 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
4523
4524         * culture-info-table.h : regenerated.
4525
4526 2007-08-20  William Holmes  <billholmes54@gmail.com>
4527
4528         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
4529          to call ReplaceFile Kernel32 on windows or in io-layer.
4530         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
4531         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
4532          as an internal call.
4533
4534         Code is contributed under MIT/X11 license.
4535
4536 2007-08-20  Jb Evain  <jbevain@novell.com>
4537
4538         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
4539         and MONO_EXCEPTION_FIELD_ACCESS.
4540
4541         * debug-helpers.[c|h]: new mono_field_full_name function.
4542
4543 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4544
4545         * class.c: Removed class_security_level() and moved it to
4546         security-core-clr.c.
4547
4548         * security-core-clr.c, security-core-clr.h: class_security_level()
4549         is now public and renamed to mono_security_core_clr_class_level().
4550         It also looks for security attributes in the classes a class is
4551         nested in.
4552
4553 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4554
4555         * security-core-clr.c, security-core-clr.h: CoreCLR security
4556         utility functions.
4557
4558         * Makefile.am: Added security-core-clr.[ch].
4559
4560         * security-manager.c, security-manager.h: Functions and enum for
4561         setting and getting the security mode.
4562
4563         * class.c: CoreCLR security checks.
4564
4565 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4566
4567         * icall-def.h, process.c, process.h: implemented icall to get
4568         user/system processor times.
4569
4570 2007-08-17  Mark Probst  <mark.probst@gmail.com>
4571
4572         * domain.c, threads.c, class-internals.h, domain-internals.h: New
4573         reader-lock-free jit_info_table.
4574
4575 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
4578
4579         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
4580
4581         * object-internals.h (MonoException): Add missing _data member.
4582
4583 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4584
4585         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
4586         checking that only methods with matching qname or fqname are picked
4587         from implemented interfaces.
4588
4589 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4590
4591         * verify.c (do_newarr):added, do type verification of
4592         newarr ops, push the right value on the eval stack.
4593         * verify.c (mono_method_verify): use do_newarr
4594
4595
4596 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
4599         factored the common code into get_boxable_mono_type, which
4600         is now using mono_type_get_full, this fixed byref related tests.
4601
4602 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * class.c: added mono_type_get_full, this function has the same
4605         behavior of mono_class_get_full but the returned MonoType has
4606         all metadata of the associated token in case of a typespec token.
4607         * class.c: added mono_type_retrieve_from_typespec, used by 
4608         mono_type_get_full to retrieve the token type.
4609         * class.c (mono_class_create_from_typespec): changed to use
4610         mono_type_retrieve_from_typespec.
4611         * class.c (mono_ldtoken): changed to use mono_type_get_full
4612         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
4613         * class-internals.h: exported mono_type_get_full for internal use.
4614
4615 2007-08-16  Jb Evain  <jbevain@novell.com>
4616
4617         * domain.c (supported_runtimes): add entry for
4618         the 'moonlight' runtime version.
4619
4620 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4621
4622         * verify.c (mono_method_verify): small typo sliped in.  
4623
4624 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4625
4626         * verify.c (do_unbox_value): added, do type verification of
4627         unboxing ops
4628         * verify.c (mono_method_verify): use do_unbox_value
4629
4630
4631 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4632
4633         * verify.c (dump_stack_value): fixed typo, was printing string
4634         instead of object on stack.
4635         * verify.c (do_box_value): moved the byref check up as it leads
4636         to invalid code and should be done earlier.
4637         * verify.c: improved error messages for and ldobj
4638
4639 2007-08-15  William Holmes  <billholmes54@gmail.com>
4640
4641         * marshal.c (emit_marshal_custom): Omit the call to 
4642           marshal_native_to_managed when calling native to managed 
4643           and the argument is specified as an out argument.
4644
4645         Code is contributed under MIT/X11 license.
4646
4647 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4648
4649         * verify.c: fixed the type checks for generics, function pointers and vectors.
4650         Added type verification for ldobj and ldtoken. The verifier
4651         would segfault if header or signature of a method contained references
4652         to non-existant types.
4653
4654 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4655
4656         * marshal.c (cominterop_get_ccw): Patch from
4657         Bill Holmes to no walk up interface hierarchy. 
4658         All parent methods should be present in the interface for COM.
4659    
4660         Code is contributed under MIT/X11 license.
4661
4662 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4663
4664         * marshal.c (emit_marshal_com_interface): Patch from
4665         Bill Holmes to handle COM Interfaces as return values
4666         for native->managed calls.
4667    
4668         Code is contributed under MIT/X11 license.
4669
4670 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
4671
4672         * marshal.c (cominterop_get_idispatch_for_object): Implement
4673         for runtime callable wrappers.
4674    
4675         Code is contributed under MIT/X11 license.
4676
4677 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
4678
4679         * pedump.c (main): changed from mono_init to mono_init_from_assembly
4680         so 2.0 types are accessible
4681
4682
4683 2007-08-13  Miguel de Icaza  <miguel@novell.com>
4684
4685         * domain.c (mono_init_internal): Call mono_assembly_load_friends
4686         once we load mscorlib.   Due to the order in which we initialize,
4687         the mono_assembly_load_full routine that loads mscorlib did not
4688         load friends.   We now load it once we load the
4689         mono_defaults.internals_visible_class class. 
4690
4691         * assembly.c: Expose the mono_load_friend_assemblies method.
4692
4693 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
4694
4695         * verify.c: improved the handling of boxing, better
4696         type checking for unary ops and conversion. Fix bug
4697         regarding managed pointer compatibility checking
4698
4699 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
4700
4701         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
4702
4703         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
4704
4705 2007-08-09  Raja R Harinath  <rharinath@novell.com>
4706
4707         * reflection.c (dup_type): Remove.
4708         * class.c (dup_type): Remove.
4709         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
4710         instead of the dodgy 'dup_type'.
4711         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
4712         handle the case where 'dup_type' needed the second argument.
4713
4714 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * domain.c: Fix a warning.
4717
4718 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4719
4720         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
4721         checking that methods with the same fqname are not overridden
4722         with a method from an ancestor.
4723
4724 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * threads.c (free_thread_static_data_helper): Avoid a crash if
4727         thread->static_data is not yet set.
4728
4729 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
4730
4731         * marshal.c: Use correct image when emitting
4732         native wrapper for COM calls.
4733    
4734         Code is contributed under MIT/X11 license.
4735
4736 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
4737
4738         * icall-def.h, security.c, security.h :
4739           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
4740
4741 2007-08-07  Martin Baulig  <martin@ximian.com>
4742
4743         * mono-debug-debugger.h
4744         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
4745
4746         * domain.c (mono_domain_free): Call
4747         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
4748
4749 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4750
4751         * verify.c (check_underflow, check_overflow): error message now returns IL offset
4752         * verify.c (in_same_block): code should test if either offset is inside the clauses
4753         * verify.c (mono_method_verify): push the exception into the eval stack of exception
4754         and filter blocks
4755
4756 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * image.c (mono_image_close): Fix a leak.
4759
4760         * object.c (mono_runtime_invoke_array): Avoid using alloca.
4761
4762         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
4763
4764 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
4765
4766         * domain.c, threads.c, threads-types.h: fix memory retention issue
4767         with thread static variables not being cleared on domain unload.
4768         Reuse thread static slots after domain unload.
4769
4770 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
4773         nullable type.
4774
4775         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
4776         now done in mono_runtime_invoke_array.
4777
4778         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
4779         receiver is a nullable type.
4780
4781         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
4782         generic parameter.
4783
4784 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
4785
4786         * marshal.c: Implement COM Objects as return type for 
4787         managed->unmanaged calls. Added Release calls for COM Object
4788         out/return values in managed->unmanaged calls.
4789
4790         Code is contributed under MIT/X11 license.
4791
4792 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
4793
4794         * threads.h, threads-type.h: move the hazard pointer declarations
4795         to the private header.
4796
4797 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
4798
4799         * file-io.c, appdomain.c: memory leak fixes.
4800
4801 2007-08-02  Dick Porter  <dick@ximian.com>
4802
4803         * socket-io.c
4804         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
4805         SO_REUSEADDR setting into io-layer/sockets.c.
4806
4807 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
4810         from Object when called on a generic parameter. Fixes #82211.
4811
4812 2007-08-01  Dick Porter  <dick@ximian.com>
4813
4814         * file-io.c (convert_share): Test FileShare values bit-by-bit.
4815         Fixes bug 79250 yet again.
4816
4817 2007-07-30  Martin Baulig  <martin@ximian.com>
4818
4819         Merged the `debugger-dublin' branch.
4820
4821         * mono-debug.h
4822         (MonoDebugDataTable): New typedef.
4823         (MonoDebugMethodAddressList): New typedef.
4824         (MonoDebugWrapperData): Removed.
4825         (MonoDebugSymbolTable): Removed `current_data_table',
4826         `current_data_table_size', `current_data_table_offset'.
4827         (MonoDebugDataItemType): Moved into mono-debug.c.
4828         (MonoDebugMethodJitInfo): Remove `address'.
4829         (mono_debug_data_table): New global variable.
4830         (mono_debug_lookup_method_addresses): New public function.
4831         (mono_debug_find_method): Take a `MonoMethod *', not a
4832         `MonoDebugMethodInfo *'.
4833
4834         * mono-debug.c: Drop support for the old symbol tables.
4835
4836 2007-06-28  Martin Baulig  <martin@ximian.com>
4837
4838         * mono-debug.c (mono_debug_debugger_version): New public variable.
4839
4840 2007-07-31  William Holmes  <billholmes54@gmail.com>
4841
4842         * metadata.c Changed mono_type_create_from_typespec to not insert
4843           the type into the hash map until after
4844           do_mono_metadata_parse_type has completed.
4845         Fixes Bug #82194
4846         Code is contributed under MIT/X11 license.
4847
4848 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
4851         generic parameter. Fixes #82211.
4852
4853 2007-07-27  Jb Evain  <jbevain@novell.com>
4854
4855         * pedump.c (dump_metadata, dump_metadata_header): dump
4856         versions contained in the metadata header.
4857
4858 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4859
4860         * threads.c: register small_id_table with the GC.
4861
4862 2007-07-27  Mark Probst  <mark.probst@gmail.com>
4863
4864         * threads.c, threads.h, class-internals.h, object-internals.h:
4865         Hazard pointers, to be used by lock-free parallel algorithms.
4866
4867 2007-07-26  Dick Porter  <dick@ximian.com>
4868
4869         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
4870         routine on non-windows platforms, as I've not managed to think of
4871         a non-kludgy way of doing this.  Finishes off bug 78739.
4872
4873 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
4874
4875         * object.c: properly setup interface_bitmap in proxy vtables.
4876
4877 2007-07-25  Marek Habersack  <mhabersack@novell.com>
4878
4879         * appdomain.c (get_shadow_assembly_location): do not use TickCount
4880         to create unique shadow copy target directories, use the domain's
4881         serial number instead. Each domain gets a unique target directory
4882         that way.
4883
4884         * domain.c (mono_domain_create): added code to increment domain
4885         shadow copy serial number and cache the value in the current
4886         domain structure.
4887
4888         * domain-internals.h (struct _MonoDomain): added a new field -
4889         shadow_serial to hold the serial number used in generation of
4890         shadow-copy directories. This is to make sure that the directory
4891         name is unique for each and every domain created. We avoid a race
4892         condition with overriding assemblies already in use by other app
4893         domains.
4894
4895 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
4896
4897         * class.c (mono_bounded_array_class_get): fixed memory leak when 
4898         binding generic parameters.
4899
4900 2007-07-24  Raja R Harinath  <rharinath@novell.com>
4901
4902         * metadata.c (do_mono_metadata_parse_generic_class): Use
4903         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
4904         error.
4905
4906 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
4907
4908         * loader.c, class-internals.h, reflection.c: removed the per-method
4909         generics hashtable: we use the global one through the call of
4910         mono_class_inflate_generic_method ().
4911
4912 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4913
4914         * class.c, metadata.c, class-internals.h: introduce yet another
4915         generics global cache for inflated methods (fixes 98% of the perf
4916         issue in bug #81806).
4917
4918 2007-07-23  Raja R Harinath  <rharinath@novell.com>
4919
4920         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
4921         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
4922         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
4923         return a MonoGenericInst containing (a copy) of those types.
4924         (mono_metadata_inflate_generic_inst): Update to changes.
4925         (mono_metadata_parse_generic_inst): Likewise.
4926         (mono_get_shared_generic_inst): Likewise.
4927         * reflection.c (mono_class_bind_generic_parameters): Likewise.
4928         (mono_reflection_bind_generic_method_parameters): Likewise.
4929         * metadata-internals.h: Likewise.
4930         * icall.c (free_generic_context): Kill.
4931         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
4932
4933         * reflection.c (reflection_methodbuilder_to_mono_method): Use
4934         mono_metadata_type_dup.
4935         * marshal.c (mono_mb_create_method): Likewise.
4936
4937         * metadata.c (mono_metadata_type_dup): Rename from
4938         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
4939         MonoImage.  Handle a few more cases, esp. when no mempool is given.
4940         * marshal.c, metadata-internals.h: Update to changes.
4941
4942 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4943
4944         * class.c: fixed a small leak for array classes and removed warning.
4945
4946 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
4947
4948         * loader.c (mono_method_get_param_token): Make this work on generic methods.
4949         Return 0x8000000 for return parameters. Fixes #82161.
4950
4951 2007-07-21  Marek Habersack  <grendello@gmail.com>
4952
4953         * appdomain.c (get_shadow_assembly_location): append the current
4954         ticks value to the path. Avoids overwriting the same assemblies by
4955         several threads at the same time.
4956
4957 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
4958         and Raja R Harinath  <rharinath@novell.com>
4959
4960         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
4961         Simplify slightly.
4962         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
4963         property for testing if a method is a generic method definition.
4964
4965 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
4966
4967         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
4968
4969 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4970
4971         * verify.c: used function from private branch, reverted to the one in class.h 
4972
4973 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4974
4975         * verify.c: a typo slipped in and the code wont compile
4976
4977 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4978
4979         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
4980         disabled box instruction as it is doing the wrong thing
4981         improved stack dump messages, now it is easier to debug type related issues
4982
4983
4984 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
4985
4986         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
4987
4988 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4989
4990         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
4991         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
4992         grouped with class and valuetype. This change will simply 
4993         the code as it should be handled just like unmanaged pointers.
4994
4995 2007-07-19  Mark Probst  <mark.probst@gmail.com>
4996
4997         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
4998
4999 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5000
5001         * verify.c: several stack merge issues fixed, reference comparisons now
5002         check the type size. strict type check now works correctly.
5003         added more uses of IS_MANAGED_POINTER macro.
5004         fixed issues pointed by running the test suite against .net.
5005         
5006
5007 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5008
5009         * class.c, loader.c, class-internals.h: Removed the
5010         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
5011         defines.
5012
5013         * icall.c: Better error checking in some internal reflection
5014         methods.
5015
5016 2007-07-18  William Holmes  <billholmes54@gmail.com>
5017
5018         * filewatcher.c : removed unused variable 'filename' in 
5019           ves_icall_System_IO_FSW_SupportsFSW
5020
5021 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
5022
5023         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
5024         obsolete, removed.
5025
5026 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
5027
5028         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
5029         
5030         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
5031
5032 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
5035         Implement generics support.
5036         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5037
5038         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
5039         type_args and method_args arguments.
5040         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
5041         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5042         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
5043
5044 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
5047           It adds a rootimage parameter to mono_reflection_get_type_internal,
5048           adds new function mono_reflection_get_type_with_rootimage and use
5049           the rootimage to resolve the types instead of the current image
5050
5051 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5052
5053         * culture-info-table.h: Forgot to update after r78304.
5054
5055 2007-07-13  Raja R Harinath  <rharinath@novell.com>
5056
5057         * class.c (mono_class_is_open_constructed_type)
5058         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
5059
5060 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
5061
5062         * class.c (mono_bounded_array_class_get):  method fails if used with
5063         an incomplete TypeBuilder enum (no basetype field), fixed it by 
5064         avoiding calculating the size for such array as it cannot be instantiated.
5065         Fix bug #82015
5066
5067 2007-07-12  Raja R Harinath  <rharinath@novell.com>
5068
5069         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
5070         field.
5071         * metadata.c, reflection.c: Update to changes.
5072
5073 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
5074
5075         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
5076         mono_class_is_valid_enum, they are used to valide a enum when loading.
5077         * reflection.c: used new functions to throw TypeLoadException when and
5078         invalid enum is build with TypeBuilder. Fixes #82018
5079   
5080 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5081
5082         * object.c: forgot commit of mono_class_setup_methods () to access
5083         iface->methods.
5084         * object-internals.h: added a few more handy fields to
5085         MonoIMTCheckItem.
5086
5087 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
5090         iface->methods.
5091
5092 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5093
5094         * class-internals.h, object-internals.h, object.c: IMT-based
5095         interface invocation core from Massimiliano Mantione
5096         (massi@ximian.com) with a reworked arch-specific interface,
5097         bsearch implementation and a few bugfixes and memory savings by me.
5098
5099 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
5100
5101         * class.c (mono_class_create_from_typedef): mono would segfault if 
5102         an enum did not have a __value field. It now throws a TypeLoadException
5103         for such cases. Fix bug #82022
5104
5105 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
5108
5109 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5110
5111         * class.c (mono_class_init): If a class is already inited but has
5112         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
5113
5114 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5115
5116         * class.c: Properly handle the case of an unimplemented interface
5117         method.  Fixes: 81673.
5118
5119 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5120
5121         * class-internals.h, object.c: cleanup patch from massi: use
5122         MonoVTable->interface_bitmap since the vtable interfaces offset array
5123         is going away.
5124
5125 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
5128         GetMDStreamVersion icall instead.
5129
5130 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
5131
5132         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
5133         not use mono_dl_build_path() with a full library name: makes
5134         fallbacks to libgaim and libfam work.
5135
5136 2007-07-06  William Holmes  <billholmes54@gmail.com>
5137
5138         * assembly.c: Added a continue statement in probe_for_partial_name when
5139          parse_assembly_directory_name fails.  Fixes : 82002
5140
5141 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
5142
5143         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
5144         and added a verification  for TYPEDBYREF.
5145         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
5146         make native int interchangeable with int32 and some small cleanup and formating.
5147         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
5148         handle byref of byref.
5149         * verify.c (push_local): handle byref of byref.
5150         * verify.c (do_binop): invalid mix of values is unverifiable
5151         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
5152         added visibility checks
5153         * verify.c (field related method): added visibility checks
5154         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
5155
5156 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
5157
5158         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
5159         string.
5160
5161 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * profiler.c (mono_profiler_load): Fix an off-by-one error.
5164
5165         * marshal.c (emit_marshal_string): When returning a string from managed code,
5166         allways make a copy even for unicode strings. Fixes #81990.
5167
5168 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
5169
5170         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
5171         of byref generic inst types (bug #81997).
5172
5173 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
5174
5175         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
5176         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
5177
5178 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
5179
5180         * marshal.c (emit_marshal_string): Add support for unicode strings in
5181         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
5182
5183 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5184
5185         * verify.c: field load/store are now verified, missing only access checks now
5186
5187 2007-06-28  Martin Baulig  <martin@ximian.com>
5188
5189         * mono-debug.c (mono_debug_debugger_version): New public variable.
5190
5191 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
5192
5193         * locales.c: When constructing DateTimeFormat or NumberFormat for
5194         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
5195         MonoCultureInfo contructed from the current locale is always
5196         read-only and has UseUserOverride set to true. All MonoCultureInfo
5197         instances returned for GetCultures have both IsReadOnly and
5198         UseUserOverride set to true. Fixes part of bug #81930.
5199
5200 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
5201
5202        * icall-def.h: Update System.__ComObject icalls
5203        * marshal.c: Avoid managed transition (and object creation)
5204        when looking up COM interface in RCW.
5205        * marshal.h: Ditto.
5206        
5207        Code is contributed under MIT/X11 license.
5208
5209 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
5210
5211         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
5212         to avoid crashes during assembly unloading.
5213
5214 2007-06-22  Raja R Harinath  <rharinath@novell.com>
5215
5216         Fix MethodInfo.IsGenericMethodDefinition
5217         * reflection.c (mono_reflection_bind_generic_method_parameters):
5218         Rearrange code to ensure we always uses a generic method definition.
5219         * class.c (mono_class_inflate_generic_method_full): Set
5220         'generic_container' field only for generic method definitions.
5221         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5222         Use presense of 'generic_container' field as indication of being a
5223         generic method definition.
5224
5225 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5228
5229         * object-internals.h: Reflect changes in the layout of the managed Delegate
5230         class.
5231         
5232         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
5233         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
5234         runtime memory used by the dynamic method. Fixes #77146.
5235
5236 2007-06-21  Dick Porter  <dick@ximian.com>
5237
5238         * file-io.h: 
5239         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
5240         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
5241         81767.
5242
5243 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5244
5245         * reflection.c (method_encode_methodspec): Add a tripwire.
5246         * class.c (inflate_generic_type): The fully open generic type is
5247         not the same as the generic type definition.
5248
5249 2007-06-21  Martin Baulig  <martin@ximian.com>
5250
5251         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
5252
5253         * mono-debug-debugger.h
5254         (MonoDebuggerBreakpointInfo): Removed.
5255         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
5256         (mono_debugger_remove_breakpoint): Likewise.
5257         (mono_debugger_breakpoint_callback): Likewise.
5258         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
5259
5260 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5261
5262         * metadata.c (mono_metadata_lookup_generic_class): The fully open
5263         generic type is not the same as the generic type definition.
5264         * class.c (mono_generic_class_get_class): Likewise.
5265
5266 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
5267
5268         * icall.c: The second argument to 
5269         System.Reflection.MethodBase.GetMethodFromHandleInternalType
5270         is a MonoType not a MonoClass.
5271
5272 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5273
5274         * verify.c: support for function pointers in the verifier
5275
5276 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5277
5278         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
5279
5280 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
5281
5282         * assembly.c: removed Mono.Data.SqliteClient from the list of
5283         forward-compatible assemblies as it breaks the ABI (bug #81899).
5284
5285 2007-06-19  Raja R Harinath  <rharinath@novell.com>
5286
5287         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
5288         lookup/update with the loader lock.
5289         * reflection.c (mono_class_bind_generic_parameters): No need to
5290         protect mono_metadata_lookup_* with the loader lock.
5291         * class.c (inflate_generic_type): Likewise.
5292         
5293         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
5294         on a generic instantiated type.
5295
5296 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
5297
5298         *verify.c: produce meanfull error messages on verification error
5299         *verify.c: fixed some cases of verification errors reported as validation errors
5300         *pedump.c: fixed the error name array, now it shows validation errors properly
5301         *verify.h: fixed the contant that should be used for verification errors
5302
5303 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
5304
5305         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
5306         for bug #77596, 81858 and 80743 (generics data structures on domain
5307         unload).
5308
5309 2007-06-15  Raja R Harinath  <rharinath@novell.com>
5310
5311         Avoid allocating 'MonoGenericContext' on the heap.
5312         * class-internals (_MonoMethodInflated::context): Make field
5313         inline, not a pointer.
5314         * loader.c (method_from_methodspec): Allocate 'new_context' on the
5315         stack.  Use the context embedded within the inflated method as the
5316         hash key, rather than 'new_context'.
5317         * class.c (inflate_generic_context): Simplify.  Return a struct
5318         rather than allocating on the heap.
5319         (mono_class_inflate_generic_method_full): Update to changes.  Now,
5320         doesn't salt away a copy of the context -- simplifying the
5321         lifetime rules of a 'MonoGenericContext *'.
5322         (mono_method_get_context): Return pointer to embedded context.
5323         (setup_generic_array_ifaces): Allocate temporary context on stack.
5324         * reflection.c (inflate_mono_method): Likewise.
5325         (mono_reflection_bind_generic_method_parameters): Likewise.
5326         Use the context embedded within the inflated method as the hash key.
5327
5328         Avoid a source of allocation of 'MonoGenericContext'.
5329         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
5330         and 'cached_context' fields into embedded 'MonoGenericContext' field.
5331         * class.c: Update to changes.
5332         (mono_generic_class_get_context): Simplify drastically.  Now just
5333         returns a pointer to the field.
5334         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
5335         argument as a const pointer.
5336         (mono_metadata_generic_context_equal): Likewise.
5337         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
5338         Update to changes.
5339
5340 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
5341
5342         * verify.c improved the handling of brtrue/brfalse, factored out common code
5343
5344 2007-06-14  Raja R Harinath  <rharinath@novell.com>
5345
5346         Kill MonoGenericMethod.
5347         * class-internals.h (MonoGenericContext::method_inst): Rename from
5348         'gmethod' and convert to a MonoGenericInst.
5349         (MonoGenericMethod): Remove.
5350         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
5351         * loader.c (method_from_methodspec): Update to changes.  Use a
5352         MonoGenericContext as the key to the hashtable.
5353         * metadata.c (mono_metadata_generic_context_equal): Rename from 
5354         'mono_metadata_generic_method_equal' and take MonoGenericContext.
5355         (mono_metadata_generic_context_hash): Likewise from
5356         'mono_metadata_generic_method_hash'.  Change hash function.
5357         (mono_metadata_load_generic_params): Update to changes.
5358         (mono_get_shared_generic_method): Remove.
5359         * metadata-internals.h (mono_get_shared_generic_method): Remove.
5360         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
5361         (inflate_generic_context): Likewise.
5362         (mono_class_inflate_generic_method_full): Likewise.
5363         (setup_generic_array_ifaces): Likewise.
5364         (mono_class_create_from_typespec): Likewise.
5365         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
5366         (method_encode_methodspec): Update callsite.
5367         (reflection_methodbuilder_to_mono_method): Update to changes.
5368         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
5369         MonoGenericContext as the key to the hashtable.
5370         (inflate_mono_method): Update to changes.
5371
5372         * class-internals.h (MonoGenericMethod::container): Remove.
5373         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5374
5375 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
5376
5377         * profiler-private.h, profiler.c, profiler.h: added API to profile
5378         exception events.
5379
5380 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5381
5382         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
5383
5384 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5385
5386         * verify.c: method invocation is now validated, now we verify parameter types on stack.
5387         Fixed overflow and underflow not aborting the verification process.
5388
5389 2007-06-13  Mark Probst  <mark.probst@gmail.com>
5390
5391         * class-internals.h (MonoStats): Added stats entries for dynamic
5392         code allocations.
5393
5394 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * loader.c (mono_free_method): Free header->locals and header->clauses.
5397
5398         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
5399         dynamic case.
5400
5401         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
5402
5403         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
5404
5405 2007-06-12  Raja R Harinath  <rharinath@novell.com>
5406
5407         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
5408         the tables.
5409
5410 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5411
5412         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
5413
5414 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5415
5416         MonoGenericMethod on a diet
5417         * class-internals.h (_MonoMethodInflated::reflection_info): Move
5418         here ...
5419         (_MonoGenericMethod::reflection_info): ... from here.
5420         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
5421         Update to changes.
5422         * reflection.c (inflate_mono_method): Likewise.
5423         (mono_reflection_bind_generic_method_parameters): Likewise.
5424
5425 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5426
5427         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
5428         *verify.c: factored long ldarg forms to share code with short forms
5429
5430 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5431
5432         *verify.c: fixed code formating factored some duplicate code
5433         into a new function
5434
5435         *verify.h: fixed binary incompatibility introduced earlier
5436
5437         *pedump.c: fixed formating
5438
5439 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5440
5441         Fix assertion when disassembling Mono.C5.dll
5442         * loader.c (method_from_methodspec): Avoid inflating a method
5443         twice with the same context.  If the methodref is inflated, use
5444         the declaring method instead.
5445
5446         * class.c (mono_class_from_generic_parameter): Fix case similar to
5447         bug #81830 handled below, but for method containers.
5448
5449 2007-06-10  Raja R Harinath  <harinath@gmail.com>
5450
5451         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
5452         get_shared_generic_class.  Directly inflate the instance.
5453         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
5454         (inflate_generic_class): Delete.
5455         (get_shared_generic_class): Delete.  Move setting of
5456         'cached_class' and 'cached_context' ...
5457         * metadata.c (mono_metadata_lookup_generic_class): ... here.
5458
5459         * metadata.c (mono_metadata_lookup_generic_class): Change
5460         signature to take the components of a MonoGenericClass rather than
5461         an allocated MonoGenericClass.  Change semantics to be intern-like.
5462         * reflection.c (mono_class_bind_generic_parameters): Update to
5463         changes.  Make locking region tighter.
5464         * class.c (inflate_generic_class): Update to changes.
5465         (get_shared_generic_class): Likewise.
5466         * metadata-internals.h: Likewise.
5467
5468         * reflection.c (mono_class_bind_generic_parameters): Take and
5469         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
5470         (mono_reflection_bind_generic_parameters): Use
5471         'mono_class_bind_generic_parameters' rather than duplicate the code.
5472         * class.c (mono_bounded_array_class_get): Update to changes.
5473         * object-internals.h: Likewise.
5474
5475         * reflection.c (mono_class_bind_generic_parameters): Only support
5476         parameterizing generic type definitions.  Remove support for other
5477         open types.
5478
5479 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
5482
5483         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
5484         in the dynamic case.
5485
5486 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
5487
5488         * threads.c: When cleaning up thread, reset the Background bit.
5489         Fixes bug #81720.
5490
5491 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
5492
5493        * metadata.c: Move variable declarations to top of scope.
5494        * verify.c: Move variable declarations to top of scope.
5495
5496        Code is contributed under MIT/X11 license.
5497
5498 2007-06-08  Raja R Harinath  <rharinath@novell.com>
5499
5500         * reflection.c (mono_class_bind_generic_parameters): Replace
5501         open-coded loop with mono_metadata_inflate_generic_inst.
5502
5503         * class.c (get_shared_generic_class): Don't call
5504         mono_get_shared_generic_inst.  Use the container's own
5505         'class_inst'.
5506
5507         * metadata.c (mono_metadata_load_generic_params): Move
5508         initialization of 'context' field here from ...
5509         * class.c (mono_class_create_from_typedef): ... here, and ...
5510         * loader.c (mono_get_method_from_token): ... here.
5511
5512         * class.c (get_shared_generic_class): Rename from
5513         mono_get_shared_generic_class and make static.
5514         (mono_get_shared_generic_inst): Move to metadata.c.
5515         * loader.c (mono_get_shared_generic_method): Likewise.
5516         * class-internals.h, metadata-internals.h: Update to changes.
5517
5518         Fix #81830
5519         * class.c (mono_class_from_generic_parameter): Don't assume a
5520         generic container owner exists.  Generic containers from monodis
5521         don't have any.
5522
5523 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
5524
5525         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
5526         * verify.h: new typedefs to returns the non-verifiable status
5527         * verify.c: initial implementation of generics, stack merging and object compatibility check
5528
5529 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5530
5531         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5532         a MonoInternalHashTable again (fixed bug in internal hash table
5533         code).
5534
5535 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5536
5537         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5538         MonoInternalHashTable again (fixed bug in internal hash table
5539         code).
5540
5541 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5542
5543         * class.c, image.c, class-internals.h, domain.c,
5544         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
5545         changes.  Have to figure out what makes them break the SWF
5546         regression.
5547
5548 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5549
5550         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5551         a MonoInternalHashTable now.
5552
5553 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5554
5555         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5556         MonoInternalHashTable now.
5557
5558 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
5561         invoke_impl code.
5562
5563         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
5564
5565         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
5566         dependent trampoline.
5567
5568         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5569
5570         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
5571
5572 2007-05-29  Robert Jordan  <robertj@gmx.net>
5573
5574         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
5575
5576 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
5577
5578         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
5579
5580 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
5581
5582        * marshal.c: Fix interface lookup loops for
5583        cominterop_get_com_slot_for_method and 
5584        cominterop_get_method_interface. Only need to lookup
5585        if type is a class, else use interface type method is on.
5586
5587        Code is contributed under MIT/X11 license.
5588
5589 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
5590
5591         * reflection.c: HasSecurity can be present even if no specially 
5592         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
5593         SecurityAttribute). Fix CAS regression tests on buildbot.
5594
5595 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
5596
5597        * appdomain.c: Add configure checks for header files.
5598        * image.c: Add configure checks for header files.
5599        * file-io.c: Add configure checks for header files.
5600        * debug-mono-symfile.c: Add configure checks for header files.
5601        * threadpool.c: Add configure checks for header files.
5602        * console-io.c: Add configure checks for header files.
5603        * profiler.c: Add configure checks for header files.
5604        * rawbuffer.c: Add configure checks for header files.
5605        * icall.c: Add configure checks for header files.
5606        * rand.c: Add configure checks for header files.
5607        * socket-io.c: Add configure checks for header files.
5608
5609        Code is contributed under MIT/X11 license.
5610
5611 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
5612
5613         * reflection.c (mono_custom_attrs_from_builders): Remove the 
5614         assertion as it breaks the build.
5615         
5616         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
5617
5618         * reflection.c (lookup_custom_attr): Make a copy here too.
5619
5620         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
5621         dynamic images.
5622
5623         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
5624         images.
5625
5626         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
5627         info.
5628
5629 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
5632         (load_cattr_value): Ditto.
5633
5634 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
5637
5638 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
5639
5640         * threads.c: In "start_wrapper", set apartment_state to MTA if
5641         apartment_state is Unknown and we're running on 2.0 profile or
5642         higher.
5643         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
5644         to main method, then set apartment_state to Unknown on 1.0 profile,
5645         and MTA on 2.0 profile.
5646
5647 2007-05-16  Jb Evain  <jb@nurv.fr>
5648
5649         * class-internals.h (MonoDefaults): Add an attribute_class and
5650           customattribute_data_class.
5651         * domain.c (mono_init_internal): Populate them.
5652         * reflection.c: Use them to remove duplicates. Make a vew
5653         MonoClass variables `static'.
5654
5655 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
5656
5657         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
5658         step in implementing IMT, so that all isinst checks now can go
5659         through the bitmap.
5660         This was needed because vtables for TransparentProxy need to look
5661         like the vtable of the "target" class, so they need to point to
5662         its interface bitmap directly.
5663
5664         * object.c: inside "mono_class_create_runtime_vtable" and
5665         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
5666
5667 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
5668
5669         * object-internals.h
5670           culture-info.h : added territory field in MonoCulture and
5671           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
5672         * locales.c : fill territory field above too.
5673         * culture-info-table.h : regenerated.
5674
5675 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
5678         Fixes #81599.
5679
5680 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
5681
5682         * object.c: Always initialize apartment, even if 
5683         there is no custom attributes on entry point.
5684         
5685         Code is contributed under MIT/X11 license.
5686
5687 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
5688
5689         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
5690         * metadata.c: If no encoding is set, check for unicode
5691         on class.
5692         
5693         Code is contributed under MIT/X11 license.
5694
5695 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5696
5697         * threads.c: Handle if mono_thread_current returns NULL 
5698         
5699         Code is contributed under MIT/X11 license.
5700
5701 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5702
5703         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
5704         in start_wrapper. Added mono_thread_init_apartment_state and
5705         mono_thread_cleanup_apartment_state.
5706         * object.c: Initialize thread apartment state on main thread
5707         by checking for STAThreadAttribute on entry point.
5708         * object-internals.h: Add apartment_state field to MonoThread.
5709         * threads-types.h: Add unmanaged definition of 
5710         System.Threading.ApartmentState, MonoThreadApartmentState.
5711         
5712         Code is contributed under MIT/X11 license.
5713         
5714 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
5715
5716         * class.c: Fix windows build.
5717         * class-internals.h: Fix windows build.
5718         
5719         Code is contributed under MIT/X11 license.
5720
5721 2007-05-08  Robert Jordan  <robertj@gmx.net>
5722
5723         * process.c (CreateProcess_internal):
5724         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
5725         .CreateNoWindow was specified. Fixes #81496.
5726
5727 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5728
5729         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
5730         step in implementing IMT, replaced it with two compact arrays
5731         (interfaces_packed and interface_offsets_packed) and a bitmap that
5732         is used for isinst checks (interface_bitmap).
5733
5734         * class.c: (compare_interface_ids): compare function to pass to
5735         bsearch when looking for an interface with a given id.
5736         (mono_class_interface_offset): reimplemented using bsearch on
5737         interfaces_packed, getting the offset from interface_offsets_packed.
5738         (print_implemented_interfaces): utility debugging function.
5739         (setup_interface_offsets): reworked to initialize interfaces_packed,
5740         interface_offsets_packed and interface_bitmap.
5741
5742         * object.c: replaced all accesses to "MonoClass.interface_offsets"
5743         with uses of interfaces_packed and interface_offsets_packed.
5744
5745 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5746
5747         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
5748         mono_class_interface_offset prototype to wrap all accesses to
5749         "MonoClass.interface_offsets".
5750
5751         * class.c: Implemented mono_class_interface_offset, and wrapped all
5752         accesses to "MonoClass.interface_offsets".
5753
5754         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
5755         "MonoClass.interface_offsets".
5756
5757 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5758
5759         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
5760         GetMethodFromHandle overloads (bug #78637).
5761
5762 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5763
5764         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
5765         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
5766
5767 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
5768
5769         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
5770         #81498.
5771
5772         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
5773         gracefully.
5774         (mono_custom_attrs_from_index): Ditto.
5775
5776         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
5777         Fixes #81501.
5778
5779 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
5780
5781         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
5782         is now allocated from a mempool.
5783
5784 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
5785
5786         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
5787         caller holds threads_lock, leading to deadlocks. Fixes #81476.
5788
5789 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
5790
5791         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
5792         mono_loader_clear_error () too late. Fixes #81463.
5793
5794 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
5795
5796         * culture-info-table.h : regenerated.
5797
5798 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
5801         is missing.
5802
5803 2007-04-25  Dick Porter  <dick@ximian.com>
5804
5805         * Makefile.am: Put the mingw enforced-optimisation back into the
5806         PLATFORM_WIN32 section.
5807
5808 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
5811         patch.
5812
5813         * image.c (mono_image_load_module): New API function to load a module reference.
5814
5815         * image.c (load_modules): Load modules lazily. Fixes #80812.
5816
5817         * class.c (mono_class_from_typeref): Use mono_image_load_module.
5818         
5819         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
5820
5821         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
5822         to mono_image_load_module_dynamic.
5823
5824 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
5825
5826         * marshal.c: Fix calling convention for CCW on non-windows
5827         platforms. STDCALL on windows, CDECL everywhere else to work 
5828         with XPCOM and MainWin COM.
5829         
5830         Code is contributed under MIT/X11 license.
5831
5832 2007-04-23  Martin Baulig  <martin@ximian.com>
5833
5834         Fix #80969.
5835
5836         * loader.c
5837         (method_from_memberref): Added `gboolean *used_context' argument.
5838         (mono_get_method_from_token): Likewise.
5839         (mono_get_method_full): Don't insert the method in the cache when
5840         `used_context' is true.
5841
5842 2007-04-23  Raja R Harinath  <rharinath@novell.com>
5843
5844         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
5845
5846         * reflection.c (mono_reflection_bind_generic_parameters): Don't
5847         create new MonoTypes for returned types.
5848         * class.c (mono_generic_class_get_class): Export mono-internal.
5849         * class-internals.h: Update to changes.
5850
5851 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
5852
5853         * threadpool.c, threadpool.h, icall-def.h: patch from
5854         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
5855
5856 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
5857
5858         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
5859         
5860         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
5861
5862         * threads.c (mono_thread_get_stack_bounds): New helper function.
5863
5864         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
5865         Correctly compute stack bounds when attaching. Fixes #81394.
5866
5867 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
5868
5869         * reflection.c: fix handling of doubles in custom attributes
5870         for the arm-fpa format (bug #81368).
5871
5872 2007-04-18  Raja R Harinath  <rharinath@novell.com>
5873
5874         * reflection.c (assembly_add_win32_resources): Mildly relax an
5875         bounds check to let the end pointer point just past the end of the
5876         allocated buffer.  (may fix #81384)
5877
5878 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5879
5880         * culture-info-table.h : regenerated.
5881
5882 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
5885         the thread is aborted early.
5886
5887 2007-04-05  Dick Porter  <dick@ximian.com>
5888
5889         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
5890         FindFirstFile()/FindNextFile() to find entries.  This lets the
5891         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
5892         81038.
5893
5894         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
5895         the parameters of
5896         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
5897
5898 2007-04-04  Martin Baulig  <martin@ximian.com>
5899
5900         * debug-helpers.c
5901         (mono_method_desc_full_match): Add support for nested classes.
5902
5903 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
5906
5907 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
5910         waiting for too many threads.
5911
5912 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
5913
5914         * environment.c: Fix return value check on uname so we can get the 
5915         executing version on Solaris operating systems.
5916
5917 2007-03-28  Jb Evain  <jbevain@gmail.com>
5918
5919         * class.c (mono_type_get_name_recurse): Complete the
5920         fix for the creation of assembly qualified names for
5921         pointer types. Fixes #81208.
5922
5923 2007-03-27  Dick Porter  <dick@ximian.com>
5924
5925         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
5926         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
5927         changed.
5928
5929         * threads.c
5930         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
5931         the value of ReleaseMutex().
5932
5933 2007-03-27  Dick Porter  <dick@ximian.com>
5934
5935         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
5936         in little-endian order, not network endian, so must be converted
5937         to host endian here.  Fixes bug 80593.
5938
5939 2007-03-22  Jb Evain  <jbevain@gmail.com>
5940
5941         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
5942         qualified names for pointer types. Fixes #81208.
5943
5944 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
5945
5946         * marshal.c: Add support for PreserveSigAttribute. 
5947         
5948         Code is contributed under MIT/X11 license.
5949
5950 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
5951
5952         * process.c: Fix endianness issues. Fixes #81126.
5953
5954         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
5955         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
5956
5957         * image.c (mono_image_lookup_resource): Make this work on big-endian
5958         machines.Change API contract so the caller needs to free the return value.
5959         
5960         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
5961         API change.
5962         
5963 2007-03-14  Martin Baulig  <martin@ximian.com>
5964
5965         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
5966         mono_type_get_desc() as well.
5967
5968 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
5969
5970         * icall.c:  Fix environ access in VS.  
5971         
5972 2007-03-13  Alp Toker  <alp@atoker.com>
5973
5974         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
5975         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
5976         #63841.
5977
5978 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
5981         circular references among dynamic methods. Fixes #81091.
5982
5983         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
5984
5985 2007-03-09  Martin Baulig  <martin@ximian.com>
5986
5987         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
5988
5989 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
5990
5991         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
5992         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
5993         
5994         Code is contributed under MIT/X11 license.
5995         
5996 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
5997
5998         * loader.c: Reapply patch for bug #79424.
5999
6000 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * metadata.c (mono_type_to_unmanaged): Only convert object to
6003         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
6004
6005 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
6006
6007         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
6008         (and incorrectly set) is_reference field from MonoGenericInst.
6009
6010 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6011
6012         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
6013         a little earlier.
6014
6015         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
6016
6017         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
6018
6019 2007-03-05  Miguel de Icaza  <miguel@novell.com>
6020
6021         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
6022         FileOptions.1 value to mean "temporary", map that to
6023         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
6024
6025         Fixes 80688
6026
6027 2007-03-03  Marek Habersack  <mhabersack@novell.com>
6028
6029         * appdomain.c: implement MS .Net style shadow copying. Copies of
6030         the assemblies are made in a subdirectory of the dynamic base
6031         directory, the assembly names are preserved.
6032         Copy .mdb and .config files along with the assemblies being shadowed.
6033
6034 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6035
6036         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
6037         (emit_marshal_handleref): Ditto.
6038
6039         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
6040         on Visual C++. Fixes #80671.
6041
6042 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
6043
6044         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
6045         for clone operations.
6046
6047 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * marshal.c: Fix warnings.
6050
6051 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
6052
6053         * loader.c: allow case-insensitive matching of the dll name
6054         in dllmap handling when prefixed with "i:".
6055
6056 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
6057
6058         * threads.c: Fix #ifdef for dummy_apc function for VS.
6059
6060 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
6061
6062         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
6063
6064 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
6065         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
6066         giving precedence to the methods with a fully qualified name
6067         (InterfaceName.MethodName) when building the interface sections
6068         of the vtable.
6069
6070 2007-02-16  Dick Porter  <dick@ximian.com>
6071
6072         * threadpool.c (append_job): Fix fast-path array handling, so it's
6073         less likely the array will grow exponentially when the load is
6074         heavy.
6075
6076 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6077
6078         * metadata-internals.h, loader.c: fix dllmap lookup order
6079         for non-function maps, too, and prepare for fallback code.
6080
6081 2007-02-12  Robert Jordan  <robertj@gmx.net>
6082
6083         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
6084         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
6085         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
6086         GlobalFree. Fixes a part of bug #77075.
6087
6088 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
6089
6090         * loader.c: implemented typedef parent in field memberref.
6091
6092 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
6093
6094         * marshal.c: Fix warnings and remember to call Release on
6095         IUnknown of RCW.
6096         
6097         Code is contributed under MIT/X11 license.
6098
6099 2007-02-10  Miguel de Icaza  <miguel@novell.com>
6100
6101         * class-internals.h: Add MonoHandleRef definition, and
6102         handleref_class to mono_defaults. 
6103
6104         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
6105         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
6106
6107         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
6108         (do nothing on this stage)
6109         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
6110         (emit_marshal_handleref): New method, used for argument handling
6111         of HandleRefs. 
6112
6113 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
6114
6115         * class.c (mono_class_setup_parent): Lazily init com types.
6116         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
6117         init com types.
6118         * object.c (mono_remote_class_vtable): Lazily init com types.
6119         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
6120         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
6121         * domain-internals.h: Expose mono_init_com_types.
6122         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
6123         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
6124         Add support for COM Callable Wrapper marshalling.
6125         * marshal.h: Add icall definitions.
6126         * gc.c: Handle freeing of CCWs in finalizer code.
6127         
6128         Code is contributed under MIT/X11 license.
6129
6130 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
6131
6132         * reflection.c: changed all the signature encoding code to use
6133         a variable-sized buffer.
6134
6135 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6136
6137         * marshal.c: locking fixes: never take the loader lock
6138         or other runtime locks when holding the marshal lock
6139         (fixes bug#80664).
6140
6141 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
6142
6143         * marshal.c: make the delegate function pointer mapping
6144         work for the moving GC.
6145
6146 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
6147
6148         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
6149         for bug #80618.
6150
6151 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6152
6153         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
6154         gmodule.
6155
6156 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
6157
6158         * threadpool.c: made the code moving-GC safe.
6159
6160 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6161
6162         * assembly.c, boehm-gc.c, class-internals.h, class.c,
6163         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
6164         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
6165         warning cleanup.
6166         * reflection.c: warning cleanup, some threading and moving GC fixes.
6167
6168 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
6169
6170         * class.c, loader.c: create the needed Set/Get/Address array methods
6171         as well as the .ctors in mono_class_init (), fixes bug #80567.
6172
6173 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
6174
6175         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
6176         we doesn't decrease its alignment. Should fix the sparc build.
6177
6178 2007-01-24  Dick Porter  <dick@ximian.com>
6179
6180         * socket-io.c
6181         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
6182         Create the returned object if we need to ignore an unsupported
6183         socket option.  Fixes a segfault reported by Atsushi.
6184
6185 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6186
6187         * class.c, object.c: restrict GC-tracked fields to
6188         UIntPtr fields used inside corlib, so we provide better
6189         type info to the GC and also allow broken packing as in
6190         bug #80580.
6191
6192 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
6193
6194         * sgen-gc.c: removed duplicated function.
6195
6196 2007-01-19  Miguel de Icaza  <miguel@novell.com>
6197
6198         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
6199         value that means that the value is not supported, but that we
6200         should not return a failure, but instead report this as a
6201         successful operation.
6202
6203 2007-01-19  Raja R Harinath  <rharinath@novell.com>
6204
6205         Fix tests/bug79956.2.il
6206         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
6207         (mono_generic_class_get_class): If the generic definition in an
6208         enum, copy over other fields related to it.
6209
6210 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
6211
6212         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
6213         genericinst enums (bug #79215).
6214
6215 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
6216         * class.c: Fix bug 80307.
6217
6218 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
6219
6220         * image.c: if the file table is not present, try to load
6221         all the modules, since we don't have info about them
6222         having or not metadata (bug #80517).
6223         * assembly.c: allow mono_assembly_load_references () to
6224         work for netmodules.
6225
6226 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6227
6228         * image.c, metadata-internals.h, object.c: execute module
6229         cctors when running on the 2 runtime if present (bug #80487).
6230
6231 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6232
6233         * icall.c: optimized InitializeArray() on bigendian.
6234
6235 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
6236
6237         * icall.c: fix for the broken ARM FPA double format.
6238
6239 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
6240
6241         * icall.c: handle endian issues for r4 and r8 types, too, in
6242         the InitializeArray() icall.
6243
6244 2007-01-15  Miguel de Icaza  <miguel@novell.com>
6245
6246         * loader.c (mono_loader_error_prepare_exception): Clear the error
6247         once we have extracted the information from it, do this before we
6248         call into the JIT's class loading mechanisms.
6249
6250         * object.c (mono_class_create_runtime_vtable): Do not clear the
6251         loader error before calling mono_class_get_exception_for_failure
6252         as the loader error is needed inside
6253         mono_class_get_exception_for_failure to throw the error (thinko).
6254
6255         Fixes #80521
6256         
6257 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
6258
6259         * reflection.c: align fields rva data so it's faster to load at
6260         runtime.
6261
6262 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6263
6264         Prepare to simplify GenericMethod handling.
6265         * class-internals.h (mono_method_get_context): New accessor function.
6266         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
6267         rather than directly accessing '->context' field.
6268
6269         * class-internals.h (_MonoGenericParam.method): Move ...
6270         (_MonoGenericContainer): ... here.  Add into union with klass field.
6271         * class.c, icall.c, loader.c, metadata.c, reflection.c:
6272         Update to changes.
6273
6274 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
6275
6276         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
6277         the wrapper type enum and reduce relocations.
6278
6279 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6280
6281         * reflection.c (inflate_mono_method): Reuse method instantiation
6282         from the generic method, if available.
6283
6284 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6285
6286         * marshal.c (emit_marshal_variant): Fix conv_arg
6287         type in last commit, based on whether parameter is byref.
6288         
6289 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6290
6291         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
6292         marshalling.
6293         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
6294         MONO_TYPE_OBJECT back for VARIANT support.
6295
6296 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6297
6298         * marshal.c, marshal.h, icall-def.h: Implement 
6299         Marshal.ReAllocCoTaskMem.
6300
6301 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
6302
6303         * marshal.c: memory retention fixes: use the proper
6304         image cache for runtime_invoke method lookups.
6305
6306 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
6307
6308         * mempool.c: added code to help debug mempool allocations.
6309
6310 2007-01-11  Dick Porter  <dick@ximian.com>
6311
6312         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
6313         support (experimenting with faking it with IP_MTU_DISCOVER for
6314         systems that don't have IP_DONTFRAGMENT.)
6315         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
6316         icall.
6317
6318         * icall-def.h: new System.Net.Sockets.Disconnect icall.
6319
6320         * socket-io.h: Add new fields to MonoSocketAsyncResult
6321         corresponding to the new ones in Socket.cs.
6322
6323 2007-01-11  Raja R Harinath  <rharinath@novell.com>
6324
6325         Fix IronPython regression mentioned in #80249
6326         * metadata.c (do_mono_metadata_parse_generic_class): Clear
6327         'cached_context' field, since it may have been initialized as a
6328         side-effect of metadata parsing.
6329
6330         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
6331         (_MonoGenericClass.cached_class): Move here and rename from lone
6332         remaining field of ...
6333         (_MonoInflatedGenericClass): ... this.  Remove.
6334         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
6335         to changes.
6336
6337         Fix mcs/tests/test-128.cs regression.
6338         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
6339         2007-01-10 change below.
6340         [MONO_TYPE_OBJECT]: Recurse into array case.
6341
6342 2007-01-11  Raja R Harinath  <harinath@gmail.com>
6343
6344         * class-internals.h (mono_get_inflated_generic_class): Remove.
6345         * class.c (mono_get_inflated_generic_class): Remove.
6346         (mono_generic_class_get_class): Rename from
6347         mono_class_create_generic.
6348         (mono_class_from_mono_type) [GENERICINST]: Use it.
6349         * reflection.c, metadata.c: Update to changes.  Use
6350         'mono_class_from_mono_type'.
6351
6352 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
6353
6354         * reflection.c: use passed type when encoding an array element
6355         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
6356
6357 2007-01-09  Robert Jordan  <robertj@gmx.net>
6358
6359         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
6360         result arguments (someDelegate.EndInvoke (unrelatedAres)).
6361         Fixes bug #80392.
6362
6363 2007-01-09  Raja R Harinath  <rharinath@novell.com>
6364
6365         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
6366
6367         * object.c (set_value): Avoid aliasing between type->data.klass
6368         and type->data.generic_class.
6369
6370         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
6371
6372 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6373
6374         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
6375         between type->data.klass and type->data.generic_class.
6376
6377 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
6378
6379         * marshal.c: In MS.NET, StringBuilder objects are not copied by
6380         value in out parameters.
6381
6382 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6383
6384         Simplify invariant for MonoGenericClass::klass field.
6385         * class.c (mono_class_create_generic): Verify 'klass' is null.
6386         * metadata.c (do_mono_metadata_parse_generic_class): Don't
6387         initialize 'klass' field.
6388
6389 2007-01-05  Raja R Harinath  <rharinath@novell.com>
6390
6391         Ongoing work to avoid redundant data and simplify invariants.
6392         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
6393         'generic_class', and change type to a GenericInst.
6394         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
6395         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
6396
6397 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
6398
6399         * class.c : skip io-layer under PLATFORM_WIN32.
6400
6401 2007-01-03  Tor Lillqvist  <tml@novell.com>
6402
6403         Fix #80305: In a bundled executable, look in the bundled exe
6404         assembly to determine the runtime version. Add the possibility to
6405         bundle also the machine.config file.
6406         
6407         * assembly.c (mono_assembly_open_from_bundle): Make
6408         non-static. Allow being called even if we have no bundled
6409         assemblies, and return NULL right away in that case.
6410
6411         * domain-internals.h: Declare mono_assembly_open_from_bundle()
6412         here.
6413
6414         * domain.c (app_config_parse): Take an assembly exe file name as
6415         parameter instead of a config file name. Check for a bundled
6416         config file for that assembly by calling
6417         mono_config_string_for_assembly_file() (see below) before looking
6418         for one in the file system.
6419         (get_runtimes_from_exe): Corrsponding change to call of
6420         app_config_parse().
6421         (get_runtimes_from_exe): Check for bundled assembly exe file first
6422         by calling mono_assembly_open_from_bundle(). If no bundled
6423         assembly exe file is found, call mono_image_open() as before to
6424         look it up in the file system.
6425
6426         * mono-config.c: Add variable bundled_machinec_onfig.
6427         (mono_config_string_for_assembly_file): New function.
6428         (mono_config_for_assembly): Move code snippet that looks for a
6429         bundled assembly .config file into the above new function. Call
6430         it.
6431         (mono_register_machine_config, mono_get_machine_config): New
6432         functions to set and retrieve
6433
6434         * assembly.h: Declare mono_register_machine_config().
6435
6436         * mono-config.h: Declare mono_get_machine_config() and
6437         mono_config_string_for_assembly_file().
6438
6439         * icall.c: No declaration of environ necessary on Win32. It is
6440         declared (as a macro expanding to a function call) in stdlib.h.
6441         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
6442         New internal mono function. Returns the value of
6443         mono_get_machine_config() as a Mono string.
6444
6445         * icall-def.h: Add get_bundled_machine_config().
6446
6447 2007-01-04  Raja R Harinath  <rharinath@novell.com>
6448
6449         Remove redundant field
6450         * class-internals.h (_MonoGenericContext.container): Remove field.
6451         * loader.c (mono_method_get_signature_full): Don't parse a
6452         "container" for a signature parse when the signature is inflated
6453         immediately.
6454         (method_from_methodspec): Likewise, for a generic_inst.
6455         * class.c, metadata.c, reflection.c: Update to changes.
6456
6457 2006-01-04  Raja R Harinath  <rharinath@novell.com>
6458
6459         * class-internals.h (_MonoGenericClass): Rename 'context' field to
6460         'cached_context', and change semantics -- it starts off NULL, and
6461         is initialized on demand.
6462         * class.c (mono_generic_class_get_context): New accessor to
6463         replace 'context' field accesses.
6464         (mono_class_get_context): New helper.
6465         (*): Update to changes.
6466         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
6467
6468 2007-01-03  Miguel de Icaza  <miguel@novell.com>
6469
6470         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
6471         before the memcpy.   Fixes Marshal2 regression.
6472
6473 2007-01-02  Jb Evain  <jbevain@gmail.com>
6474
6475         * blob.h: add a MONO_TYPE_ENUM definition
6476         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
6477         fix the encoding of arrays of enums in custom attributes.
6478
6479         Fixes #79666.
6480
6481 2007-01-01  Miguel de Icaza  <miguel@novell.com>
6482
6483         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
6484         string is null terminated, but only cut the string short if it
6485         overflows the buffer.   
6486         
6487         (mono_string_to_byvalstr): Also fix this routine.   The code here
6488         was not properly terminating a string (it was only terminated
6489         because of the previous catch-all memset). 
6490
6491         I left the memset, because I do not know if applications expect
6492         the runtime to clear this region. 
6493
6494         Fixes #79944.
6495
6496         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6497         Clear the error before returning to unmanaged code to prevent the
6498         runtime from being confused later on (fixes  80420).
6499         (ves_icall_type_from_name): Always call mono_loader_clear_error
6500         after parsing a type that could have failed.
6501         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
6502
6503         * loader.c (mono_loader_clear_error): Fix indentation.
6504
6505 2006-12-28  Martin Baulig  <martin@ximian.com>
6506
6507         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
6508
6509 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
6510
6511         * reflection.c: patch from Rolf Bjarne Kvinge to fix
6512         getting a token for an EnumBuilder.
6513
6514 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
6515
6516         * reflection.c: be more careful in case resource generation
6517         fails to create the data array.
6518
6519 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
6520
6521         * sgen-gc.c: write barrier for clone and fix unregister handles.
6522
6523 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
6524
6525         * reflection.c: some fixes needed in the generics code for the moving GC.
6526
6527 2006-12-22  Robert Jordan  <robertj@gmx.net>
6528
6529         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
6530         account. Fixes bug #80299.
6531
6532 2006-12-21  Raja R Harinath  <rharinath@novell.com>
6533
6534         Fix WaitHandle usage in delegates.
6535         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
6536         * object.c (mono_wait_handle_new): Use the property set method to
6537         initialize the handle.
6538         (mono_wait_handle_get_handle): New.
6539         * threadpool.c (mono_async_invoke): Use it.
6540         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
6541         Likewise.
6542         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
6543
6544 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
6545
6546         * marshal.c (emit_marshal): Call emit_marshal_variant and
6547         emit_marshal_com_interface when applicable.
6548         (emit_marshal_variant, emit_marshal_com_interface): Add
6549         methods for this case and remove if's from emit_marshal_object.
6550         
6551 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
6552
6553         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
6554
6555 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
6556
6557         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
6558         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
6559         and GlobalFree on Windows. Remove FIXME.
6560
6561 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
6562
6563         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
6564         implementation for managed objects.
6565
6566 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
6567
6568         * object.c: implemented code to be used for checking
6569         that no reference field overlaps with non-references.
6570
6571 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6572
6573         * threadpool.c: fix queue code to be compatible with the
6574         moving GC.
6575
6576 2006-12-18  Miguel de Icaza  <miguel@novell.com>
6577
6578         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
6579         in structures by throwing ArgumentNullException.
6580
6581         (emit_marshal_safehandle): Also when they are null parameters.
6582
6583         (emit_marshal_safehandle): Add support for ref
6584         SafeHandles parameters
6585
6586 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
6587
6588         * profiler.c: updated to use the mono-dl API instead of
6589         gmodule.
6590
6591 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6592
6593         * profiler.c: updated to use the mono-dl dynamic loading
6594         API instead of gmodule.
6595
6596 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
6597
6598         * profiler.c: use readlink, older versions of glib don't have
6599         g_file_read_link ().
6600
6601 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6602
6603         * profiler.c: try to detect the path to mono if libc fails to provide
6604         a useful name (bug #80286).
6605
6606 2006-12-16  Raja R Harinath  <rharinath@novell.com>
6607
6608         Fix #80242
6609         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
6610         instance, use the generic type definition instead.
6611         (ves_icall_Type_GetNestedTypes): Likewise.
6612         * class.c (mono_class_create_generic): Always set the
6613         nested_classes of a generic instance to NULL, even if the generic
6614         type definition has nested types.
6615
6616 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
6617
6618         * marshal.c (mono_string_from_bstr): Revert previous Windows change
6619         and fix on Linux.
6620         
6621 2006-12-15  Miguel de Icaza  <miguel@novell.com>
6622
6623         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
6624         my arguments were in the wrong order.   I also fixed the Windows
6625         version which seems to have had the same issue.
6626
6627         (mono_free_bstr): On Unix, this is g_free.
6628         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
6629         conversions (for the tests in corlib to pass).
6630
6631 2006-12-14  Miguel de Icaza  <miguel@novell.com>
6632
6633         * marshal.c (emit_ptr_to_object_conv): For now, ignore
6634         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
6635         exception if a ref SafeHandle in a struct has changed).
6636         
6637         (emit_struct_conv): Do not perform layout checks for classes
6638         derived from SafeHandle, as those are specially handled. 
6639
6640         (emit_object_to_ptr_conv): Add support for
6641         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
6642
6643         (emit_marshal_safehandle): Implement conversion of return values
6644         of safehandles (MARSHAL_ACTION_CONV_RESULT).
6645         
6646         * threads.c: WaitHandle now is compiled with two different handles
6647         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
6648         for 2.0.
6649         
6650         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
6651         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
6652         these routines to cope with both kinds of fields.
6653
6654 2006-12-12  Miguel de Icaza  <miguel@novell.com>
6655
6656         * metadata.c (mono_type_to_unmanaged): Handle the case where
6657         type->data.klass is a SafeHandle, and in that case, return the
6658         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
6659         MONO_MARSHAL_CONV_SAFEHANDLE. 
6660
6661 2006-12-11  Miguel de Icaza  <miguel@novell.com>
6662
6663         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
6664         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
6665         calling emit_marshal_object.
6666
6667         (emit_marshal_safehandle): Implement marshalling of
6668         SafeHandle parameters (no ref support yet).
6669
6670         (MarshalAction): Document the defines as I implement
6671         them for SafeHandle.
6672
6673         (emit_marshal_object): indentation police.
6674
6675         * class-internals.h: Define MonoSafeHandle.
6676         Add safehandle_class to MonoDefaults type.
6677
6678         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
6679         list of classes to check for fields. 
6680
6681         * domain.c (mono_init_internal): Add SafeHandle to the list of
6682         mono_defaults loaded.
6683
6684 2006-12-15  Raja R Harinath  <rharinath@novell.com>
6685
6686         Fix #80253
6687         * reflection.c (mono_reflection_bind_generic_parameters): If the
6688         generic type definition is a type builder, ensure that it is fully
6689         initialized before instantiating it.  Kill some dead code.
6690
6691 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
6692
6693         * object.c: clear the loader_error () before loading
6694         more metadata stuff (bug #80258).
6695
6696 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
6697
6698         * icall.c, icall-defs.h: type modifiers icalls for
6699         parameters and properties.
6700
6701 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
6702
6703         * object.c, icall.c: fixed warnings.
6704
6705 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6706
6707         * marshal.c: fixed a couple of leaks and coding style in a few places.
6708
6709 2006-12-08  Dick Porter  <dick@ximian.com>
6710
6711         * process.c: Cope with NULL ProcessStartInfo arguments on windows
6712         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
6713         80173.
6714
6715 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
6716
6717         * process.c: ProcessStartInfo may have only filename set and
6718         arguments can be NULL.
6719
6720 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6721
6722         * icall.c: fix leak found by Robert Jordan.
6723
6724 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6725
6726         * marshal.c, marshal.h: generate managed method to access an element
6727         of a multi-dimensional array.
6728
6729 2006-11-30  Paolo Molaro (lupus@ximian.com)
6730
6731         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
6732
6733 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6734
6735         * icall.c: back out GetFields () fix until the serialization code is
6736         fixed to not depend on the incorrect behaviour.
6737
6738 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
6739
6740         * profiler.c: provide defaults if none are set.
6741
6742 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
6743
6744         * Makefile.am, attrdefs.h: new public header file with
6745         constants for attributes for use by embedders.
6746
6747 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
6748
6749         * icall.c: GetFields () fix for bug #80064.
6750
6751 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
6752
6753         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
6754         removed long unused icalls.
6755
6756 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
6757   
6758         * marshal.c: 
6759                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
6760                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
6761                 can be generated without a delegate class.
6762                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
6763         
6764         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
6765
6766 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6767
6768         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
6769         #80069.
6770
6771 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
6772
6773         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
6774         icall-def.h: added icalls needed by System.GC.
6775
6776 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
6777
6778         * loader.c: ensure the class in catch clauses is handled
6779         correctly for generics methods (fixes bug#79980).
6780
6781 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
6782
6783         * monitor.h, monitor.c: added mono_locks_dump () function
6784         to help debug deadlocks involving managed locks.
6785
6786 2006-11-13  Dick Porter  <dick@ximian.com>
6787
6788         * file-io.c (get_file_attributes): If the file is a symlink try
6789         and get the stat data for the target, but also add the
6790         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
6791         the specs for the windows symlink support, but will probably have
6792         to be reworked when I have test data from a vista machine.  Fixes
6793         bug 79887.
6794
6795 2006-11-13  Dick Porter  <dick@ximian.com>
6796
6797         * gc.c (mono_domain_finalize): 
6798         * marshal.c (mono_delegate_begin_invoke): 
6799         * threadpool.c (socket_io_init, mono_thread_pool_init)
6800         (mono_thread_pool_finish): 
6801         * monitor.c (mono_monitor_try_enter_internal): 
6802         * threads.c (mono_thread_resume, mono_thread_init)
6803         (mono_thread_suspend_all_other_threads)
6804         (mono_thread_execute_interruption): 
6805         * appdomain.c (mono_domain_unload): Check for NULL error returns
6806         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
6807         75733.
6808
6809 2006-11-11  Miguel de Icaza  <miguel@novell.com>
6810
6811         * process.c
6812         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
6813         Only close the handle if the value of the handle is not
6814         INVALID_HANDLE_VALUE.  This just makes the process a bit more
6815         robust.
6816
6817         Improvement for #75733, so that we do not run into this problem. 
6818
6819         
6820         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
6821         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
6822         internal variables.  Fixes #79462 
6823         
6824
6825 2006-11-09  Dick Porter  <dick@ximian.com>
6826
6827         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
6828         Use poll() not select().  Fixes bug 79397.
6829
6830 2006-11-09  Raja R Harinath  <rharinath@novell.com>
6831
6832         Fix #79872
6833         * assembly.c (mono_assembly_load_from_full): Check that the given
6834         image has an assembly manifest.
6835
6836 2006-11-09  Ankit Jain  <jankit@novell.com>
6837
6838         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
6839         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
6840         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
6841
6842 2006-11-07  Dick Porter  <dick@ximian.com>
6843
6844         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6845         Put the old resolver behaviour back for pre-2.0 profiles.
6846
6847 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
6848
6849         * threadpool.c: precise GC and locking fixes.
6850
6851 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
6852
6853         * class.c: don't load types that have an explicit unaligned
6854         managed reference. Provide better info in the TypeLoad exception.
6855         Part of the fix for bug #79744.
6856         * object.c: use the correct check for class type load issues.
6857
6858 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
6859
6860         * class.c: enforce alignment of fields with managed references
6861         even when Pack=1 is forced by the user (bug #77788).
6862
6863 2006-11-03  Dick Porter  <dick@ximian.com>
6864
6865         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6866         If the address reverse lookup fails, return it as the hostname
6867         anyway.  Fixes bug 79721.
6868
6869 2006-11-03  Dick Porter  <dick@ximian.com>
6870
6871         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
6872         Fix build on Windows.
6873
6874 2006-11-02  Dick Porter  <dick@ximian.com>
6875
6876         * icall-def.h: 
6877         * object-internals.h: 
6878         * exception.c (mono_get_exception_thread_interrupted): 
6879         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
6880         Fixes bug 74525.
6881
6882         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
6883         Check for pending Thread.Interrupt.
6884
6885 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
6886         * loader.c: Fixed bug 79684.
6887
6888 2006-10-27  Dick Porter  <dick@ximian.com>
6889
6890         * file-io.c (get_file_attributes): Force symlinks to directories
6891         to be returned as a regular file.  Fixes bug 79733.
6892 2006-10-26  Dick Porter  <dick@ximian.com>
6893
6894         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
6895         CreateFile to open a directory then we need to set the
6896         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
6897
6898 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
6901         friends.
6902
6903 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6904
6905         * sgengc.c: small cleanup of timer code.
6906
6907 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
6908
6909         * sgen-gc.c: fix some warnings and start adding support for
6910         complete object removal on domain unload.
6911
6912 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
6913
6914         * assembly.c: build_assembly_name should not consider a version
6915         number without build or revision number invalid. Fixes bug #79715.
6916
6917 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
6918
6919         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
6920         call kernel32 function OutputDebugString directly.
6921         
6922         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
6923         
6924 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
6925
6926         * reflection.c: small cleanup, using a function to insert a MonoString
6927         in the string heap.
6928
6929 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
6930
6931         * reflection.c: moving GC fixes.
6932
6933 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
6934
6935         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
6936         all the objects with finalizers belonging to an unloading appdomain.
6937
6938 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
6939
6940         * sgen-gc.c: added ability to allocate even when the nursery is fully
6941         pinned and fixed a couple of bugs.
6942
6943 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
6944
6945         * threads.h: Revert the last change for now.
6946
6947         * threads.h (mono_thread_get_pending_exception): Rename this to
6948         mono_thread_get_undeniable_exception ().
6949
6950 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
6951
6952         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
6953         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
6954         when fname does not refer to valid assembly. This result in a more
6955         meaningful error message.
6956         * exception.c: added mono_get_exception_bad_image_format2 which 
6957         constructs a BadImageFormatException using the ctor taking a custom
6958         message and the file name. Passing in a NULL msg results in a default
6959         message.
6960         * exception.h: define mono_get_exception_bad_image_format2 function.
6961         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
6962         when file name pointed to an invalid IL image. Use 
6963         mono_get_exception_file_not_found2 to construct FileNotFoundException,
6964         as this results in a more meaningful error message.
6965
6966 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
6967
6968         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
6969         #79465.
6970
6971 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * metadata.c (mono_type_size): Change the align parameter to guint32 for
6974         consistency with the other _size functions.
6975         (mono_type_stack_size): Ditto.
6976
6977         * class.c object.c icall.c: Fix warnings caused by the above change.
6978
6979         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
6980
6981         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
6982
6983         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
6984
6985 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
6986
6987         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
6988         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
6989         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
6990         threadpool.h, threads-types.h: mark more internal functions.
6991
6992 2006-10-11  Dick Porter  <dick@ximian.com>
6993
6994         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
6995         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
6996         reproduce the bug even before applying the fix.)
6997
6998 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
6999
7000         * reflection.c: allow retrieving attributes for arguments in generic
7001         methods (bug #79241).
7002
7003 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
7004
7005         * debug-mono-symfile.c: properly check fopen () result (found by
7006         coverity).
7007
7008 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
7009
7010         * reflection.c: make error message clearer and fixed two
7011         issuelets found by Coverity.
7012
7013 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
7014
7015         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
7016
7017 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7018
7019         * object-internals.h, gc-internal.h, profiler-private.h:
7020         mark internal functions.
7021
7022 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7023
7024         * reflection.c: put data in the text section.
7025         * icall.c: recognize more types in type_from_typename ().
7026         * process.c, marshal.c: added some GC FIXMEs.
7027
7028 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7029
7030         * loader.c: check for NULL before initializing.
7031
7032 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * gc.c (finalizer_thread): Use a non-alertable wait here.
7035
7036         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
7037         until the correct solution is found.
7038
7039 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7040
7041         * reflection.c (mono_module_get_object): Avoid an assert when operating on
7042         modules with no metadata. Fixes #79596.
7043
7044         * image.c (load_metadata_ptrs): Put back the error message when
7045         the #- heap is encountered since the support is not complete yet.
7046
7047 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7048
7049         * gc.c: do not allow the user to SuppressFinalize () a
7050         delegate because it would leak the trampoline if present.
7051
7052 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7053
7054         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
7055         PropertyPtr table.
7056
7057 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
7060
7061         * metadata.c (mono_metadata_get_param_attrs): Ditto.
7062
7063         * row-indexes.h: Add definitions for *Ptr tables.
7064
7065         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
7066
7067         * metadata.c (mono_metadata_translate_token_index): New helper function to
7068         translate table indexes used in uncompressed metadata.
7069         (mono_metadata_decode_table_row): Ditto.
7070         (mono_metadata_decode_table_row_col): Ditto.
7071
7072         * metadata.c: Add table schema for *Ptr tables.
7073
7074         * class.c loader.c: Use the new helper function to access the affected metadata
7075         tables.
7076         
7077         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
7078         #38532.
7079         
7080 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
7083         sequences which can be unbounded in size. Fixes #79583.
7084
7085 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
7088         static initialization.
7089
7090         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
7091
7092         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
7093
7094         * domain.c (mono_domain_free): Free up type_init_exception_hash.
7095
7096         * object.c (mono_runtime_class_init): Implement correct semantics when a static
7097         ctor fails, i.e. throw the same exception on subsequent accesses.
7098         
7099 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
7100
7101         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
7102         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
7103         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
7104         Handle marshalling of interfaces and VARIANTs contained in structs.
7105         
7106         Code is contributed under MIT/X11 license.
7107         
7108 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
7111         
7112         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
7113         mempool.
7114
7115 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7116
7117         * console-io.c: ignore previous SIGINT handler.
7118
7119 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
7120
7121         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
7122         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
7123         #79460, #79461, #79485.
7124
7125         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
7126
7127         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
7128         #79217.
7129
7130 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
7131
7132         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
7133         could be generated from it.
7134
7135 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
7136
7137         * rand.c: fix read loop to correctly handle EINTR.
7138
7139 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7140
7141         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
7142         internal calls are defined to keep methods closer to the declaring
7143         type and allow a significant reduction in runtime relocations and
7144         memory usage.
7145
7146 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
7147
7148         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
7149         exception message to have FileNotFoundException use the default
7150         assembly load error message. Fixes bug #79426.
7151         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
7152
7153 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7154
7155         * threadpool.c: (start_thread_or_queue) use the root domain when
7156         creating the thread instead of the async object one.
7157
7158 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
7159
7160         * class.c, object.c, class-internals.h, reflection.c:
7161         for arrays, store element_size inside MonoClass (speedup
7162         for array object creation).
7163
7164 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
7165
7166         * icall.c: fixed CodeBase to use the file name and not the module
7167         name (bug #79365).
7168
7169 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7170
7171         * mono-debug.c, mono-debug.h: export find_method as
7172         mono_debug_find_method ().
7173
7174 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7175
7176         * debug-helpers.c, class-internals.h: added a few functions useful
7177         when debugging under gdb.
7178
7179 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7180
7181         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
7182         characters that need special handling.
7183
7184 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
7185
7186         * mono-config.c: make the os/cpu specification more flexible,
7187         allowing lists and negation.
7188
7189 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
7190
7191         * marshal.c: COM Interop fixes. Handle case where method->klass.
7192         is interface. Handle BSTR/MonoString when null. Use CDECL as 
7193         calling convention on non-windows platforms. This is for
7194         compatibility with XPCOM and MainWin COM.
7195         
7196         Code is contributed under MIT/X11 license.
7197         
7198
7199 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
7200
7201         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
7202         correctly. Fixes #79217.
7203
7204         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
7205
7206 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
7207
7208         * mono-config.c: allow both an os and cpu attribute for dllmap
7209         and dllentry elemnets to enable a single config file to be used
7210         for multiple architectures.
7211
7212 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
7213
7214         * loader.c: MonoLoaderError was cleared too soon on load failure.
7215         Fixes bug #79424.
7216
7217 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
7218
7219         * icall.c: use the defining class vtable when accessing a
7220         static field, not a pobblibly derived class.
7221
7222 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * icall.c string-icalls.c: Remove references to unicode.h.
7225
7226         * unicode.h unicode.c Makefile.am: Remove these unused source files.
7227
7228         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
7229
7230         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
7231         indicating the image where custom marshaller types should be looked up.
7232         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
7233         custom marshallers, instead of corlib. Fixes #79425.
7234
7235 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
7238
7239 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
7240
7241         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
7242         Implement Environment.ProcessorCount.
7243         
7244         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
7245         Implement Environment.ProcessorCount.
7246         
7247         * icall.c: 
7248         Add Environment.ProcessorCount icall.
7249         
7250         Patch by Jason McFall.
7251
7252 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7253
7254         * assembly.c: don't append .exe/.dll when the filename already contains
7255         one of those extensions.
7256
7257 2006-09-12  Martin Baulig  <martin@ximian.com>
7258
7259         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
7260         to array interfaces.
7261
7262 2006-09-11  Martin Baulig  <martin@ximian.com>
7263
7264         * reflection.c (mono_image_build_metadata): Create the
7265         MethodImpl's after emitting all types and methods, so we don't
7266         need another fixup pass for them.
7267
7268 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * class.c (mono_class_from_name_case): Fix regression introduced by the last
7271         change.
7272
7273 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
7274
7275         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
7276         unload.
7277
7278 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
7281         args is not set. Fixes #78926.
7282
7283 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
7284
7285         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
7286
7287         * image.c (load_class_names): Move this to class.c, and rename it to 
7288         'mono_image_init_name_cache'.
7289         (load_modules): Fix a warning.
7290
7291         * class.c icall.c image.c: Initialize image->name_cache lazily.
7292
7293         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
7294         on its name using information in the AOT file.
7295
7296         * class.c (mono_class_from_name): Use the new hook function.
7297
7298 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
7299
7300         * reflection.c (mono_param_get_objects): Handle enum default parameter values
7301         correctly.
7302
7303         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
7304         Fixes #79289.
7305         
7306 2006-09-06  Martin Baulig  <martin@ximian.com>
7307
7308         * icall.c (mono_lookup_internal_call): Small fix.
7309
7310 2006-09-05  Raja R Harinath  <rharinath@novell.com>
7311
7312         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
7313         double g_free.
7314
7315 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
7316
7317         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
7318         when --debug is specified.
7319
7320 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * class.c (setup_generic_array_ifaces): Fix a warning.
7323
7324 2006-09-04  Miguel de Icaza  <miguel@novell.com>
7325
7326         * Temporarily remove the patch to assemly.c that checks the
7327         assembly versions as it breaks our gacutil.
7328
7329 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
7330
7331         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
7332
7333         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
7334         a net 1.0 runtime.
7335
7336         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
7337         created using the default ctor. Fixes #79152.
7338         (mono_string_builder_to_utf16): Ditto.
7339
7340 2006-09-01  Martin Baulig  <martin@ximian.com>
7341
7342         Fix handling of the generic array interfaces.
7343
7344         * class-internals.h
7345         (MonoDefaults): Removed `generic_array_class' and added
7346         `generic_ilist' class.
7347
7348         * class.c
7349         (mono_bounded_array_class_get): Add the new generic array interfaces.
7350         (setup_generic_array_ifaces): New static method; create vtable
7351         entries for each method in the generic array interfaces.
7352
7353         * metadata.c
7354         (select_container): Allow "parent-less" generic methods.
7355
7356         * marshal.c
7357         (mono_marshal_get_generic_array_helper): New public method.
7358
7359         * icall.c
7360         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
7361         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
7362         moved the interncall into System.Array.
7363
7364 2006-09-01  Raja R Harinath  <rharinath@novell.com>
7365
7366         A few more cases of avoiding work on types with ->byref set.
7367         Has the real fix for #79238
7368         * icall.c (is_generic_parameter): New helper.
7369         (ves_icall_Type_GetGenericParameterPosition): Use it.
7370         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
7371         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
7372         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7373         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
7374         reference types.
7375         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
7376         reference types.
7377         (ves_icall_Type_get_IsGenericInstance): Likewise.
7378         (ves_icall_Type_get_IsGenericType): Likewise.
7379
7380 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
7383         class if possible.
7384
7385         * mempool.h (mono_mempool_get_allocated): New helper function.
7386
7387         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
7388         change.
7389
7390         * mempool.c: Fix warnings and the calculation of stats.
7391
7392         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
7393
7394         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
7395
7396         * loader.c (mono_get_method_from_token): Update method_count stat.
7397
7398         * class-internals.h (MonoStats): Add some stats.
7399
7400 2006-08-31 Robert Jordan  <robertj@gmx.net>
7401
7402         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
7403         with managed variants.
7404         All code is contributed under the MIT/X11 license.
7405         
7406 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
7409         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
7410
7411         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
7412
7413         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
7414         with cycles in classes.
7415
7416         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
7417
7418         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
7419         missing a [MarshalAs] directive. Fixes #79203.
7420
7421         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
7422         klass->marshal_info. Fixes #79217.
7423
7424 2006-08-30  Martin Baulig  <martin@ximian.com>
7425
7426         Committing a patch from Joachim Ante <joe@otee.dk>:
7427         Add support for binary data symbol stores.
7428
7429         * debug-mono-symfile.c
7430         (mono_debug_open_mono_symbol_file): Renamed into
7431         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
7432         arguments.
7433
7434         * mono-debug.c
7435         (mono_debug_open_image): Added `raw_contents' and `size' args.
7436         (mono_debug_init_2_memory): New public function.
7437
7438 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
7439
7440         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
7441
7442 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7443
7444         * appdomain.c: implement support for ShadowCopyFiles.
7445
7446 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
7447
7448         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
7449         when value is NULL (and should remove CID #51).
7450
7451 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7452
7453         * image.c: moved 2 functions to ../utils.
7454
7455 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
7456
7457         * gc.c: cope with the target object of a GC handle being NULL
7458         (bug #78877).
7459
7460 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
7461
7462         * class.c: recursively check parent's explicit implementations
7463         of interface methods (fixes bug #79125).
7464
7465 2006-08-19  Miguel de Icaza  <miguel@novell.com>
7466
7467         * filewatcher.c: Avoid warnings when building, do not redefine
7468         constants that are defined.
7469
7470         Remove warnings.
7471
7472 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7473
7474         * image.c: don't fail when the link points to an absolute path.
7475
7476 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
7477
7478         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
7479         Fix CID #3.
7480
7481 2006-08-17  Miguel de Icaza  <miguel@novell.com>
7482
7483         * image.c (full_path): A new method used to obtain the actual path
7484         of an assembly even in the presence of symbolic links.  
7485
7486         This is necessary for the case where we are running a binary that
7487         has been GACed, but we are using the "published" path name
7488         ($prefix/mono/1.0/blah.exe) which happens to point to the real
7489         file in the GAC.
7490
7491         This was the source of the failure for the `xsp' command with the
7492         recent AppDomain changes, as far as the runtime was concerned,
7493         there were two different assemblies: $prefix/mono/1.0/blah.exe and
7494         $prefix/mono/gac/blah/version/blah.exe.
7495
7496         (do_mono_image_open): use full path
7497
7498 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
7501
7502 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
7503
7504         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
7505         domain_id is supplied. Fix CID #241 and corlib's unit tests.
7506
7507 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7508
7509         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
7510         small structures. Fixes #78990.
7511
7512 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7513
7514         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
7515
7516         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
7517
7518 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7519
7520         * appdomain.c:
7521         * marshal.c: don't load all the assemblies from a domain into newly
7522         created ones. The new domains might have different rules and load
7523         assemblies from different locations. Fixes bug #76757.
7524
7525         Patch by Lluis. Conflicts resolved by Brian Crowell.
7526
7527 2006-08-16  Alp Toker  <alp@atoker.com>
7528
7529         * socket-io.c: First half of the fix for #79084.
7530         Set sa_size to the length of the content, not that of the struct.
7531         Don't add NULL suffix to the content, this should be done in
7532         managed code if needed.
7533
7534 2006-08-14  Raja R Harinath  <rharinath@novell.com>
7535
7536         Fix part of #79012
7537         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
7538         mono_metadata_parse_type returns NULL.
7539
7540 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
7541
7542         * normalization-tables.h : new file for string normalization data.
7543         * locales.c, locales.h, icall.c :
7544           added load_normalization_resource() for string normalization,
7545           and icall as well.
7546         * Makefile.am : added normalization-tables.h to the sources.
7547
7548 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
7549
7550         * marshal.c: Add more helper functions to reduce code duplication and use them
7551         everywhere.
7552
7553 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * marshal.c: Fix non-x86 stdcall warnings.
7556         
7557         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
7558         them everywhere.
7559
7560 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
7561
7562         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
7563         type check on multi-dimensional arrays. Fixes #79000.
7564
7565 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
7566
7567         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
7568         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
7569         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
7570         * class-internals.h: add is_com_object to class structure.
7571         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
7572         null checks to COM object marshalling. Fix .ctor call on RCW.
7573         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
7574         
7575         All code is contributed under the MIT/X11 license.
7576
7577 2006-08-09  Dick Porter  <dick@ximian.com>
7578
7579         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
7580         racing mono_monitor_allocator_lock() somewhere, so don't delete
7581         the critical section for now.  Found by running and exiting
7582         monodevelop.
7583
7584 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
7585
7586         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
7587         (ves_icall_System_ComObject_FindInterface): Ditto.
7588         (ves_icall_System_ComObject_CacheInterface): Ditto.
7589
7590         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
7591         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
7592
7593 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7594
7595         * threadpool.c: treat pipes from process asynchronous reads as sockets
7596         when reading from them, so we get select/poll or epoll to wait for
7597         data.
7598
7599 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
7600
7601         * loader.c: Fix a typo (CID #233) in the null check.
7602
7603 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
7606         Hopefully fixes #78949.
7607         
7608         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
7609         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
7610         bytes. Fixes #78972.
7611
7612 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7613
7614         * filewatcher.c: we need to set errno here.
7615
7616 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7617
7618         * filewatcher.c: let Win32Exception get the error value.
7619
7620 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7621
7622         * filewatcher.c: translate errno into win32 errors for Win32Exception
7623         to know what happened.
7624
7625 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * threadpool.c: Fix more warnings.
7628
7629         * assembly.c (search_loaded): Fix warnings.
7630
7631         * threadpool.c (mono_thread_pool_finish): Fix warnings.
7632         (mono_async_invoke): Ditto.
7633
7634 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
7635
7636         * object.c (mono_remote_class_vtable): Need to create proxy vtable
7637         entries for __ComObject type in addition to ComImport types.
7638         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
7639         about hash table.
7640         
7641         All code is contributed under the MIT/X11 license.
7642
7643 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7644
7645         * image.c: avoid tentative loading of modulerefs that contain
7646         no metadata (P/Invoke library names).
7647
7648 2006-07-28  Dick Porter  <dick@ximian.com>
7649
7650         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
7651         mono_loader_lock() somewhere, so don't delete the critical section
7652         for now.  Found by running and exiting monodevelop.
7653
7654 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7655
7656         * filewatcher.c: define the inotify syscalls when we're building on
7657         linux and have sys/syscall.h. The build system might not have support
7658         for inotify but the target system might have it.
7659
7660 2006-07-26  Miguel de Icaza  <miguel@novell.com>
7661
7662         * domain.c: Documentation updates.
7663
7664         * loader.c (mono_free_method): Do not release the method
7665         information if we are being profiled, as profilers will use this
7666         information at shut down to present some data to the user.
7667
7668         This is needed so that the profiler does not crash, as the
7669         profiler tends to keep MonoMethods around, and they might become
7670         invalid if we free these.
7671
7672         (mono_get_method_constrained): Return the original CIL stream
7673         method as well, so verification can be performed against it.
7674
7675 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7676
7677         * filewatcher.[ch]: support for inotify file system watcher.
7678         * icall.c: add new internal calls for the inotify file system watcher.
7679
7680 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7681
7682         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
7683         #78888.
7684
7685 2006-07-20  Dick Porter  <dick@ximian.com>
7686
7687         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
7688         warning.
7689
7690 2006-07-20  Dick Porter  <dick@ximian.com>
7691
7692         * threads.c (start_wrapper): Do the thread cleanup while we still
7693         hold a reference to its object.  Fixes bug 78123.
7694
7695 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
7696
7697         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
7698         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
7699           "managed-to-managed".
7700         * icall.c: Redirect string constructors that take sbyte* to
7701           ves_icall_System_String_ctor_RedirectToCreateString.
7702         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
7703           to CreateString () methods with matching signature.
7704         * reflection.c: Use original security informations for
7705           MONO_WRAPPER_MANAGED_TO_MANAGED.
7706         * security-manager.c: Use original security informations for
7707           MONO_WRAPPER_MANAGED_TO_MANAGED.
7708         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
7709           that is a placeholder and only its address should be used.
7710         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
7711           that is a placeholder and only its address should be used.
7712
7713 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
7714
7715         Begin implementing COM Interop.
7716         * appdomain.c: Increment corlib version.
7717         * class.c: Set ComImport classes' parent to __ComObject.
7718         * loader.c: Mark cominterop methods as such.
7719         * domain.c: Add __ComObject class to MonoDefaults structure.
7720         * image.c: Add 2 hashtables to the image for COM Interop related methods
7721         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
7722         using the mempool allocator
7723         
7724         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
7725         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
7726         declaration for mono_metadata_type_dup_mp.
7727         
7728         * debug-helpers.c: Added strings for two additional wrapper types
7729         * object.c: Create proxy objects for ComImport classes
7730         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
7731         and added __ComObject class to MonoDefaults structure.
7732         
7733         * object-internals.h: Finish MonoRealProxy definition, and add definition of
7734         MonoComInteropProxy and MonoComObject.
7735         
7736         * marshal.c: Added support for COM Interop
7737         (signature_cominterop): Converts managed signature to corresponding
7738         unmanaged COM signature.
7739         (cominterop_get_function_pointer): gets unmanaged function pointer via
7740         COM object vtable
7741         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
7742         (cominterop_get_method_interface): returns interface type that method is defined on
7743         (mono_mb_emit_cominterop_call): emits native call to function pointer
7744         gotten from vtable
7745         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
7746         that matches signature of unmanaged function.
7747         (cominterop_get_native_wrapper): wrapper around adjusted method call.
7748         (cominterop_get_invoke): forwards call from proxy to __ComObject
7749         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
7750         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
7751         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
7752         
7753         * marshal.h: Added Marshal icall declarations.
7754         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
7755         so we can access them in finalizer
7756         
7757 2006-07-14  Dick Porter  <dick@ximian.com>
7758
7759         * object.c (mono_type_initialization_cleanup): Fix a race
7760         condition by temporarily commenting out the critical section
7761         deletion.
7762
7763 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * reflection.c (create_custom_attr): Fix some warnings.
7766         (create_custom_attr_data): Ditto.
7767         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
7768         types. Fixes #78855.
7769
7770 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
7773
7774         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
7775
7776 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
7777
7778         * reflection.c (resolve_object): Add support for DynamicMethod.
7779
7780         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
7781         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
7782
7783 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
7784
7785         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
7786         don't leak GPtrArray's pdata has we have no use (nor free) for it.
7787
7788 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
7789
7790         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
7791         Fixes #77888.
7792
7793 2006-06-30  Raja R Harinath  <rharinath@novell.com>
7794
7795         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
7796         slightly: remove a shadow local variable.
7797
7798 2006-06-29  Raja R Harinath  <rharinath@novell.com>
7799
7800         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
7801         definition that introduces the virtual function slot.
7802         Also fix Coverity #105.
7803
7804 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
7805
7806         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
7807         for dynamic assemblies. Fixes #78724.
7808
7809 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
7812         Fixes #78722.
7813
7814 2006-06-21  Martin Baulig  <martin@ximian.com>
7815
7816         * reflection.c
7817         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
7818         fixes #76484.
7819
7820 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
7823
7824 2006-06-20  Raja R Harinath  <rharinath@novell.com>
7825
7826         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
7827         nor TYPEREFs.
7828         * class.c (mono_class_create_from_typespec): Add 'context' argument.
7829         Inflate result if necessary.
7830         (mono_class_get_full): Remove old version.  Rename from
7831         'mono_class_get' and add 'context' argument.  Pass it to
7832         ..._create_from_typespec.
7833         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
7834         (mono_ldtoken): Revert change below.
7835
7836 2006-06-20  Martin Baulig  <martin@ximian.com>
7837
7838         * class.c (mono_ldtoken): Don't pass the generic context to
7839         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
7840
7841 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
7844         and later freeing it. Fixes #78638.
7845
7846 2006-06-15  Miguel de Icaza  <miguel@novell.com>
7847
7848         * icall.c (mono_class_get_throw): Revert over-zealous error
7849         throwing, the caller for mono_class_get_throw will cope with
7850         errors when classes are not properly initialized already.
7851
7852         The code still copes with loader exceptions though.
7853
7854         Fixes the regression in reftype1 and reftype3 from the CAS tests.
7855         
7856 2006-06-14  Miguel de Icaza  <miguel@novell.com>
7857
7858         Fixes the `make run1' version of RuntimeAbort (to be commited,
7859         source is in Bugzilla).
7860         
7861         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
7862         FALSE on class loading failure instead of returning true.
7863
7864         * class.c (mono_class_create_from_typedef): It is possible for
7865         mono_metadata_interfaces_from_typedef_full to fail if a class is
7866         not found, cope with this.
7867         
7868
7869 2006-06-14  Dick Porter  <dick@ximian.com>
7870
7871         * socket-io.c: 
7872         * process.c: Fix a bunch of signed/unsigned warnings from gcc
7873         4.1.1
7874
7875 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
7876
7877         * culture-info-table.h : oops, forgot to make it nsync with r61548.
7878
7879 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7880
7881         * icall.c: Another fix for building mono in Visual Studio.
7882
7883 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7884
7885         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
7886         
7887 2006-06-09  Martin Baulig  <martin@ximian.com>
7888
7889         * debug-mono-symfile.c: Put this back and really fix it this
7890         time. Sorry for all the trouble.
7891
7892 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * icall.c (mono_class_get_throw): Fix a warning.
7895         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
7896         ReflectionTypeLoadException if needed. Fixes #78606.
7897
7898         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
7899         (mono_class_init): Ditto.
7900
7901         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
7902         ref_only exceptions.
7903         (mono_loader_clear_error): Make this work even if there is no error.
7904
7905 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
7906
7907         * object-internals.h marshal.c marshal.h icall.c: Implement method 
7908         Marshal.GetComSlotForMethodInfo using internal call.
7909
7910 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
7911
7912         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
7913         a function for signalling it.
7914
7915         * class.c (mono_class_from_typeref): Use the new kind of loader error when
7916         a referenced assembly is not found.
7917
7918         * loader.c (mono_loader_error_prepare_exception): Add support for 
7919         LOADER_ERROR_ASSEMBLY. Fix formatting.
7920
7921 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
7922
7923         * domain.c appdomain.c class-internals.h marshal.c: Add support 
7924         for VARIANT marshalling on windows and increment corlib version
7925         since Variant struct was added.
7926
7927 2006-06-03  Miguel de Icaza  <miguel@novell.com>
7928
7929         * debug-mono-symfile.c: Revert Martin's previous patch which broke
7930         stack trace line information:
7931
7932         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
7933         (Martin) when looking up B which is between A and C, return A not C.
7934
7935         Bug is #78573.
7936
7937         Thanks to Alexander Olk for tracking this down.
7938
7939 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
7942         
7943         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
7944         avoid clobbering its value.
7945         (mono_string_to_lpstr): Fix a warning on windows.
7946
7947 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
7948
7949         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
7950
7951         * reflection.c loader.c: Removed references to 'dummy' flag.
7952
7953         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
7954
7955         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
7956         it gets GC tracking.
7957
7958         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
7959         GC tracking.
7960         
7961         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
7962
7963         * marshal.c threadpool.c: Update callers of mono_async_result_new.
7964
7965         * appdomain.c: Bump corlib version.
7966
7967 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
7970         CEE_STIND_REF when working with object references.
7971
7972 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
7973
7974         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
7975         Fixes #78539.
7976
7977 2006-05-30  Miguel de Icaza  <miguel@novell.com>
7978
7979         * loader.c (method_from_memberref): Fix argument value for
7980         mono_loader_set_error_method_load (I was passing the MonoClass
7981         instead of the class name char *).
7982
7983 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
7986         CEE_STIND_REF when working with object references.
7987
7988 2006-05-30  Martin Baulig  <martin@ximian.com>
7989
7990         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
7991         mono_method_full_name() change and replace the ':' with a '.'
7992         here.
7993
7994 2006-05-30  Martin Baulig  <martin@ximian.com>
7995
7996         * debug-mono-symfile.c
7997         (mono_debug_symfile_lookup_location): Fix the algorithm:
7998         when looking up B which is between A and C, return A not C.
7999
8000 2006-05-29  Martin Baulig  <martin@ximian.com>
8001
8002         * mono-debug.h
8003         (MonoDebugMethodInfo): Make the typedef public.
8004         (MonoDebugSourceLocation): New public struct.
8005
8006         * mono-debug.c
8007         (mono_debug_source_location_from_address): Removed.
8008         (mono_debug_source_location_from_il_offset): Removed.
8009         (mono_debug_il_offset_from_address): Removed.
8010         (mono_debug_address_from_il_offset): Removed.
8011         (mono_debug_lookup_method): New public function.
8012         (mono_debug_lookup_source_location): New public function; replaces
8013         the old mono_debug_source_location_from_*() functions; see the
8014         inline documentation.
8015         (mono_debug_free_source_location): New public function.
8016         (mono_debug_print_stack_frame): New public function; see the
8017         inline documentation.
8018
8019         * debug-mono-symfile.c
8020         (mono_debug_find_source_location): Renamed into
8021         mono_debug_symfile_lookup_location(); only take a
8022         `MonoDebugMethodInfo *' and an `offset' argument; added inline
8023         documentation.
8024         (mono_debug_find_method): Renamed into
8025         mono_debug_symfile_lookup_method().
8026
8027 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
8028
8029         * assembly.c (mono_assembly_open_full): Dont overwrite the status
8030         returned by mono_image_open_full ().
8031
8032         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
8033         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
8034         #78517.
8035
8036         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
8037         #78518.
8038
8039 2006-05-27  Miguel de Icaza  <miguel@novell.com>
8040
8041         * class.c (mono_class_from_typeref): handle missing images
8042         earlier, deals with bug #78418.   Refactor code; 
8043
8044         Fix a warning introduced in my previous commit (some stale code
8045         from before I revisited my patch).
8046
8047         * class.c (mono_class_create_from_typedef): On failure, remove the
8048         class from the MonoImage->class_cache as the class is not
8049         initialized;   Fixes the leak pointed out by Paolo.
8050
8051 2006-05-25  Dick Porter  <dick@ximian.com>
8052
8053         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
8054         DeleteCriticalSections until I figure out which one may still be
8055         sometimes locked when mono_thread_cleanup is called.
8056
8057 2006-05-24  Dick Porter  <dick@ximian.com>
8058
8059         * threads.c (mono_thread_cleanup): Move the threading cleanup out
8060         of mono_thread_manage and back into its own function, so it can be
8061         called after the finalizer thread has finished.
8062
8063         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
8064
8065 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
8066
8067         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
8068         Fixes #78495.
8069
8070         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
8071         with non-blittable elements.
8072         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
8073
8074 2006-05-24  Martin Baulig  <martin@ximian.com>
8075
8076         * mono-debug-debugger.h (MonoDebuggerEvent): Added
8077         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
8078
8079         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
8080         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
8081         `mono_debugger_event_handler' to NULL.
8082
8083 2006-05-24  Martin Baulig  <martin@ximian.com>
8084
8085         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
8086
8087 2006-05-24  Martin Baulig  <martin@ximian.com>
8088
8089         * mono-debug-debugger.h
8090         (mono_debugger_create_notification_function): Added
8091         `MonoCodeManager *' argument.
8092
8093 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
8094
8095         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
8096
8097 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
8098
8099         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
8100         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
8101         implementation.
8102
8103 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
8104
8105         * icall.c: precise GC support: objects can't be stored in unmanaged
8106         memory anymore, even if they are kept alive by other references: since
8107         they can move the GC needs to be able to always find them.
8108
8109 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8110
8111         * object.c: precise GC support for static fields. Support
8112         for moving GCs: write barriers and pinned allocation for interned
8113         strings.
8114
8115 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8116
8117         * domain.c, domain-internals.h: precise GC support for the MonoDomain
8118         structure.
8119
8120 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8121
8122         * class.c, gc.c: sgen and precise GC updates.
8123
8124 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8125
8126         * marshal.h, marshal.c: added write barrier wrapper and precise type
8127         fixes.
8128
8129 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
8130
8131         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
8132         support.
8133
8134 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
8135
8136         * reflection.c: precise and sgen GC updates.
8137
8138 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8139
8140         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
8141
8142 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
8145
8146 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
8149         MONO_TYPE_OBJECT. Fixes #78462.
8150
8151 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8152
8153         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
8154         and blittable types.
8155
8156 2006-05-17  Miguel de Icaza  <miguel@novell.com>
8157
8158         * class.c (mono_class_get_exception_for_failure): Implement parts
8159         of a TODO: if the loader error is set (instead of the class
8160         error), we return a Loader exception that can be properly thrown
8161         elsewhere.
8162
8163         This was exposed by some Winforms 2.0 code that I tried to run
8164         (Atsushi pointed me to it).
8165
8166 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
8169         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
8170         
8171         * marshal.c (emit_marshal_vtype): Add limited support for 
8172         UnmanagedType.LPStruct. Fixes #78427.
8173
8174         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
8175         Applied a patch from kangaroo to fix #77523.
8176
8177 2006-05-17  Martin Baulig  <martin@ximian.com>
8178
8179         * threads.c
8180         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
8181         (debugger_thread_created): Removed.
8182         (debugger_thread_exited): Removed.
8183
8184 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
8185
8186         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8187
8188         * object-internals.h (MonoReflectionResource): Sync with managed version.
8189
8190 2006-05-12  Wade Berrier <wberrier@novell.com>
8191
8192         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
8193
8194 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
8195
8196         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
8197         functions try to allocate from the image mempool.
8198
8199 2006-05-12  Dick Porter  <dick@ximian.com>
8200
8201         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
8202
8203 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
8204
8205         * object.c: The FieldGetter and FieldSetter methods require the full
8206         name of the class, not only the name. Fixes bug #78277.
8207
8208 2006-05-11  Miguel de Icaza  <miguel@novell.com>
8209
8210         * loader.c (method_from_memberref): Do not pass the NULL klass to
8211         mono_loader_set_error_() methods.  Pass the non-NULL value
8212         (class). 
8213
8214 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8215
8216         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
8217         (mono_assembly_close): Null out assembly->image->references after freeing it.
8218
8219         * image.c (mono_image_close): Free image->references.
8220         
8221         * reflection.c (mono_image_basic_init): Fix a small memory leak.
8222
8223 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8224
8225         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
8226         before checking if it's NULL (g_assert).
8227
8228 2006-05-10  Martin Baulig  <martin@ximian.com>
8229
8230         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
8231         I thought I already killed that two months ago, but now it somehow reappeared.
8232
8233 2006-05-10  Martin Baulig  <martin@ximian.com>
8234
8235         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
8236
8237 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * reflection.c: Allocate memory for dynamically created methods in the image
8240         mempools.
8241
8242 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8243
8244         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
8245         don't use the ad pointer before checking if it's NULL (g_assert).
8246
8247 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
8250         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
8251
8252         * marshal.c: Allocate all signatures from mempools.
8253
8254         * marshal.c: Allocate some more signatures from mempools.
8255
8256 2006-05-09  Miguel de Icaza  <miguel@novell.com>
8257
8258         * object.c (mono_load_remote_field): The code used to provide a
8259         temporary variable for returning results if the user did not
8260         provide a result pointer.  But our temporary variable was allocted
8261         on the satck.
8262
8263         Fix calling code to always pass a result area.   Coverity ID 103.
8264
8265 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8266
8267         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
8268         value, not the old. Fixes #78312.
8269         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
8270
8271         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
8272         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
8273         per-image cache.
8274
8275         * assembly.c (mono_assembly_close): Free image->references.
8276
8277         * assembly.c (mono_assembly_names_equal): Fix a warning.
8278         (mono_assemblies_cleanup): Cleanup more global data.
8279
8280         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
8281
8282         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
8283         ptr_cache and image->modules.
8284
8285         * image.c (mono_image_init): Allocate array_cache lazily.
8286         
8287 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8288
8289         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
8290         behavior was changed recently and has bad side effects.
8291
8292 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
8295         
8296         * assembly.c (mono_assembly_close): Remove a debug printf.
8297
8298         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
8299
8300         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
8301         to also allow for temporary references between mono_image_open ()/close ().
8302
8303         * domain.c (get_runtimes_from_exe): Add a FIXME.        
8304
8305 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8306
8307         * marshal.c: Fix support for dynamic methods.
8308
8309         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
8310
8311         * marshal.c (mono_marshal_cleanup): New cleanup function.
8312
8313         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
8314         image mempools.
8315
8316         * class.c (mono_class_init): Fix leaking class->nested_classes.
8317
8318         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
8319
8320         * image.c (mono_image_init): Initialize the new cashes.
8321
8322         * image.c (mono_image_close): Destroy the new cashes.
8323
8324         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
8325
8326         * mempool.c (mono_mempool_strdup): New helper function.
8327
8328         * class-internals.h: Add prototype for mono_loader_unlock ().
8329
8330         * domain.c (mono_jit_info_table_find): Fix a warning.
8331         (mono_debugger_check_runtime_version): Ditto.
8332
8333         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
8334         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
8335         functions to these modules.
8336
8337         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
8338         metadata modules.
8339         
8340         * marshal.c (mono_free_bstr): Fix a warning.
8341
8342         * assembly.c (mono_assembly_open_full): Fix another small leak.
8343
8344         * object.c: Fix some unload leaks in the remoting code.
8345
8346         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
8347         function.
8348
8349         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
8350
8351         * reflection.c: Fix some unload leaks in dynamic assemblies.
8352
8353 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
8354
8355         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
8356         * marshal.h: Add BSTR support on Win32
8357         * icall.c: Add BSTR icalls
8358         * metadata.h: Add BSTR enums
8359
8360 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8361
8362         Work to catch the crash from #76795 and turn it into an
8363         exception.   As I stubbed out pieces of the VisualBasic support,
8364         I found a number of places where the code was failing and I added
8365         checks to those places. 
8366         
8367         * metadata.c (do_mono_metadata_parse_generic_class): Make this
8368         function return a status code.  If we fail to parse the signature
8369         from mono_metadata_parse_generic_inst, return FALSE.
8370
8371         * loader.c (mono_get_method_from_token): If we fail to load the
8372         method (mono_class_get) return NULL.   
8373
8374         * (method_from_memberref): Return NULL if we are unable to parse
8375         the method signature
8376
8377         (mono_loader_error_prepare_exception): Since we now use the
8378         loader_error flag internally to stop processing, and obtaining
8379         exceptions that might be thrown will walk this code path the
8380         proper way of going from a MonoLoaderError into a
8381         MonoException was convoluted.   This new routine encapsulates the
8382         process of turning the error into an exception and *clearing* the
8383         error afterwards.
8384         
8385 2006-04-27  Miguel de Icaza  <miguel@novell.com>
8386
8387         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
8388         with missing assemblies), and to cope with:
8389
8390                 * Missing fieldref from a non-existing assembly.
8391                 * Missing methodref from a non-existing assembly.
8392
8393         The first batch of work to address *some* of the issues from 76661.
8394         
8395         * object.c (mono_class_create_runtime_vtable): If we fail to
8396         initialize the class raise the exception here. 
8397
8398         * metadata.c (mono_class_get_overrides_full): If any methods fail
8399         to load return the failure to the caller.
8400
8401         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
8402         flagging assemblies that failed to load.   
8403
8404         Do not crash if we are unable to load the assembly.
8405
8406         (mono_assembly_close): Do nothing with REFERENCE_MISSING
8407         assemblies. 
8408
8409         * loader.c (mono_loader_set_error_type_load): Change the
8410         convention to always pass unallocated strings, so we make our own
8411         copies (I know our own code had duplicated strings before, but
8412         this keeps the normal conventions).
8413         (method_from_memberref): Call mono_loader_set_error_method_load
8414         for all possible failures of loading the class. 
8415         Remove assert, turn into a loader error.
8416
8417         (mono_loader_error_to_exception): Move this routine from mini
8418         (mini_loader_error_to_exception) there was no need to have that in
8419         mini. 
8420
8421         * class.c (mono_class_from_typeref): If we were not able to load
8422         the assembly with mono_assembly_load_reference, call the
8423         mono_loader_set_error_type_load to register the problem.
8424
8425         (mono_class_setup_fields): If we fail to load the type from
8426         mono_metadata_parse_type_full, call mono_class_set_failure and
8427         break from the loop.
8428
8429         If class->exception_type is set, we do not layout the fields as
8430         that might crash the runtime, and instead return (from breaking
8431         from the previous loop).
8432
8433         (mono_class_setup_vtable): This now returns a boolean indicating
8434         whether the table was properly setup.   The decision is driven by
8435         mono_class_get_overrides_full which might run into non-existing
8436         methods. 
8437         
8438         (mono_class_init): Returns TRUE on success or FALSE if there was a
8439         problem in loading the type (incorrect assemblies, missing
8440         assemblies, methods, etc).
8441
8442         When we call mono_class_setup_fields we also check for a potential
8443         error inside this call (either a class exception or a general
8444         loader exception).
8445
8446         (mono_class_create_from_typedef): If the parent fails to load
8447         (calling mono_class_get_full) return NULL.
8448         
8449         ** Important **
8450
8451         calls to mono_metadata_parse_type_full should be checked
8452         everywhere and set the mono_class_set_failure
8453         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
8454
8455         The current patch checks the places where my manually constructed
8456         tests show the errors are showing up, but we should do it
8457         everywhere. 
8458
8459         ** Important2 **
8460
8461         mono_class_init return values should be tested everywhere, like
8462         the previous case this is something that we should audit
8463         everywhere and not only on the cases exposed by the tests I
8464         created. 
8465
8466 2006-04-26  Miguel de Icaza  <miguel@novell.com>
8467
8468         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
8469         boolean parameter and instead pass the information on `options'
8470         parameter (FileOptions).
8471
8472         * icall.c: Register the new signature for MonoIO.Open.
8473
8474         * debug-helpers.c (dis_one): Trying to understand how coverity
8475         works.  Fix Run 5, item 78.
8476
8477 2006-04-26  Dick Porter  <dick@ximian.com>
8478
8479         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
8480         dereference.
8481
8482 2006-04-25  Martin Baulig  <martin@ximian.com>
8483
8484         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
8485
8486         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
8487         debugger_thread_created().
8488         (debugger_gc_push_all_stacks): Don't handle the main thread in any
8489         special way.
8490         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
8491         (mono_debugger_finalize_threads): New function; undo the effects
8492         of mono_debugger_init_threads().
8493         (mono_debugger_create_all_threads): Removed.
8494
8495 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
8496
8497         * image.c (mono_image_close): Tidy up trace messages.
8498
8499         * assembly.c (mono_assembly_close): Ditto.
8500
8501         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
8502         no longer references an already freed assembly. Fixes #78168.
8503
8504 2006-04-21  Dick Porter  <dick@ximian.com>
8505
8506         * threads.c (mono_thread_detach): Fix reference counting when
8507         detaching threads.
8508
8509 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
8512         #78155.
8513
8514 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
8515
8516         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
8517         (mono_type_to_stind): Ditto.
8518
8519         * marshal.c: Use the new helper functions to simplify code.
8520
8521         * image.c (mono_image_close): Add some code for help debug assembly unloading
8522         problems.
8523
8524         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
8525         image mempool.
8526
8527         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
8528         assembly was already loaded in another appdomain. Fixes #78083.
8529
8530 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
8533         referenced assemblies.
8534         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
8535
8536         * domain.c (mono_domain_free): Add a trace message.
8537
8538         * appdomain.c (add_assemblies_to_domain): Ditto.        
8539
8540         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
8541         field.  
8542
8543 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
8546
8547 2006-04-12  Martin Baulig  <martin@ximian.com>
8548
8549         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
8550         `USE_INCLUDED_LIBGC'.   
8551
8552 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
8555         the patch contains ../ and a small directory name later. Hopefully fixes
8556         #78035.
8557
8558 2006-04-10  Martin Baulig  <martin@ximian.com>
8559
8560         Clean up the debugger's thread-handling code.
8561
8562         The debugger's thread-handling code has been moved from
8563         ../mini/debug-debugger.c to threads.c.  We now iterate directly
8564         over the `threads' hash, keep track of exiting threads and also
8565         use proper locking.
8566
8567         We can now debug XSP and XSP based applications with the debugger.
8568
8569         * object-internals.h (MonoThread): Added `gpointer end_stack'.
8570
8571         * threads.h
8572         (MonoThreadCallbacks): Removed; this was only used by the debugger.
8573         (mono_install_thread_callbacks): Likewise.      
8574
8575         * threads.c (mono_thread_callbacks): Removed.
8576         (debugger_thread_created, debugger_thread_exited): New static functions.
8577         (start_wrapper): Call debugger_thread_created().
8578         (thread_cleanup): Call debugger_thread_exited().
8579         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
8580         (mono_debugger_init_threads): New public function.
8581         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
8582         iterate directly over the `threads' hash and also use proper locking.
8583
8584         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
8585
8586         * mono-debug-debugger.h
8587         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
8588
8589 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
8590
8591         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
8592         argument type=array. Fixes #78057.
8593
8594 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
8595
8596         * culture-info-table.h : regenerated. Fixed bug #69652.
8597
8598 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * loader.c metadata.c: Reapply a variant r59116.
8601         
8602         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
8603
8604         * class.c (mono_class_setup_interface_offsets): New internal function.
8605
8606         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
8607         interfaces too. Fixes #77398.
8608
8609         * reflection.c (encode_cattr_value): Add support for 
8610         parameter type=object, argument type=array.
8611         (load_cattr_value): Ditto. Fixes #77916.
8612
8613         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
8614         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
8615
8616         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
8617         a byval char array and CharSet is Ansi.
8618
8619         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
8620
8621 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
8622
8623         * metadata.c: Add some locking comments.
8624         
8625         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
8626         mempool.
8627         (mono_metadata_free_method_signature): Don't free the signature itself.
8628
8629         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
8630
8631         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
8632         reference the same MonoImage.
8633         (mono_assembly_load_from_full): Add an assert.
8634
8635 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * image.c (mono_image_close): Don't put the image we are about to free into the
8638         loaded_images_guid_hash.
8639
8640         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
8641         to reduce code duplication.
8642
8643         * marshal.c: Register the native functions called by this module as icalls, to
8644         somewhat centralize the creation of MonoMethodSignature's.
8645
8646         * loader.c (mono_method_signature): Add a cache for method signatures.
8647
8648         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
8649         the parameter attributes of a method.
8650         (mono_metadata_parse_method_signature_full): Refactored the computation of
8651         parameter attributes into a separate function. Also avoid one allocation in
8652         most cases.
8653
8654         * assembly.c (mono_assembly_close): Ditto.
8655
8656         * image.c (mono_image_close): Log trace messages with INFO level.
8657
8658         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
8659
8660         * image.c reflection.c: Correct reference counting of image modules.
8661         
8662         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
8663         of this function from the image mempool.
8664         
8665         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
8666         to allow more cached types to be used.
8667
8668         * mono-debug.c (mono_debug_add_method): Appled patch from
8669         David S. Miller  <davem@sunset.davemloft.net>: Access 
8670         minfo->lexical_blocks[] entry elements using read32().
8671
8672 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
8673
8674         * loader.c (mono_free_method): No longer free the method header for non-dynamic
8675         methods as it is allocated from the mempool.
8676
8677         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
8678         image mempool.
8679
8680         * metadata-internals.h: Add comments describing the reference counting scheme
8681         used for MonoImage and MonoAssembly.
8682
8683         * image.c assembly.c reflection.c: Rework reference counting of images and 
8684         assemblies so they are freed when the runtime is shut down. Free some 
8685         additional memory structures when an image is unloaded.
8686         
8687 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
8688
8689         * class.c loader.c reflection.c: Allocate more data structures in
8690         the image mempool.
8691
8692 2006-03-31  Miguel de Icaza  <miguel@novell.com>
8693
8694         * icall.c
8695         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
8696         build on pre glib 2.4 systems.
8697
8698 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
8701
8702         * icall.c: Fix some warnings.
8703
8704 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
8705
8706         * culture-info-table.h : regenerated.
8707
8708 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
8709
8710         * threads.c, object-internals.h, verify.c: changed the culture caching
8711         code to use a normal MonoArray for storage so the GC can keep track of
8712         them easily. Fixed bits of the cache logic, too and simplified the
8713         code.
8714
8715 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
8716
8717         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
8718         thread for non-Boehm GCs.
8719
8720 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
8721
8722         * domain.c, object.c, domain-internals.h: reduce the amount of memory
8723         needed to keep track of the data for static fields.
8724
8725 2006-03-29  Raja R Harinath  <rharinath@novell.com>
8726
8727         Fix #75172
8728         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
8729         for interface classes.  Use 'num_methods' instead.
8730         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
8731         before using '->vtable_size' field.
8732
8733 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8734
8735         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
8736         doesn't contain managed pointers, so use a normal hashtable.
8737
8738 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8739
8740         * reflection.c, class-internals.h, domain.c: fixed handling of types
8741         used as values for objects in custom attributes (bug #77915):
8742
8743 2006-03-24  Martin Baulig  <martin@ximian.com>
8744
8745         * class.c (mono_class_setup_fields): Added support for generic
8746         instances; fixes #77580.
8747
8748 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8749
8750         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
8751
8752 2006-03-24  Dick Porter  <dick@ximian.com>
8753
8754         * file-io.c (get_file_attributes): More stat macro breakage.
8755         Fixes bug 77759.
8756
8757 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
8758
8759         * profiler.c: added the file=filename option in the default profiler
8760         to output the profile data to filename.
8761
8762 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8763
8764         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
8765         bug #77877.
8766
8767 2006-03-22  Martin Baulig  <martin@ximian.com>
8768
8769         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
8770         allocated `MonoClassField *' in `fb->handle'.
8771
8772 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8773
8774         * class.c, image.c, metadata-internals.h: implemented new mechanism to
8775         allocate interface ID to save memory and allow better ID reuse on
8776         appdomain unload. setup_generic_vtable () removal from Martin.
8777
8778 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
8779
8780         * object.h, appdomain.c, domain.c, exception.c, icall.c,
8781         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
8782         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
8783         write barriers for reference stores with managed objects accessed with
8784         C structures in the runtime and in embedding programs.
8785
8786 2006-03-20  Raja R Harinath  <rharinath@novell.com>
8787
8788         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
8789         'interface_id' and 'max_interface_id' fields of MonoClasses
8790         representing open generic types.
8791
8792 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
8793
8794         * object.h, object.c, icall.c: added functions to deal with
8795         storing valuetypes that contain references in managed objects.
8796         * reflection.c, string-icalls.c, threads.c, marshal.c: small
8797         fixes and comments around uses of mono_array_addr ().
8798
8799 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
8800
8801         * object.h, icall.c, monitor.c: object.GetHashCode ()
8802         implementation that supports the moving garbage collector.
8803
8804 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8805
8806         * icall.c, threads-types.h, threads.c: implemented finalizer for
8807         LocalDataStoreSlot.
8808
8809 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * metadata.c (mono_type_size): Add a fixme.
8812         (mono_type_stack_size): Ditto.
8813
8814         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
8815         'type_forwarders' field.
8816
8817         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
8818         attribute from net 2.0.
8819
8820         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
8821         from class.c.
8822
8823         * class.c (mono_class_setup_fields): Fix a warning.
8824         
8825         * class.c (mono_class_from_name): Add support for assemblyref entries
8826         in the EXPORTEDTYPE table.
8827
8828         * reflection.c: Add support for handling type forwarders under net 2.0.
8829
8830         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
8831         
8832 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
8833
8834         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
8835         overwriting entries in ModuleBuild->types, also clean up the code
8836         a little. Fixes #77774.
8837
8838 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8839
8840         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
8841         load friend assembly info when present.
8842
8843 2006-03-14  Raja R Harinath  <rharinath@novell.com>
8844
8845         Fix crasher on gtest-158.cs.
8846         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
8847         the return value if the MonoClass we want is yet in an
8848         inconsistent state.
8849         * class.c (mono_class_create_from_typedef): Add an comment
8850         explaining an order dependency between mono_class_setup_parent and
8851         mono_class_setup_mono_type.
8852
8853 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8854
8855         * class.c: documentation updates and events bug fix.
8856
8857 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
8858
8859         * class.c: some cleanup, locking fixes.
8860
8861 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8862
8863         * class.c: fix the generics code to setup nested
8864         type info to the instantiated type (bug #77770).
8865
8866 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
8867
8868         * marshal.c: fixed a few type correctness issues.
8869
8870 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8871
8872         * loader.c: the Set/Get/Addrtess array methods should be public.
8873
8874 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
8877         
8878         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
8879         info->wrapper.
8880
8881 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
8884
8885         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
8886
8887         * mempool.c (mono_mempool_alloc): Speed this up a bit.
8888         (mono_mempool_alloc0): Ditto.
8889
8890 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8891
8892         * socket-io.c:
8893         (create_object_from_sockaddr): it was allocating 4 extra bytes
8894         for the AF_UNIX data. Fixes bug #77747.
8895
8896 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
8897
8898         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
8899
8900 2006-03-09  Dick Porter  <dick@ximian.com>
8901
8902         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
8903         Fixes bug 76966 again.
8904
8905 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
8906
8907         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
8908         names from r57532
8909         * appdomain.c: Bumped corlib version to 48 (due to r57532)
8910
8911 2006-03-07  Martin Baulig  <martin@ximian.com>
8912
8913         * object.c
8914         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
8915
8916 2006-03-07  Martin Baulig  <martin@ximian.com>
8917
8918         * class.c
8919         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
8920         regression introduced in r56970; see gtest-252.cs.
8921
8922         * loader.c (mono_get_method_constrained): Correctly handle generic
8923         methods; see gtest-253.cs.
8924
8925 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
8926
8927         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
8928
8929 2006-03-04  Martin Baulig  <martin@ximian.com>
8930
8931         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
8932         compute the parent type at runtime, just like we're already doing
8933         it for interfaces.
8934
8935         * reflection.c
8936         (mono_reflection_bind_generic_parameters): Don't compute the
8937         parent type anymore.
8938
8939         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
8940
8941 2006-03-04  Martin Baulig  <martin@ximian.com>
8942
8943         * mono-debug-debugger.h
8944         (mono_debugger_create_notification_function): Allocate memory at
8945         runtime and return a pointer to it.
8946
8947 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
8948
8949         * assembly.c: Fix windows build.
8950         
8951         * assembly.c: Fix build.
8952
8953         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
8954
8955         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
8956         
8957 2006-03-03  Dick Porter  <dick@ximian.com>
8958
8959         * process.c
8960         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
8961         Check parameters before dereferencing them.  Fixes Aaron's part of
8962         bug 77393.
8963
8964 2006-03-03  Raja R Harinath  <rharinath@novell.com>
8965
8966         Fix performance regression.
8967         * loader.c (find_method_in_class): Add 'from_class' argument.
8968         Rename 'klass' argument to 'in_class'.  The signature is compared
8969         against the method in 'in_class', and the corresponding method is
8970         returned from 'from_class'.
8971         (find_method): Walk both 'in_class' and 'from_class' in parallel.
8972         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
8973         type definition and generic instantiation in parallel.
8974         (mono_get_method_constrained): Update to changes.
8975
8976 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8977
8978         * threads.c: make sure the domain is correct, too when doing
8979         mono_thread_attach ().
8980
8981 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
8984         windows. Fixes #77683.
8985
8986 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
8987
8988         * object.h, *: introduced specific way to set elements of an array
8989         of references to be used as write barrier. Still need to audit the
8990         uses of mono_array_addr.
8991
8992 2006-03-01  Miguel de Icaza  <miguel@novell.com>
8993
8994         * object-internals.h: New field to cache the assmebly name, patch
8995         from Tambet Ingo (tambet@ximian.com)
8996
8997 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
8998
8999         * decimal.h, class-internals.h, metadata-internals.h,
9000         file-io.h: mark a few function declarations as internal, to
9001         reduce the number of PLT entries.
9002
9003 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9004
9005         * file-io.c: fix typo in warning message.
9006
9007 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
9008
9009         * loader.c: on unix, lookup the "*A" version of a function
9010         if charset is auto as a second option before failing.
9011
9012 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9013
9014         * class.h (mono_class_inflate_generic_method): Revert to two
9015         argument version.
9016         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
9017         (mono_class_inflate_generic_method_full): Add.
9018         * class.c (mono_class_inflate_generic_method_full): Rename from
9019         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
9020         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
9021         * loader.c, reflection.c: Update to changes.
9022
9023 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9024
9025         * icall.c: const fixes and small improvements.
9026
9027 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9028
9029         * threadpool.c: for asynchronous connect(), enable the same workaround
9030         for BSD 6 as for the Mac. Fixes bug #77637.
9031
9032 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
9035         formatted classes. Fixes #77524.
9036
9037 2006-02-24  Raja R Harinath  <rharinath@novell.com>
9038
9039         * class.c (inflate_generic_type): Add a couple more
9040         micro-optimizations.
9041         (inflate_generic_context): Don't use the 'gmethod' from
9042         'inflate_with'.
9043         (mono_class_inflate_generic_method): If the method has generic
9044         parameters, but the passed-in context doesn't have a 'gmethod',
9045         create one.  Use the possibly simplified generic instantiation
9046         from the declaring class instead of the one passed in.
9047
9048 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9049
9050         Make generic method signature and method header handling lazy.
9051         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
9052         (inflate_generic_header): Likewise.
9053         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
9054         parameter to avoid inflating types.
9055         (mono_get_inflated_method): Empty out.
9056         * class.h (mono_class_inflate_generic_method): Update to changes.
9057         * loader.c (mono_get_method_from_token): Don't parse signature for
9058         generic methods, nor methods of generic classes.
9059         (mono_method_signature): Rename from 'mono_method_signature'.
9060         Inflate signature on demand.
9061         (mono_method_get_header): Inflate method header on demand.
9062         * reflection.c: Update to changes.
9063
9064 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9065
9066         * metadata.c (mono_metadata_inflate_generic_inst): If the
9067         instantiation is closed, don't bother expanding it in the new
9068         context.
9069         * class.c (inflate_generic_class): If the generic instantiation
9070         doesn't change after inflation, return the argument itself.
9071         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
9072         Add bounds checks.
9073         (inflate_generic_context): If neither the generic class nor the
9074         generic method instantiations change, return the original context.
9075         * reflection.c (mono_method_get_object): Do
9076         'mono_get_inflated_method' before accessing the ->klass field.
9077         (inflate_mono_method): Don't create a MonoGenericMethod unless
9078         necessary.
9079         (inflate_method): Don't pass a constructed type as the declaring
9080         type of a methodbuilder.
9081
9082 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
9083
9084         * object.c: fix memory overwrite.
9085
9086 2006-02-22  Dick Porter  <dick@ximian.com>
9087
9088         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
9089         it doesn't work any more.
9090         (mono_threads_request_thread_dump): Fix unused variable warnings.
9091
9092 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9093
9094         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
9095         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
9096         the public header file.
9097
9098 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
9099
9100         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
9101
9102 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9103
9104         * class-internals.h, object.c: reduce the size of MonoVTable
9105         and store the interface_offsets array at negative offsets.
9106
9107 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9108
9109         * metadata.c: tweak table descriptors data structures to reduce
9110         size and runtime relocations.
9111
9112 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9113
9114         * marshal.c: fix some types and opcodes to be type-safe
9115         in marshaling wrappers.
9116
9117 2006-02-21  Ankit Jain  <jankit@novell.com>
9118
9119         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
9120
9121 2006-02-21  Raja R Harinath  <rharinath@novell.com>
9122
9123         * metadata.c (get_constraints): Relax debugging checks for monodis.
9124
9125 2006-02-21  Ankit Jain  <jankit@novell.com>
9126
9127         * metadata.c (mono_metadata_load_generic_params): Move the code
9128         checking for ambiguous generic params from here to mono/dis/get.c
9129         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
9130
9131 2006-02-21  Raja R Harinath  <harinath@gmail.com>
9132
9133         Fix assertion triggered when compiling nemerle.
9134         * class.c (mono_get_shared_generic_inst): Rename from
9135         get_shared_inst and make non-static.
9136         * loader.c (mono_get_shared_generic_method): New.  Used to create
9137         the MonoGenericContext-equivalent of a MonoGenericContainer.
9138         (mono_get_method_from_token): Initialize the 'context' field of
9139         the created MonoGenericContainer.
9140         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
9141         * metadata.c (get_constraints): Add sanity check.
9142         * class-internals.h: Add new internal methods.
9143
9144         * reflection.c (verify_safe_for_managed_space): New sanity check.
9145         Currently checks that owner-less generic parameters aren't allowed
9146         in managed space.
9147         (mono_type_get_object): Use it.
9148         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
9149         that are now in mono_type_get_object.
9150         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
9151
9152 2006-02-19  Raja R Harinath  <harinath@gmail.com>
9153
9154         * metadata.c (mono_type_create_from_typespec): Rename from
9155         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
9156         argument and caching of types in the generic container.
9157         (unwrap_arrays, find_generic_param): Remove.
9158         * metadata-internals.h: Update.
9159         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
9160
9161 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
9162
9163         * class.c (mono_class_get_exception_for_failure): Fix a warning.
9164
9165         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
9166         return values. Fixes #77581.
9167
9168         * class.c (mono_fnptr_class_get): Switch name and name_space.
9169
9170         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
9171         classes and add support for [In, Out] attributes.
9172         (mono_marshal_free_asany): Ditto. Fixes #77524.
9173
9174 2006-02-18  Raja R Harinath  <harinath@gmail.com>
9175
9176         * class.c (mono_class_from_generic_parameter): Make more robust to
9177         incomplete MonoGenericContainers from monodis.
9178
9179 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9180
9181         * class-internals.h: added some more exception types.
9182         * class.c, metadata.c: added a few checks to handle missing
9183         types.
9184
9185 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9186
9187         Use owner-less generic-params some more.
9188         * class.c (my_mono_class_from_generic_parameter): Remove.
9189         (mono_class_from_generic_parameter): Handle null image,
9190         param->name and param->owner.
9191         (mono_class_from_mono_type): Update.
9192         (mono_class_create_from_typespec): Remove 'container' parameter.
9193         If that parameter is non-null, the result is always inflated by
9194         'mono_class_get_full' anyway.
9195         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
9196         parameter.
9197         (mono_class_get_full): Update.
9198
9199         * class.c (inflate_generic_type) [GENERICINST]: If the generic
9200         instance is not open, don't bother inflating.
9201         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
9202         parse metadata for inflated classes.
9203         (_mono_class_get): Change GenericContext* parameter to
9204         GenericContainer*.
9205         (mono_class_create_from_typespec): Likewise.  Simplify, and
9206         implement trivially.  All the cases are handled in
9207         mono_class_from_mono_type.  Don't inflate returned class.
9208         (mono_class_get_full): Delegate GENERICINST optimization to
9209         inflate_generic_type.
9210         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
9211
9212 2006-02-16  Dick Porter  <dick@ximian.com>
9213
9214         * socket-io.c (create_object_from_sockaddr): Fix typo.
9215         (create_sockaddr_from_object): Check array lengths before
9216         potentially accessing items off the end.
9217         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
9218         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
9219         (ves_icall_System_Net_Sockets_Socket_Send_internal)
9220         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
9221         length checks to avoid wraparound overflows.
9222         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
9223         contents of the array of sockets
9224         (hostent_to_IPHostEntry2)
9225         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
9226         Check return value of inet_ntop ().
9227         (addrinfo_to_IPHostEntry): Fix typo
9228
9229 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9230
9231         Type metadata parsing doesn't use generic-instantiation information.
9232         * metadata.c (mono_metadata_parse_array_full): Change
9233         MonoGenericContext* parameter to MonoGenericContainer*.
9234         (mono_metadata_parse_type_full): Likewise.
9235         (mono_type_create_from_typespec_full): Likewise.
9236         (mono_metadata_parse_mh_full): Likewise.
9237         (mono_metadata_parse_generic_inst): Likewise.
9238         (do_mono_metadata_parse_generic_class): Likewise.
9239         (do_mono_metadata_parse_type): Likewise.
9240         * metadata-internals.h: Update to changes.
9241         * class.c (mono_class_find_enum_basetype): Likewise.
9242         (mono_class_setup_fields): Likewise.
9243         (mono_class_create_from_typespec): Likewise.
9244         * loader.c (method_from_methodspec): Likewise.
9245         (mono_get_method_from_token): Likewise.
9246         (mono_method_get_header): Likewise.
9247
9248 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9249
9250         * marshal.c: handle additional GENERICINST case (patch from
9251         Thong Nguyen <tum@veridicus.com>).
9252         Fix a few cases where LDIND_I/STIND_I was used for references.
9253
9254 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9255
9256         * reflection.c (mono_reflection_get_token): Remove unused variable.
9257
9258 2006-02-16  Martin Baulig  <martin@ximian.com>
9259
9260         * reflection.c (mono_reflection_get_token): Add support for fields
9261         in instantiated generic types.
9262
9263         * icall.c
9264         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
9265
9266 2006-02-15  Martin Baulig  <martin@ximian.com>
9267
9268         * icall.c
9269         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
9270         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
9271         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
9272         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
9273
9274 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9275
9276         * class.c, metadata.c, metadata.h, object.c, icall.c,
9277         marshal.c: changed mono_type_get_underlying_type () to do
9278         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
9279         Fixed handling of instantiated generic valuetypes (bug #75479).
9280
9281 2006-02-15  Raja R Harinath  <rharinath@novell.com>
9282
9283         * metadata.c (mono_metadata_decode_signed_value): Simplify.
9284         Delegate to mono_metadata_decode_value, and work on the returned value.
9285
9286         * icall.c (ves_icall_MonoType_GetGenericArguments):
9287         Add consistency check here too.
9288         
9289 2006-02-15  Ankit Jain  <jankit@novell.com>
9290
9291         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
9292         char/short etc.
9293
9294 2006-02-15  Ankit Jain  <jankit@novell.com>
9295
9296         * metadata.c (mono_metadata_decode_signed_value): New function to decode
9297         signed values, used only for representing lower bounds of arrays.
9298         (mono_metadata_parse_array_full): Use new
9299         mono_metadata_decode_signed_value to decode lower bounds.
9300
9301 2006-02-14  Martin Baulig  <martin@ximian.com>
9302
9303         * reflection.c
9304         (mono_reflection_get_token): Support "MonoGenericMethod" and
9305         "MonoGenericCMethod" and allow generic instances / methods.
9306
9307 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
9310         to obtain the terminal size using an ioctl.
9311
9312         * object.c (mono_nullable_init): Revert this as nullable reference
9313         types are not valid.
9314         (mono_nullable_box): Ditto.
9315
9316 2006-02-09  Dick Porter  <dick@ximian.com>
9317
9318         * threads.c (mono_thread_detach): Drop a reference to the thread
9319         we're detaching.
9320
9321 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * object.c (mono_nullable_init): Handle nullable reference types.
9324         (mono_nullable_box): Ditto. Fixes #77446.
9325
9326 2006-02-07  Martin Baulig  <martin@ximian.com>
9327
9328         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
9329
9330 2006-02-07  Ankit Jain  <jankit@novell.com>
9331
9332         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
9333         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
9334         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
9335         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
9336         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
9337         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
9338
9339 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * class.c (mono_class_create_generic): Set type_token as well.
9342
9343         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
9344         compatible with MS.
9345
9346 2006-02-02  Martin Baulig  <martin@ximian.com>
9347
9348         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
9349         has never been used so far.
9350
9351 2006-02-02  Martin Baulig  <martin@ximian.com>
9352
9353         * mono-debug-debugger.h: Changed comment at the top of this file;
9354         the header is not installed, but it's safe to #include it from
9355         within the JIT.
9356
9357         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
9358         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
9359
9360 2006-02-02  Martin Baulig  <martin@ximian.com>
9361
9362         * mono-debug.h
9363         (MonoSymbolTable): Removed the `metadata_info' field.
9364
9365         * mono-debug.c
9366         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
9367
9368         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9369         (mono_debugger_add_builtin_types): Removed.
9370         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
9371         (mono_debugger_create_notification_function): We now operate on a
9372         pre-allocated area; take a `gpointer' and return `void'.
9373
9374         * mono-debug-debugger.c
9375         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
9376         (mono_debugger_add_builtin_types): Removed.
9377
9378 2006-02-02  Martin Baulig  <martin@ximian.com>
9379
9380         * threads.c (mono_debugger_create_all_threads): New public method.
9381
9382 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9383
9384         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
9385         breaks on several platforms.
9386
9387 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
9388
9389         * assembly.c: the VS.NET build doesn't supply default values for
9390         MONO_ASSEMBLIES and MONO_CFG_DIR.
9391
9392 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
9395         helper function.
9396
9397         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
9398
9399         * loader.c (method_from_memberref): Fix a warning.
9400
9401         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
9402
9403         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
9404         with explicit layout. Fixes #77433.
9405
9406 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
9409         max_interface_id is initialized before using it. Fixes #77398.
9410         (ves_icall_Type_GetInterfaces): Ditto.
9411
9412 2006-01-30  Raja R Harinath  <rharinath@novell.com>
9413
9414         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9415         allocate memory for parameter attributes when parsing memberref
9416         signatures.
9417         * loader.c (mono_loader_set_error_method_load): Don't warn.
9418         (method_from_memberref): Ensure MissingMethodException gets thrown
9419         if method is not found.  Make warning more informative.
9420
9421 2006-01-29  Raja R Harinath  <harinath@gmail.com>
9422
9423         Fix #77397
9424         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
9425         return true if is byref.
9426         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9427         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
9428         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
9429
9430 2006-01-27  Raja R Harinath  <rharinath@novell.com>
9431
9432         Fix tests/find-method.2.il
9433         * loader.c (find_method, find_method_in_class): Remove is_inflated
9434         argument.  Revert 2006-01-18 change.
9435         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
9436         is generic, search for method in its generic definition.
9437         * class.c (mono_class_setup_vtable_general): Print generic
9438         arguments of generic types in debugging printf.
9439
9440 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
9443
9444         * threads.c (mono_threads_request_thread_dump): New helper function.
9445
9446 2006-01-25  Raja R Harinath  <rharinath@novell.com>
9447
9448         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
9449
9450 2006-01-25  Ankit Jain  <jankit@novell.com>
9451
9452         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
9453         move definition to ..
9454         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
9455         
9456 2006-01-25  Ankit Jain  <jankit@novell.com>
9457             Raja R Harinath  <rharinath@novell.com>
9458
9459         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
9460         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
9461         as necessary.
9462
9463 2006-01-25  Martin Baulig  <martin@ximian.com>
9464
9465         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
9466         `MonoDebuggerThread' into debug-debugger.c.
9467
9468 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9469
9470         * profiler.c: fix printing of data.
9471
9472 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
9473
9474         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
9475           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
9476
9477 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9478
9479         * object.c: fix deadlock related to string interning.
9480
9481 2006-01-23  Martin Baulig  <martin@ximian.com>
9482
9483         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9484
9485         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
9486
9487 2006-01-23  Martin Baulig  <martin@ximian.com>
9488
9489         * mono-debug.h: Moved the prototypes of some functions which are
9490         used by the JIT here from mono-debug-debugger.h.
9491
9492 2006-01-21  Martin Baulig  <martin@ximian.com>
9493
9494         * Makefile.am: Don't install mono-debug-debugger.h.
9495
9496 2006-01-21  Martin Baulig  <martin@ximian.com>
9497
9498         * mono-debug-debugger.h: Enforce the private status of this header
9499         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
9500         Moved some stuff from mono-debugger-jit-wrapper.h here.
9501
9502 2006-01-20  Raja R Harinath  <rharinath@novell.com>
9503
9504         * class.c (mono_class_from_typeref): Add a sanity test to help
9505         catch lack of assembly load/search hooks.
9506
9507 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * marshal.c (emit_struct_conv): Relax the fields with same offset
9510         check even more. Fixes #77230.
9511
9512 2006-01-18  Martin Baulig  <martin@ximian.com>
9513
9514         * loader.c (find_method_in_class): Added `gboolean is_inflated'
9515         argument; if false, we compare the uninstantiated signatures.
9516         (method_from_memberref): Compare the uninstantiated signatures;
9517         fixes #76417.
9518
9519 2006-01-18  Robert Jordan  <robertj@gmx.net>
9520
9521         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
9522         Clear the weak link. Fixes bug #77170.
9523
9524         * gc.c (mono_gchandle_free):
9525         Reflect *-gc.c changes (tiny optimization).
9526
9527 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
9528
9529         * metadata.c (mono_metadata_signature_dup): Applied patch from
9530         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
9531         Fixes #77288.
9532
9533 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * marshal.c (emit_struct_conv): Allow fields with the same offset when
9536         marshalling from native to managed code. Fixes #77230.
9537
9538 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9539
9540         * threadpool.c: fix problem (Mac only) when more than one asynchronous
9541         connect. Fixes bug #77020.
9542
9543 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
9544
9545         * class.c: fixed id assignement for nested interfaces (bug #77275).
9546         Added also better info for --print-vtable debugging.
9547
9548 2006-01-12  Martin Baulig  <martin@ximian.com>
9549
9550         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
9551         interfaces on-the-fly; fixes #76625.
9552
9553         * class-internals.h
9554         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
9555         don't need that anymore.
9556
9557 2006-01-12  Miguel de Icaza  <miguel@novell.com>
9558
9559         * socket-io.c
9560         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
9561         To avoid initing the nested_classes when not needed I turned the
9562         PeerCredData as a toplevel internal class, as it has to be shared
9563         anyways. 
9564
9565         Fixes the CASA issue.
9566
9567 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
9568
9569         * domain.c: Accessors for MonoJitInfo
9570
9571         * profiler-private.h: Add jitinfo to the end jit hook
9572
9573         * profiler.[ch]: Define new hooks, called after jitting which give
9574         the MonoJitInfo that was compiled
9575
9576 2006-01-10  Martin Baulig  <martin@ximian.com>
9577
9578         * class.c (mono_class_setup_events): Add support for generic
9579         classes; fixes #76440.
9580
9581 2006-01-06  Raja R Harinath  <rharinath@novell.com>
9582
9583         Fix #77160.
9584         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
9585         on passed-in method.
9586
9587 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9588
9589         * object.c (mono_runtime_invoke_array): Add Nullable support.
9590
9591         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
9592
9593 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
9594
9595         * file-io.c: Don't consider sockets as directory and avoid an endless
9596         loop. Fix bug #76966.
9597
9598 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9599
9600         * object.c (mono_nullable_init): New helper function.
9601         (mono_nullable_box): Ditto.
9602
9603         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
9604
9605         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
9606
9607         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
9608         
9609 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
9610
9611         * class.c (mono_class_is_assignable_from): Make T assignable to 
9612         Nullable<T>.
9613
9614 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
9615
9616         * appdomain.c: Bump corlib version to 46.
9617         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
9618         serialization purpose) and changed ves_icall_System_Reflection_
9619         Assembly_get_code_base signature to accept a boolean (to escape, or 
9620         not, the assembly code base).
9621
9622 2005-12-23  Dick Porter  <dick@ximian.com>
9623
9624         * icall.c: 
9625         * threads-types.h: 
9626         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
9627         CreateEvent icall now returns "created" boolean parameter.
9628
9629 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
9632         #76967.
9633
9634         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
9635         when attr_klass is an interface. Fixes #77045.
9636
9637 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
9638
9639         * marshal.c (emit_struct_conv): Fix previous patch.
9640         
9641         * marshal.c (emit_struct_conv): Add a check for fields with the same
9642         offset.
9643
9644 2005-12-20  Raja R Harinath  <rharinath@novell.com>
9645
9646         Fix regression in Mono.C5.
9647         * class.c (mono_class_create_generic): If 'klass' is an interface
9648         set up the interface offsets.
9649         (mono_class_is_assignable_from): Don't throw away generic arguments.
9650
9651 2005-12-19  Raja R Harinath  <rharinath@novell.com>
9652
9653         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
9654         type parameters.
9655
9656 2005-12-15  Raja R Harinath  <rharinath@novell.com>
9657
9658         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
9659         dead store.
9660         (do_mono_metadata_parse_generic_class): Don't pass the current
9661         generic context when parsing the type being instantiated: it
9662         cannot use it, anyway.
9663
9664         * loader.c (method_from_memberref): Don't inflate a signature if
9665         it doesn't contain any type parameters.
9666
9667 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
9670
9671 2005-12-14  Martin Baulig  <martin@ximian.com>
9672
9673         * class.c
9674         (mono_type_get_name_recurse): Don't return null for type
9675         parameters and open generic classes.
9676         (mono_class_setup_methods): Don't exclude generic instances.
9677         (mono_get_unique_iid): Use different IDs for different
9678         instantiations of the same generic type.
9679         (mono_class_setup_vtable): Only use setup_generic_vtable() for
9680         open generic instances; create a normal vtable for closed generic
9681         instances.
9682         (mono_class_setup_vtable_general): We're now also called for
9683         closed generic instances.
9684
9685         * reflection.c
9686         (mono_reflection_bind_generic_parameters): Correctly use
9687         mono_metadata_lookup_generic_inst() everywhere.
9688
9689 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
9690
9691         * object.c (mono_class_create_runtime_vtable): Call 
9692         mono_class_setup_vtable ().
9693
9694         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
9695         function.
9696         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
9697         #76959.
9698
9699         * loader.c (mono_loader_set_error_type_load): Print the type load
9700         warnings to the console so they are more visible to the user.
9701         (mono_loader_set_error_method_load): Ditto.
9702
9703         * reflection.c (ensure_runtime_vtable): Revert the last change as it
9704         is still broken.
9705         
9706         * reflection.c (ensure_runtime_vtable): Fix build.
9707
9708         * reflection.c (ensure_runtime_vtable): Disable an optimization which
9709         doesn't work in all cases.
9710
9711 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * object.c (mono_array_new_full): Treat a single dimensional array
9714         with 0 lower bounds as an szarray. Fixes #76973.
9715
9716         * reflection.c (custom_attr_visible): Really fix this.
9717
9718 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
9719
9720         * reflection.c (custom_attr_visible): Allow nested public attributes
9721         as well.
9722
9723         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
9724         interface check.
9725
9726 2005-12-12  Raja R Harinath  <harinath@gmail.com>
9727
9728         * class.c (set_generic_param_owner): Delete.
9729         (mono_class_create_from_typedef): Don't set ->owner field of
9730         generic parameters to "param containers" of enclosing classes.
9731         * reflection.c (mono_reflection_initialize_generic_parameter):
9732         Likewise.
9733
9734 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * reflection.c (custom_attr_visible): Fix build.
9737
9738 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
9739
9740         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
9741         private attributes.
9742         
9743         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
9744         handling of null parameter defaults.
9745
9746 2005-12-09  Raja R Harinath  <rharinath@novell.com>
9747
9748         * class.c (mono_class_from_generic_parameter): Don't set
9749         klass->generic_container.
9750         (my_mono_class_from_generic_parameter): Likewise.
9751
9752 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
9753
9754         * reflection.c (load_public_key): Fix a warning.
9755         (method_encode_code): Fix unaligned accesses.
9756
9757 2005-12-07  Martin Baulig  <martin@ximian.com>
9758
9759         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
9760
9761         * reflection.c
9762         (write_generic_param_entry): Encode our custom attrs.
9763
9764         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
9765
9766 2005-12-07  Martin Baulig  <martin@ximian.com>
9767
9768         * reflection.c (encode_new_constraint): Removed; we don't use the
9769         `NewConstraintAttribute' anymore.
9770
9771 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
9772
9773         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
9774         not fire a TypeResolve event when Assembly.GetType () is called.
9775
9776 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
9777
9778         Beginning of support for nullable types in the runtime. Parts of
9779         this patch are from Martin.
9780
9781         * appdomain.c (MONO_CORLIB_VERSION): Bump
9782
9783         * domain.c (mono_init_internal): get the nullable type
9784
9785         * class.c (mono_class_is_nullable): New method
9786         (mono_class_get_nullable_param): New mehod
9787         (mono_class_create_generic): In types T? set cast_class to T
9788
9789         * class-internals.h (MonoDefaults): new nullable default class
9790         (mono_class_get_nullable_param, mono_class_get_nullable_param):
9791         new methods.
9792
9793 2005-12-05  Raja R Harinath  <rharinath@novell.com>
9794
9795         * metadata.c (select_container): New.  Refactor code to select the
9796         appropriate GenericContainer given the type of generic parameter
9797         we are looking for.
9798         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
9799         not a MonoGenericContext.  Use select_container.  Update parameters.
9800         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
9801         and MONO_TYPE_MVAR.
9802         (unwrap_arrays): Remove duplicate tests.
9803         (find_generic_param): Rename from 'has_same_context'.  Now walks a
9804         generic instantiated class to find any arguments that are generic
9805         parameters.
9806         (mono_type_create_from_typespec_full): Use find_generic_param to
9807         avoid evicting some generic instantiations from the typespec
9808         cache.
9809
9810 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
9811
9812         * reflection.c: fixed writing of doubles on ARM FPA.
9813
9814 2005-12-02  Robert Jordan  <robertj@gmx.net>
9815
9816         * icall.c: Fixed EventInfo.ReflectedType (#76829).
9817
9818 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9819
9820         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
9821         least on SUSE 10 they are not the same (on debian, they are just the
9822         same thing).
9823
9824 2005-12-01  Raja R Harinath  <rharinath@novell.com>
9825
9826         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
9827         DeclaringType for VARs and MVARs.
9828         * class.c (set_generic_param_owner): Fix initialization of owner
9829         fields.
9830
9831 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
9832
9833         * icall.c: fixed Enum.ToObject() to correctly convert the values.
9834
9835 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9836
9837         * threadpool.c: workaround for a bug that shows up on the Mac:
9838         select()+connect() on a blocking socket is not like it should
9839         be, so we proceed to connect() in that case, wasting the I/O
9840         threadpool thread until connect succeedes. Fixes bug #75436.
9841
9842 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9843
9844         * threadpool.c: fix typo when setting file descriptor states.
9845
9846 2005-11-28  Raja R Harinath  <rharinath@novell.com>
9847
9848         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
9849         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9850         create a temporary signature container.
9851         (mono_metadata_parse_generic_param): Update to changes.
9852         (mono_type_create_from_typespec_full): Update to changes.
9853         * loader.c (method_from_memberref): Don't use a
9854         MonoGenericContainer while parsing a memberref signature.
9855         (method_from_methodspec): Remove dead-store of the 'container'
9856         variable.  It's overwritten before use.
9857
9858         * metadata.c (mono_type_create_from_typespec_full): Make debugging
9859         checks tighter.
9860         (mono_metadata_parse_generic_param): Likewise.
9861         * loader.c (find_method_in_class): Does not need a
9862         MonoGenericContainer.  Use 'mono_method_signature' rather than
9863         'mono_method_signature_full'.
9864         (find_method, mono_get_method_constrained, method_from_memberref):
9865         Update to changes.
9866
9867         * metadata.c (mono_type_create_from_typespec_full): Ensure that
9868         owner-less generic-parameters are never evicted from the typespec
9869         cache.
9870
9871         * loader.c (method_from_memberref): Don't use the current context
9872         when parsing signatures.
9873         (method_from_methodspec, mono_get_method_from_token): Update to changes.
9874
9875         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
9876         side-effects in g_assert.
9877         * loader.c (mono_get_method_from_token): Resolve klass earlier so
9878         that we don't potentially lose information.
9879
9880 2005-11-26  Dick Porter  <dick@ximian.com>
9881
9882         * icall.c:
9883         * threads.c: icalls to implement basic (ie, not named)
9884         System.Threading.Semaphore.
9885
9886 2005-11-24  Dick Porter  <dick@ximian.com>
9887
9888         * process.c
9889         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9890         Use GetProcessId() if it's available.
9891
9892 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
9895
9896 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9897             Ankit Jain  <jankit@novell.com>
9898
9899         * loader.c (mono_get_method_from_token): Initialize 'method' field
9900         of all generic parameters before parsing the signature.  Remove
9901         code that "fixed"-up MVAR references.
9902
9903 2005-11-23  Ankit Jain  <jankit@novell.com>
9904
9905         * metadata.c (mono_metadata_has_generic_params):
9906         (mono_metadata_load_generic_param_constraints):
9907         (mono_metadata_load_generic_params): Move duplicate code ...
9908         (mono_metadata_get_generic_param_row): ... here. Returns the
9909         first row-id in GenericParam table for a given owner (token).
9910         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
9911         prototype.
9912
9913 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9914             Ankit Jain  <jankit@novell.com>
9915
9916         * metadata.c (mono_metadata_class_equal): Pass signature_only when
9917         comparing VARs too.
9918         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
9919         type->data.generic_param only if the type is an MVAR.
9920         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
9921         leak owner-less VARs and MVARs into managed space.
9922
9923 2005-11-21  Martin Baulig  <martin@ximian.com>
9924
9925         * class-internals.h
9926         (MonoMethod): Moved the `generic_container' here from
9927         `MonoMethodNormal' since we now also need it for
9928         `MonoMethodPInvoke';
9929         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
9930         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
9931         an union containing both `MonoMethodNormal' and
9932         `MonoMethodPInvoke'.
9933
9934         * loader.c
9935         (mono_get_method_from_token): Allow implementing generic methods
9936         as interncalls.
9937
9938         * threads.c
9939         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
9940         icall.
9941
9942 2005-11-17  Dick Porter  <dick@ximian.com>
9943
9944         * icall.c: 
9945         * process.h: 
9946         * process.c: Split the Process Start_internal icall into
9947         ShellExecuteEx_internal and CreateProcess_internal, which are
9948         called depending on whether UseShellExecute is true.  Fixes bug
9949         76670.
9950
9951         * appdomain.c (MONO_CORLIB_VERSION): Incremented
9952
9953 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
9954
9955         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
9956         'msize' parameters, use the information in 'mspec' instead.
9957         (emit_object_to_ptr_conv): Ditto.
9958
9959         * marshal.c (emit_struct_conv): Handle explicit layout structs with
9960         fields out of order. Fixes #76733.
9961
9962 2005-11-17  Ankit Jain  <jankit@novell.com>
9963
9964         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
9965
9966 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
9967
9968         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
9969           bug #76575.
9970
9971 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
9974         for types with non-auto layout. Fixes #76717.
9975
9976 2005-11-16  Ankit Jain  <jankit@novell.com>
9977
9978         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
9979         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
9980         if generic_context is null.
9981           (mono_metadata_generic_param_equal): param->owner can be null.
9982           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
9983         null.
9984
9985 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
9988         the correct value.
9989
9990 2005-11-15  Martin Baulig  <martin@ximian.com>
9991
9992         * object.c (set_value): Use mono_class_from_mono_type() instead of
9993         the hack for generic instances; fixes #76136.
9994
9995 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
9998         fields.
9999
10000         * image.c (load_metadata_ptrs): Initialize the new fields.
10001
10002         * reflection.c (create_dynamic_mono_image): Ditto.
10003
10004         * reflection.c (build_compressed_metadata): Use the new fields.
10005
10006         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
10007         icall.
10008
10009         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
10010         icall.
10011         
10012 2005-11-15  Ankit Jain  <jankit@novell.com>
10013             Raja R Harinath  <harinath@gmail.com>
10014
10015         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
10016         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
10017         new per-generic_container cache if the cached MonoType's context matches
10018         the current context.
10019           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
10020         to the expected context.
10021           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
10022
10023 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10024
10025         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
10026         we changed the signature of an icall.
10027         * icall.c: Modify to mono_double_ParseImpl return true/false 
10028         depending on the success, instead of throwing the exception. This will
10029         help us in Double.TryParse methods.
10030         
10031 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
10032
10033         * marshal.c (emit_marshal_object): Throw an exception when
10034         marshalling 'object' instead of crashing. Fixes #76696.
10035
10036 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * class-internals.h: Add prototype for mono_type_get_full_name ().
10039
10040 2005-11-11  Dick Porter  <dick@ximian.com>
10041
10042         * threads.c (mono_thread_manage): Make sure the main thread has
10043         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
10044
10045 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10046
10047         * loader.c (mono_loader_set_error_type_load): Log a warning to the
10048         console about the missing type.
10049         (mono_loader_set_error_method_load): Ditto.
10050
10051 2005-11-09  Miguel de Icaza  <miguel@novell.com>
10052
10053         * mono-config.c (mono_get_config_dir): Set the system defaults if
10054         none is specified.
10055
10056         * assembly.c (mono_set_dirs): New API entry point to set the
10057         assembly and the config directory in one call
10058
10059 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
10060
10061         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
10062         the ftnptr was created from a delegate in a domain other than the
10063         current domain. Fixes #75377.
10064
10065         * exception.h exception.c: Add mono_get_exception_not_supported ().
10066
10067 2005-11-08  Martin Baulig  <martin@ximian.com>
10068
10069         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
10070
10071 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
10072
10073         * security-manager.h: Added definitions to deal with strongname key 
10074         pairs bigger (and smaller) than 1024 bits.
10075         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
10076         adjust wrt the public key length being used.
10077
10078 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10079
10080         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
10081           Windows build (r51396-51397).
10082
10083 2005-11-03  Martin Baulig  <martin@ximian.com>
10084
10085         * class.c (mono_class_setup_vtable_general): Also add generic
10086         methods to the vtable; fixes #76581.
10087
10088 2005-11-01  Miguel de Icaza  <miguel@novell.com>
10089
10090         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
10091         sure that we lookup GetString method from the System.Text.Encoding
10092         class, not the derived class or we get an empty method.
10093
10094         Fixed class #76612.
10095
10096 2005-10-25  Miguel de Icaza  <miguel@novell.com>
10097
10098         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
10099         if it has been previously set (embedders). 
10100
10101         Make mono_set_rootdir available also on Unix.
10102
10103 005-10-24  Robert Jordan  <robertj@gmx.net>
10104
10105         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
10106
10107 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10108
10109         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
10110         only calls which are made to native code use this flag.
10111
10112         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
10113
10114 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10115
10116         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
10117         Add support for FieldBuilders.
10118
10119 2005-10-29  Martin Baulig  <martin@ximian.com>
10120
10121         * mono-debug.c
10122         (mono_debug_using_mono_debugger): New public method; returns
10123         whether we're running inside the debugger.
10124
10125 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
10128         for Method/Constructor/FieldBuilders.
10129
10130 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10131
10132         * reflection.c (module_add_cattrs): Save custom attributes for global methods
10133         and fields as well.
10134
10135 2005-10-26  Martin Baulig  <martin@ximian.com>
10136
10137         * mono-debug-debugger.c
10138         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
10139
10140 2005-10-24  Raja R Harinath  <harinath@gmail.com>
10141
10142         * icall.c (base64_to_byte_array): Don't pass an out-of-range
10143         integer to isspace.
10144
10145 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
10148         when passing valuetypes byref. Fixes #76502.
10149
10150 2005-10-19  Jackson Harper  <jackson@ximian.com>
10151
10152         * profiler.c: Don't put a . in front of types that are not in a
10153         namespace.
10154
10155 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10156
10157         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
10158
10159 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
10160
10161         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
10162         #76436.
10163         (mono_marshal_get_ldflda_wrapper): Fix a warning.
10164
10165 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10166
10167         * assembly.c metadata-internals.h icall.c: Define an additional
10168         parameter for mono_assembly_name_parse_full, so we can avoid creating
10169         S.R.AssemblyName.Version when no version info wasn't passed.
10170         
10171 2005-10-09  Miguel de Icaza  <miguel@novell.com>
10172
10173         * class.c (mono_type_get_full_name): Reimplement method that was
10174         removed. 
10175
10176         * image.c: Some docs
10177
10178 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10179
10180         * profiler.c (output_newobj_profile): Fix printing of Total memory
10181         on x86.
10182
10183 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10184
10185         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
10186
10187 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
10188
10189         * threads.c: remove debug output.
10190
10191 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10192
10193         * threads.c (mono_thread_manage): Fix crashes if more than 64
10194         threads need to be aborted. Hopefully fixes #75899.
10195
10196         * assembly.c (mono_stringify_assembly_name): New helper function.
10197
10198         * class.c: Use mono_stringify_assembly_name instead of the similar
10199         static function.
10200
10201         * assembly.h assembly.c: Add support for calling a postload search 
10202         hook if an assembly cannot be loaded.
10203
10204         * appdomain.c: Register new search hooks which call the AssemblyResolve
10205         events in AppDomain. Fixes #75231
10206
10207 2005-10-07  Martin Baulig  <martin@ximian.com>
10208
10209         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
10210         methods without debug info.
10211
10212 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10213
10214         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
10215         wrappers.
10216
10217 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10218
10219         * file-io.c: now that we return symlinks, use lstat and, when the file
10220         is a symbolic link, stat, to get the file attributes. Also avoid the
10221         conversion to/from utf16/external.
10222
10223 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * class.c (mono_class_layout_fields): Compute klass->has_references
10226         correctly if an embedded valuetype is not yet initialized. Fixes
10227         #76331.
10228
10229 2005-10-04  Martin Baulig  <martin@ximian.com>
10230
10231         * metadata.c
10232         (mono_metadata_load_generic_param_constraints): New public
10233         function; splitted the constraints loading out from
10234         mono_metadata_load_generic_params().
10235
10236         * class.c (mono_class_create_from_typedef): Call
10237         mono_metadata_load_generic_param_constraints() after setting up
10238         the type and creating our parent; fixes #75329.
10239
10240 2005-10-04  Martin Baulig  <martin@ximian.com>
10241
10242         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
10243         non-dynamic parent classes.
10244
10245 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10246
10247         * file-io.c : win32 build fix (ETXTBSY seems not found).
10248
10249 2005-10-04  Martin Baulig  <martin@ximian.com>
10250
10251         * reflection.c
10252         (mono_image_get_methodspec_token): Make the cache actually work;
10253         fixes #75974.
10254
10255 2005-10-04  Martin Baulig  <martin@ximian.com>
10256
10257         * class.c (mono_class_name_from_token): Removed the unneccessary
10258         `MonoGenericContext *' argument.
10259
10260 2005-10-04  Martin Baulig  <martin@ximian.com>
10261
10262         * loader.c
10263         (method_from_methodspec): Make the caching work again; fixes the
10264         performance regression from #76262.
10265
10266 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10267
10268         * file-io.c:
10269         * file-io.h:
10270         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
10271         GetFileSystemEntries that performs the same work but without going
10272         into io-layer, locking, etc.
10273
10274 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10275
10276         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
10277         ThreadState_Stopped as well. Fixes #76047.
10278
10279 2005-09-29  Martin Baulig  <martin@ximian.com>
10280
10281         * class.c
10282         (inflate_generic_context): If the new context has a `gmethod', set
10283         its `container' that that gmethod's `container'.
10284
10285         * metadata.c
10286         (mono_metadata_parse_generic_param): Simplify things;
10287         `generic_container = generic_context->container;' is just fine.
10288
10289         * loader.c (method_from_methodspec): Code cleanups.
10290
10291 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
10292
10293         * decimal.c: fix warning (and let gcc generate correct
10294         code on ARM with optimizations).
10295
10296 2005-09-28  Martin Baulig  <martin@ximian.com>
10297
10298         * loader.c
10299         (method_from_memberref): Added `MonoGenericContext *class_context'
10300         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
10301         (method_from_methodspec): If we're a memberref, use the enclosing
10302         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
10303
10304 2005-09-28  Martin Baulig  <martin@ximian.com>
10305
10306         * object.c (mono_runtime_invoke_array): Added support for
10307         MONO_TYPE_GENERICINST; fixes #75917.
10308
10309 2005-09-27  Martin Baulig  <martin@ximian.com>
10310
10311         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
10312         `k->byval_arg.type' to determine the actual type.
10313
10314         * loader.c (method_from_methodspec): Removed some hacks.
10315
10316 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10317
10318         * class-internals.h (mono_field_is_deleted): Do the test for
10319         rtspecialname before we check the actual name of the field. This
10320         prevents us from dereferencing a pointer into the string table,
10321         saving us from accessing a few pages
10322
10323         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10324         macros. This will allow a deadlock debugger to easily be plugged
10325         in.
10326
10327 2005-09-27  Martin Baulig  <martin@ximian.com>
10328
10329         * loader.c (method_from_methodspec): Create a "signature"
10330         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
10331
10332 2005-09-27  Martin Baulig  <martin@ximian.com>
10333
10334         * class.c
10335         (inflate_generic_class): Correctly set the new context's
10336         container.
10337
10338         * loader.c
10339         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
10340         instead of a `MonoGenericContext *'.
10341         (mono_method_signature_full): Take a `MonoGenericContainer *'
10342         instead of a `MonoGenericContext *'.
10343
10344         * metadata.c
10345         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
10346         instead of a `MonoGenericContext *'.
10347         (mono_metadata_parse_method_signature_full): Likewise.
10348
10349 2005-09-26  Martin Baulig  <martin@ximian.com>
10350
10351         * class.c
10352         (mono_class_from_generic_parameter): Set `klass->generic_container'
10353         (mono_class_from_generic_parameter): Likewise.
10354         (mono_bounded_array_class_get): We inherit the generic container
10355         from the element class.
10356
10357         * loader.c
10358         (find_method, find_method_in_class): Take a `MonoGenericContext *'
10359         argument rather than computing it here.
10360         (method_from_memberref): Correctly set the generic context before
10361         parsing the signature.  Fixes #75681.
10362
10363 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * object.c (mono_class_has_special_static_fields): Fix warnings.
10366
10367 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10368
10369         * assembly.c: Add parse_public_key function, to
10370         par the public keys. Also added mono_assembly_name_parse_full,
10371         to define it the parsed key should be freed or not.
10372         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
10373         to parse a long format assembly name.
10374         * metadata-internals.h: Keep mono_assembly_name_parse_full as
10375         private, since calling it to preserve the key requires
10376         freeing it manually.
10377         
10378 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
10379
10380         * locales.c : removed HAVE_ICU part.
10381
10382 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10383
10384         * object.c (mono_class_create_runtime_vtable): Avoid calling 
10385         field_is_special_static if the klass has no special static fields.
10386
10387         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
10388         (MonoCachedClassInfo): Likewise.
10389
10390         * object.c (mono_class_has_special_static_fields): New helper function.
10391
10392 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * class.c (mono_class_create_from_typedef): Don't call 
10395         interfaces_from_typedef_full for enums.
10396         (mono_class_create_from_typedef): Compute the base types of enums directly
10397         without calling mono_class_setup_fields ().
10398         (mono_class_find_enum_basetype): New helper function.
10399
10400         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
10401         one place inside the string heap.
10402         
10403 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
10404
10405         * class.c: locking fixes, code cleanups, some docs added.
10406         Allocate some data structures in the image mempool.
10407
10408 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10409
10410         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10411         the example code.
10412         
10413 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
10414
10415         * class-internals.h, class.c, reflection.c: reduce memory taken by
10416         MonoClass.
10417
10418 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
10419
10420         * metadata.c, metadata.h, loader.h: documentation updates, code and
10421         API cleanups.
10422
10423 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10426         the example code.
10427
10428         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
10429         page faults caused by the runtime while reading metadata.
10430
10431 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10432
10433         * socket-io.c: the field names were changed 3 months ago and no one
10434         realized until bug #76077 got filed!
10435
10436 2005-09-20  Martin Baulig  <martin@ximian.com>
10437
10438         * icall.c (assembly_icalls): Removed some unused debugger icalls.
10439
10440 2005-09-20  Martin Baulig  <martin@ximian.com>
10441
10442         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
10443         write the rank into the class entry.
10444
10445 2005-09-20  Martin Baulig  <martin@ximian.com>
10446
10447         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
10448
10449 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10452
10453         * icall.c (custom_attrs_defined_internal): New icall.
10454
10455         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
10456         function.
10457         (mono_custom_attrs_construct_by_type): New helper function.
10458
10459 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
10460
10461         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
10462         terminate the resulting string. Fixes #76123.
10463
10464 2005-09-16  Martin Baulig  <martin@ximian.com>
10465
10466         * mono-debug.c
10467         (mono_debug_add_method): Ignore inflated methods for the moment.
10468
10469 2005-09-14  Martin Baulig  <martin@ximian.com>
10470
10471         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
10472
10473 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
10474
10475         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
10476         return a success/failure indication.
10477         (mono_metadata_interfaces_from_typedef_full): Ditto.
10478         (get_constraints): Ditto.
10479
10480 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * marshal.c (emit_marshal_array): Fix handling of null arrays.
10483         
10484         * marshal.c (emit_marshal_array): Add support for returning string
10485         arrays from delegates. Fixes #76063.
10486
10487         * marshal.c: Use the emit_ldloc/stloc macros where possible.
10488
10489 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10490
10491         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
10492         icall.
10493
10494 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * reflection.c icall.c: Fix after mono_get_exception_type_load
10497         signature change.
10498
10499         * assembly.c (mono_assembly_get_assemblyref): New helper function.
10500         (mono_assembly_load_reference): Use the new helper.
10501
10502         * class-internals.h (MonoLoaderError): New structure containing 
10503         information about type loading errors.
10504
10505         * class-internals.h loader.c: Add APIs to store per-thread loader
10506         error information.
10507
10508         * loader.c class.c: Set the loader error if needed.
10509
10510         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
10511
10512 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
10513
10514         * decimal.c: fixed to handle the broken ARM fp format.
10515
10516 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
10517
10518         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
10519         broken.
10520
10521 2005-09-06  Martin Baulig  <martin@ximian.com>
10522
10523         * domain.c (supported_runtimes): Added v2.0.50727.
10524
10525 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
10526
10527         * culture-info.h: reduce the size of some structures.
10528
10529 2005-09-05  Martin Baulig  <martin@ximian.com>
10530
10531         Reflect latest API changes in the August CTP.
10532
10533         * icall.c
10534         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
10535         ("MonoType.HasGenericArguments"): Removed.
10536         ("MonoMethod.BindGenericParameters"): Renamed to
10537         "MakeGenericMethod".
10538         ("MethodBuilder.BindGenericParameters"): Renamed to
10539         "MakeGenericMethod".    
10540
10541 2005-09-05  Martin Baulig  <martin@ximian.com>
10542
10543         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
10544
10545 2005-09-05  Martin Baulig  <martin@ximian.com>
10546
10547         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10548
10549         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
10550         generic_container is non-NULL.
10551
10552 2005-09-05  Martin Baulig  <martin@ximian.com>
10553
10554         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10555
10556         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
10557
10558 2005-08-29  Michal Moskal  <malekith@nemerle.org>
10559
10560         * reflection.c (encode_locals,
10561         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
10562         for large generic types.
10563
10564 2005-09-05  Martin Baulig  <martin@ximian.com>
10565
10566         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10567
10568         * class.c (mono_dup_array_type): New public method.
10569         (mono_metadata_signature_deep_dup): New public method.
10570         (dup_type): Correctly duplicate array and function types.
10571
10572 2005-09-05  Martin Baulig  <martin@ximian.com>
10573
10574         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10575
10576         * reflection.c (get_default_param_value_blobs): Handle generic types
10577         and generic methods.
10578
10579 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
10580
10581         * class.c: Fixed error reporting (method/class were inversed) for 
10582         inheritance demands.
10583         * security-manager.c|h: Added the AppDomain when calling the managed
10584         System.Security.SecurityManager.InheritanceDemand method.
10585
10586 2005-09-01  Raja R Harinath  <rharinath@novell.com>
10587
10588         * reflection.c (encode_marshal_blob): 'marshaltype' and
10589         'marshaltyperef' are alternate sources for the custom marshaler
10590         name.
10591
10592 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
10593
10594         * class.c: fix creation of array classes with rank == 1
10595         (patch by Ankit Jain <jankit@novell.com>).
10596
10597 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
10598
10599         * object.c: fix check for creating the bound data for arrays vs
10600         szarrays.
10601
10602 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10603
10604         * object.c: configuration file name is now based on the executable name,
10605         not the image name. Fixes bug #75931.
10606
10607 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
10608
10609         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
10610         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
10611
10612 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
10613
10614         * rand.c: Use wincrypt.h instead of WinCrypt.h.
10615
10616 2005-08-24  Ankit Jain  <jankit@novell.com>
10617             Raja R Harinath  <rharinath@novell.com>
10618
10619         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
10620           called by it recursively.
10621           (mono_class_init): Remove special case in pending_init handling, since it's
10622           superseded by the fix to mono_class_from_typeref.
10623
10624 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10625
10626         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
10627         BROKEN_THREAD_START stuff.
10628
10629 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
10630
10631         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
10632         trampoline.
10633
10634         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
10635         
10636         * object.c (mono_delegate_ctor): Replace the original function address with
10637         a delegate trampoline.
10638
10639 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
10640
10641         * icall.c: add boolean argument to base64_to_byte_array and 
10642         InternalFromBase64String to control whether a whitespace-only string
10643         is allowed (or should casue a FormatException to be thrown). We need
10644         this as the behavior has changed between MS.NET 1.x and 2.0, and we
10645         to match the MS behaviour in both profiles.
10646         * appdomain.c: Bump corlib version.
10647
10648 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10649
10650         This patch implements a big portion of publisher policy
10651         support, used to bind assembly versions and redirect
10652         one assembly from version A to version B.
10653
10654         * assembly.c:
10655         New GSList loaded_assembly_bindings, for storing the cached
10656         assembly bindings.
10657         (assembly_binding_maps_name): New static function for checking if a 
10658         assembly binding information maps an assembly name.
10659         (mono_assembly_binding_info_free): New function for freeing
10660         assembly binding information resources.
10661         (get_publisher_policy_info): New static function for retrieving 
10662         assembly binding information from a MonoImage.
10663         (compare_versions): New static function for comparing an assembly
10664         binding information data and the version of an assembly name.
10665         (check_policy_versions): New static function for checking if an
10666         assembly binding info mapping an assembly name is valid for it.
10667         (mono_assembly_load_publisher_policy): New static function for
10668         loading the 'policy.major.minor.MyAssembly' image for an assembly
10669         with an assembly name 'aname'.
10670         (mono_assembly_bind_version): New static function for updating
10671         assembly redirection.
10672         (mono_assembly_apply_binding): New static function for applying
10673         assembly binding.
10674         (search_binding_loaded): New static function for searching 
10675         loaded assembly binding infos in the cache domain.
10676         (mono_assembly_load_full): Don't apply assembly binding for
10677         reflection only assemblies.
10678
10679         * metadata-internals.h: Add MonoAssemblyBindingInfo,
10680         which contains information about assembly binding. Also
10681         declare signature for mono_config_parse_publisher_policy ()
10682         function, used to retrieve pub policy info.
10683         
10684         * mono-config.c:
10685         (publisher_policy_start): New static function used to parse publisher 
10686         policy config files.
10687         (publisher_policy_parser): New static MonoParseHandler containing 
10688         the functions used when parsing config files.
10689         (mono_config_parse_publisher_policy): New function for parsing
10690         publisher policy files.
10691         
10692 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
10693
10694         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
10695
10696         * marshal.c (mono_delegate_free_ftnptr): Ditto.
10697
10698         * object.c (mono_get_addr_from_ftnptr): New helper function.
10699
10700         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
10701
10702         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10703
10704 2005-08-19  Dick Porter  <dick@ximian.com>
10705
10706         * threads.c, threads.h, appdomain.c, appdomain.h,
10707         profiler-private.h, monitor.c, object.c, object-internals.h,
10708         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
10709         store the thread ID, so it can hold a 64 bit value if needed.
10710
10711 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
10712
10713         * reflection.c (mono_reflection_create_dynamic_method): Store the
10714         handle class into the method references as well so ldtoken works in
10715         dynamic methods.
10716
10717         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
10718         types.
10719
10720 2005-08-19  Ankit Jain <jankit@novell.com>
10721
10722         Fix #75847.
10723         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
10724           here rather than using the method signature of a arbitrary function
10725           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
10726           two arguments.
10727           Hack done with Harinath.
10728
10729 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10730
10731         * threadpool.c: disable printing stack traces when we get a exception
10732         in a threadpool thread. I need to do more testing to figure out which
10733         cases actually print this. Fixes bug #75828.
10734
10735 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10736
10737         * icall.c: there might be ignored whitespace after the last '='. This
10738         fixes length computation and bug #75840.
10739
10740 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
10741
10742         * assembly.c (mono_assembly_load_full): Consider .exe extension as
10743         well. Fixes #75809.
10744
10745         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
10746         #75784.
10747         
10748         * reflection.c (create_custom_attr_data): Ditto.
10749
10750 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
10751
10752         * locales.c, culture-info.h : removed RegionLCIDMap.
10753         * culture-info-tables.h : regenerated.
10754
10755 2005-08-16  Martin Baulig  <martin@ximian.com>
10756
10757         * class.c (mono_type_get_name_recurse): Small fix.
10758
10759 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
10760
10761         * locales.c : indentation fixie.
10762
10763 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
10764
10765         * object-internals.h,
10766           locales.h,
10767           locales.c,
10768           culture-info.h,
10769           icall.c : added RegionInfo table support.
10770         * culture-info-table.h : regenerated for region support.
10771
10772 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
10773
10774         * reflection.c (resolve_object): handle all kinds of MonoMethod
10775         including generic ones
10776
10777 2005-08-12  Ankit Jain <jankit@novell.com>
10778
10779         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
10780           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
10781
10782 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
10783
10784         * process.c: Don't close a thread handle when it's NULL. This is a
10785         workaround for bug #75733.
10786
10787 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
10788
10789         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
10790
10791 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
10792
10793         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
10794
10795 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10796
10797         * threadpool.c: if a work item in the thread pool has a callback that
10798         catches a exception, don't propagate it after invoking the callback.
10799         Fixes bug #75336.
10800
10801 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
10802
10803         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
10804
10805         * class-internals.h (MonoCachedClassInfo): Add some new fields.
10806
10807         * class.c (mono_class_init): Load field info lazily in the AOT case.    
10808
10809         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
10810
10811 2005-08-03  Ankit Jain  <jankit@novell.com>
10812
10813         Fix #75683.
10814         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
10815           PInvoke calling convention is 0.
10816
10817 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
10818
10819         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
10820         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
10821
10822 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
10823
10824         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
10825         to handle threads not started by the GC (patch by Michael Meeks
10826         <michael.meeks@novell.com>).
10827
10828 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
10829
10830         * reflection.c: Make buffer used in emitting types larger for some
10831         big generic types (patch by Michal Moskal).
10832
10833 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
10834
10835         * mono-debug.c: Fix some (not all) alignment problems.
10836
10837 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10838
10839         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
10840         Invoke mono_image_load_from_data_full passing the refonly
10841         parameter.
10842
10843         * assembly.c
10844         (mono_assembly_open_from_bundle): Add the refonly argument, 
10845         in order to pass it to other methods it calls to.
10846         (do_mono_assembly_open): Add the refonly argument, in order 
10847         to pass it to other methods it calls to.
10848         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
10849         the refonly parameter to it.
10850
10851         * image.c: Add loaded_images_refonly_hash and
10852         loaded_images_refonly_guid_hash to cache the reflection
10853         only loaded images.
10854         (mono_images_init): Initialize the hash tables used for
10855         caching the reflection only images.
10856         (load_modules): Invoke mono_image_open_full passing the refonly
10857         parameter to load the modules the correct way.
10858         (build_guid_table): Add the refonly argument, to re-build the 
10859         correct hash table.
10860         (do_mono_image_open): Added the refonly argument, in order to
10861         define it for the loaded image.
10862         (mono_image_loaded_full): New function, which receives an
10863         additional parameter to look for the image in the refonly or
10864         non-refonly section.
10865         (mono_image_loaded): Updated, using mono_image_loaded_full.
10866         (mono_image_loaded_by_guid_full): The same case that happens
10867         with mono_image_loaded_full.
10868         (mono_image_loaded_by_guid): Likewise.
10869         (register_image): Use the ref_only variable inside MonoImage
10870         to decide in which hash table store the current image.
10871         (mono_image_open_from_data_full): Rename
10872         mono_image_open_from_data to mono_image_open_from_data_full,
10873         adding the refonly argument, to define the ref_only variable 
10874         inside MonoImage.
10875         (mono_image_open_from_data): Return 
10876         mono_image_open_from_data_full.
10877         (mono_image_open_full): Rename mono_image_open to
10878         mono_image_open_full, receiving the new refonly argument,
10879         to pass it to inner methods.
10880         (mono_pe_file_open): Update this function, to open
10881         a MonoImage as a non-refonly image.
10882         (mono_image_close): Use the refonly variable inside
10883         MonoImage to remove the image from the correct caches.
10884
10885         * image.h: Add the signatures of mono_image_open_full,
10886         mono_image_open_from_data_full, mono_image_loaded_full,
10887         mono_image_loaded_by_guid_full.
10888
10889         * metadata-internals.h: Add the ref_only field to 
10890         MonoImage.
10891         
10892 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10893
10894         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
10895         Fix the last behavior, which used to load the assemblies and
10896         extract MonoReflectionAssemblyName information, instead of
10897         extract it from the metadata tables. Needed for Reflection
10898         Only assemblies.
10899         
10900 2005-07-29  Martin Baulig  <martin@ximian.com>
10901
10902         * mono-debug-debugger.c
10903         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
10904         not initialized.
10905
10906         * mono-debug.c
10907         (mono_debug_address_from_il_offset): Check whether we have
10908         debugging support before attempting to take the lock.
10909         (mono_debug_source_location_from_address): Likewise.
10910         (mono_debug_source_location_from_il_offset): Likewise.
10911         (mono_debug_il_offset_from_address): Likewise.
10912         (mono_debug_address_from_il_offset): Likewise.
10913
10914 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
10915
10916         * class.c (mono_class_from_name_case): Add support for dynamic images.
10917         Fixes #75650.
10918
10919         * object.c (mono_class_compute_gc_descriptor): Add a workaround
10920         for #75479.
10921
10922 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
10923         
10924         * reflection.c (mono_method_get_object): Fix warning.
10925
10926 2005-07-28  Martin Baulig  <martin@ximian.com>
10927
10928         * mono-debug.c
10929         (mono_debug_add_wrapper): Also write the wrapper type.
10930
10931 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
10932
10933         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
10934         
10935         * class.c (mono_class_init): Avoid reading nested classes if the AOT
10936         data indicates the class has none.
10937
10938 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
10939
10940         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
10941         loader lock with the debugger lock. Prevents deadlocks for beagle.
10942
10943         Beagle can now run on an smp box for a weekend without any
10944         issues. Woohoo!
10945
10946 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
10947
10948         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
10949         in a module. Fixes #75629.
10950
10951 2005-07-26  Martin Baulig  <martin@ximian.com>
10952
10953         * mono-debug.c (mono_debug_add_wrapper): New static method.
10954         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
10955         interncall or a wrapper.
10956
10957         * mono-debug.h (MonoDebugWrapperData): New public typedef.
10958         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
10959         (MONO_DEBUGGER_VERSION): Bump to 51.
10960
10961         * mono-debug-debugger.c
10962         (mono_debugger_add_type): Removed this empty function.
10963         (mono_debugger_add_method): Likewise.
10964
10965 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
10966
10967         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
10968         before accessing method->slot.
10969
10970 2005-07-21  Jb Evain  <jbevain@gmail.com>
10971
10972         * reflection.c (method_encode_clauses/class): Handle filters clauses.
10973         Fixes #75010.
10974
10975 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
10976
10977         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
10978         #75587.
10979
10980 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
10981
10982         * image.h image.c: Add mono_image_get_guid () API function.
10983
10984 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
10985
10986         There were issues when multiple threads tried to load
10987         assemblies. A deadlock was created between assemblies_mutex and
10988         mono_domain_assemblies_lock. This fixes the issue by making the
10989         assembly ref counting be lock free. See bug 75586.
10990         
10991         * image.c (mono_image_close): The add ref function here was using
10992         Interlocked operations while the unref was using a mutex and a
10993         --. I don't think this was ever a bug that would be exposed in a
10994         non-pendantic way (ie, by an embedder doing a ref on one thread
10995         and an unref on another), but for the sake of correctness, this is
10996         now Interlocked.
10997
10998         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
10999         (mono_assembly_load_reference): Call mono_assembly_addref rather
11000         than touching the refcount ourselves.
11001         (mono_assembly_close): Use InterlockedDecrement to unref the
11002         assembly. Don't acquire the lock unless it is actually needed.
11003
11004 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11005
11006         * class.c (mono_class_layout_fields): Fix calculation of has_references
11007         for generic types.
11008
11009 2005-07-12  Martin Baulig  <martin@ximian.com>
11010
11011         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11012
11013         * metadata.c
11014         (mono_type_hash): Provide better hashing for generic instances.
11015         (mono_generic_inst_hash): Improve hashing.
11016         (mono_generic_class_hash): Likewise.
11017
11018         * reflection.c (mymono_metadata_type_hash): Improve hashing for
11019         generic instances.
11020
11021 2005-07-12  Martin Baulig  <martin@ximian.com>
11022
11023         * reflection.c (mono_reflection_create_runtime_class): Remove the
11024         hack for generic type definitions and non-`Run' assemblies.
11025         (mono_reflection_bind_generic_parameters): Also use
11026         `klass->wastypebuilder' to check for TypeBuilders.
11027
11028 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11029
11030         * class.c (mono_class_layout_fields): Fix calculation of has_references
11031         for generic types.
11032
11033         * class.c (inflate_generic_class): Fix a leak.
11034         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
11035         for generic types.
11036
11037 2005-07-11  Martin Baulig  <martin@ximian.com>
11038
11039         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
11040         on error.
11041
11042 2005-07-11  Martin Baulig  <martin@ximian.com>
11043
11044         * loader.c (find_method): Also lookup in
11045         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
11046
11047 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11048
11049         * appdomain.c (mono_domain_unload): Don't free the error message
11050         before passing it to mono_get_exception_...
11051
11052         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
11053         
11054 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
11055
11056         * threads.c: try to better guess an available RT signal (bug #75387).
11057
11058 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11059
11060         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
11061         and CACHE_OBJECT.
11062
11063 2005-07-07  Martin Baulig  <martin@ximian.com>
11064
11065         * class.c (mono_type_get_name_full): Return NULL for
11066         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
11067         fixes #75408.
11068
11069 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11070
11071         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
11072         exit the appdomain as well being aborted.
11073
11074         * threadpool.c: Create all threadpool threads inside the root appdomain, and
11075         change back to the root domain after calling managed code. This enables
11076         appdomains using threadpools to be unloaded.
11077
11078 2005-07-07  Martin Baulig  <martin@ximian.com>
11079
11080         * class-internals.h
11081         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
11082         into `MonoDynamicGenericClass' since we only need it for dynamic
11083         types.
11084
11085         * reflection.c (mono_class_bind_generic_parameters): We don't need
11086         to compute the `parent' here.
11087
11088 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
11089
11090         * culture-info-table.h : regenerated.
11091
11092 2005-07-06  Martin Baulig  <martin@ximian.com>
11093
11094         * icall.c
11095         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
11096
11097         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
11098
11099 2005-07-06  Martin Baulig  <martin@ximian.com>
11100
11101         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
11102         we're doing a signature-only comparision; fixes #74945.
11103
11104 2005-07-06  Martin Baulig  <martin@ximian.com>
11105
11106         * class-internals.h (MonoGenericClass): Moved some things out into
11107         a new `MonoInflatedGenericClass' type.  
11108         (MonoInflatedGenericClass): New type; the `klass' of a
11109         `MonoGenericClass' is now computed lazyly in
11110         mono_get_inflated_generic_class().      
11111
11112         * class.c (mono_get_inflated_generic_class): New public function.
11113         (mono_class_inflate_generic_method): Removed the unused
11114         `MonoClass *' argument.
11115         (setup_generic_vtable): Don't call mono_get_inflated_method() on
11116         all the methods.
11117         (mono_class_create_generic): Make this static and merge it with
11118         mono_class_create_generic_2(); we're now called automatically from
11119         mono_get_inflated_generic_class().
11120
11121         * loader.c (mono_method_signature): Call
11122         mono_get_inflated_method() here.
11123
11124 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
11125
11126         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
11127         type of fields with RVA.
11128
11129         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
11130         for this pseudo class.
11131         (my_mono_class_from_generic_parameter): Likewise.
11132         (mono_class_init): Allow interfaces to have cctors.
11133
11134 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11135
11136         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
11137         lazily for AOT methods.
11138
11139 2005-07-05  Martin Baulig  <martin@ximian.com>
11140
11141         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
11142         returns FALSE for a successful match, not TRUE.
11143
11144 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11145
11146         * loader.c (mono_method_get_index): Optimize this a bit.
11147
11148 2005-07-04  Martin Baulig  <martin@ximian.com>
11149
11150         * class.c
11151         (class_compute_field_layout): Move the check for generic type
11152         definitions into mono_class_layout_fields().  Fixes #74684.
11153         (mono_class_from_generic_parameter): Correctly compute
11154         `klass->parent'; fixes #75457.
11155
11156         * reflection.c (register_assembly, register_module): Make sure
11157         `domain->rejobject_hash' is already created.
11158
11159 2005-07-02  Martin Baulig  <martin@ximian.com>
11160
11161         * class-internals.h
11162         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
11163         `MonoDynamicGenericClass'.      
11164
11165 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
11166
11167         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
11168         returned by a field getter is null, since null is a valid value.
11169
11170 2005-07-01  Martin Baulig  <martin@ximian.com>
11171
11172         * reflection.c (mono_reflection_generic_class_initialize): Update
11173         the `dgclass->fields [i].parent' to the correct class.
11174         (mono_image_get_fieldref_token): Use the declaring type, not the
11175         reflected type.
11176
11177 2005-07-01  Martin Baulig  <martin@ximian.com>
11178
11179         * loader.c (find_method): Also look in the interfaces; fixes #75429.
11180
11181 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
11182
11183         * threads.c (thread_cleanup): assert that thread != NULL
11184         (wait_for_tids_or_state_change): We were using the wrong variable
11185         when accessing wait->threads. `i' was always out of the bounds of
11186         the array.
11187
11188 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11189
11190         * loader.c: map user32 and kernel32 to libMonoSupportW
11191
11192 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11193
11194         * appdomain.c (unload_thread_main): Mark this as WINAPI.
11195
11196 2005-06-28  Martin Baulig  <martin@ximian.com>
11197
11198         * loader.c (method_from_methodspec): Fix #75334.
11199
11200 2005-06-28  Martin Baulig  <martin@ximian.com>
11201
11202         Fix #74953 - Arrays now implement the generic IList<T> interface
11203         on the 2.0 platform.
11204
11205         * class-internals.h (MonoDefaults): Added `generic_array_class'.
11206
11207         * reflection.c (mono_class_bind_generic_parameters): New public
11208         function; similar to mono_reflection_bind_generic_parameters(),
11209         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
11210
11211         * domain.c (mono_init_internal): Try to initialize.
11212         `mono_defaults.generic_array_class' here; this'll only succeed if
11213         we're using the 2.0 corlib.
11214
11215         * icall.c
11216         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
11217         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
11218         (mono_lookup_internal_call): Added support for nested classes.
11219
11220         * loader.c
11221         (mono_get_method_from_token): Set `result->signature->pinvoke' if
11222         we're an interncall and have generic arguments.
11223
11224         * class.c
11225         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
11226         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
11227         instance of System.Array.InternalArray<T> for arrays, so they
11228         implement the generic IList<T> interface.
11229
11230 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
11231
11232         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
11233         (chastamar@yahoo.com). Fixes #75374.    
11234
11235 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
11236
11237         * culture-info-table.h: regenerated.
11238
11239 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11240
11241         * icall.c: handle spaces correctly for base64 strings.
11242
11243 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11244
11245         * *.c: Kill some warnings.
11246
11247 2005-06-23  Duncan Mak  <duncan@novell.com>
11248
11249         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
11250         that this builds on Solaris 10 (x86).
11251
11252 2005-06-23  Martin Baulig  <martin@ximian.com>
11253
11254         * class.c
11255         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
11256         generic type definitions.
11257
11258 2005-06-23  Martin Baulig  <martin@ximian.com>
11259
11260         Fix #75331.
11261
11262         * metadata.c (mono_class_get_overrides): Renamed to
11263         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
11264         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
11265         pass it to mono_get_method_full().
11266
11267 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
11268
11269         * reflection.c (mono_reflection_create_runtime_class): take the
11270         mono_domain_lock in this method. Prevents deadlocks
11271
11272 2005-06-22  Martin Baulig  <martin@ximian.com>
11273
11274         * loader.c (method_from_methodspec): Fix #75330.
11275
11276 2005-06-22  Martin Baulig  <martin@ximian.com>
11277
11278         * reflection.c (type_get_qualified_name): Use
11279         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
11280         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
11281         argument; use it if we don't have an assembly name.
11282
11283 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
11284
11285         * object.c: In mono_message_init, set "copy out" flag for in
11286         parameters with the [Out] flag.
11287
11288 2005-06-21  Martin Baulig  <martin@ximian.com>
11289
11290         * class.c
11291         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
11292         and MONO_TYPE_PTR.
11293
11294 2005-06-21  Martin Baulig  <martin@ximian.com>
11295
11296         * class.c (mono_class_init): Don't initialize `class->fields' for
11297         generic instances since they're initialized again in
11298         compute_field_layout(). 
11299         (compute_field_layout): Set the field's `generic_info' here; fix
11300         #75320. 
11301
11302 2005-06-21  Martin Baulig  <martin@ximian.com>
11303
11304         * class-internals.h
11305         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
11306
11307         * metadata.c (mono_metadata_generic_method_equal): Also
11308         distinguish the `generic_class'; fixes #75334.
11309
11310 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11311
11312         * domain.c:
11313         * appdomain.c:
11314         * domain-internals.h:
11315         * reflection.c: 'domain_assemblies' field is now protected by its own
11316         lock. Don't call into managed code to run the AssemblyLoad event if we
11317         now there are no registered delegates for it.
11318
11319 2005-06-20  Martin Baulig  <martin@ximian.com>
11320
11321         * class.c (mono_class_is_assignable_from): Use a custom version of
11322         mono_class_has_parent() to make things work for generic instances;
11323         fix #75300.
11324
11325 2005-06-20  Martin Baulig  <martin@ximian.com>
11326
11327         * loader.c (method_from_methodspec): Apply a patch from
11328         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
11329
11330 2005-06-20  Martin Baulig  <martin@ximian.com>
11331
11332         * class.c (mono_class_init): Reverted Zoltan's last change; it
11333         breaks generics.
11334
11335 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11336
11337         * threads.c (wait_for_tids_or_state_change): Add missing locking.
11338
11339 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11340
11341         * socket-io.c: fix the index in the socket array for writable/error
11342         sockets. Fixes bug #75306.
11343
11344 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11345
11346         * class.c (mono_class_init): Allow interfaces to have static ctors.
11347
11348 2005-06-17  Martin Baulig  <martin@ximian.com>
11349
11350         * loader.c (method_from_methodspec): Use `context->container' when
11351         parsing the `gmethod->inst'.
11352
11353 2005-06-17  Martin Baulig  <martin@ximian.com>
11354
11355         * class.c (mono_type_get_name_recurse): Don't add the assembly
11356         name for type arguments.
11357
11358 2005-06-15  Martin Baulig  <martin@ximian.com>
11359
11360         * reflection.c (mono_image_get_inflated_method_token): Encode
11361         correct klass; fixes #75260.
11362
11363 2005-06-13 Michal Moskal <malekith@nemerle.org>
11364
11365         * icall.c: Make GetCorrespondingMethod/Constructor take
11366         MonoReflectionMethod method not MonoMethod. Removed
11367         MonoType.GetCorrespondingField, and make
11368         MonoGenericType.GetCorrespondingField take name not
11369         MonoClassField.
11370
11371 2005-06-13  Michal Moskal <malekith@nemerle.org>
11372
11373         * reflection.c (field_encode_signature, encode_locals):
11374          Make sizes of buffers for types larger (for big generic types).
11375          (create_generic_typespec,
11376          mono_reflection_sighelper_get_signature_local,
11377          mono_reflection_sighelper_get_signature_field):
11378          Add asserts for too small buffers.
11379
11380 2005-06-15  Martin Baulig  <martin@ximian.com>
11381
11382         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
11383         if our parent is not a dynamic type.
11384
11385 2005-06-15  Martin Baulig  <martin@ximian.com>
11386
11387         * class-internals.h (MonoTypeNameFormat): New enum.
11388
11389         * class.c
11390         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
11391         (mono_type_get_full_name): Removed.
11392         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
11393         argument instead of the boolean's.
11394
11395         * icall.c (ves_icall_System_MonoType_getFullName):
11396         Added `gboolean assembly_qualified'.    
11397
11398         * reflection.h
11399         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
11400
11401         * reflection.c (mono_reflection_parse_type): Parse the new type
11402         name format.
11403
11404 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11405
11406         * icall.c: no need to convert from utf16 to utf8 and then back again
11407         after the call to GetLogicalDrives.
11408
11409 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11410
11411         * icall.c: frombase64. Fix problems exposed by new tests.
11412
11413 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11414
11415         * icall.c: added internal calls for converting char [] and strings in
11416         base64 into byte [].
11417
11418 2005-06-10  Martin Baulig  <martin@ximian.com>
11419
11420         * class.c (mono_class_create_generic_2): Read the nested classes
11421         from the metadata rather than from `gklass->nested_classes' since
11422         `gklass' might not be initialized yet.
11423
11424 2005-06-09  Duncan Mak  <duncan@novell.com>
11425
11426         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
11427         all public headers. Fixes #74919.
11428
11429 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
11430
11431         * domain.c: The key for proxy_vtable_hash is now a pointer
11432         array. Added new GHashFunc and GCompareFunc functions for this.
11433
11434         * class.h: The list of interfaces in MonoRemoteClass is known in
11435         advance and can't grow (we create a new MonoRemoteClass if needed),
11436         so now the interface array can be allocated together with
11437         MonoRemoteClass.
11438         
11439         * object.c: Added a new method create_remote_class_key.
11440         Fixed mono_remote_class so it does not depend on
11441         mono_upgrade_remote_class.
11442         Removed extend_interface_array.
11443         Added new method clone_remote_class(), which makes a copy of a remote
11444         class and adds a new interface or class to it.
11445         mono_upgrade_remote_class() now creates a new remote class (or gets
11446         it from the cache) if an vtable upgrade is needed. In this way
11447         we make sure that other objects sharing the same remote class
11448         don't get the new vtable with unwanted interfaces.
11449         
11450         * object-internals.h:
11451         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
11452         
11453         * marshal.c: Track changes in mono_upgrade_remote_class().
11454
11455 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
11456         * icall.c: Add runtime methods for obtaining members of inflated
11457         class, which were created from supplied non-inflated members. It
11458         is used in internal Get{Method,Constructor,Field} methods in
11459         System.Type
11460
11461 2005-06-09  Martin Baulig  <martin@ximian.com>
11462
11463         * reflection.c
11464         (mono_reflection_bind_generic_method_parameters): Fix #75169.
11465
11466 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11467         * reflection.c (mono_image_basic_init): Define
11468         Version in MonoDynamicAssembly. 
11469         
11470 2005-06-08  Martin Baulig  <martin@ximian.com>
11471
11472         Fix #75136.
11473
11474         * loader.c
11475         (mono_method_signature_full): New public method; takes a
11476         `MonoGenericContext *'.
11477         (find_method): Use mono_method_signature_full() and pass the
11478         klass'es context to it.
11479
11480         * class.c (mono_class_is_inflated_method): Use
11481         mono_method_signature_full() and pass the context to it.
11482
11483 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
11484
11485         * object.c: add proper locking in mono_remote_class_vtable(),
11486         fixes possible memory corruption.
11487
11488 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
11489
11490         * marshal.c (mono_remoting_marshal_init): set
11491         initialized after initialization.
11492
11493 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
11494
11495         * locales.c : hush.
11496
11497 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
11498
11499         * object.c (extend_interface_array): fix really silly
11500         memory corrupting / comparison bug.
11501
11502 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11503
11504         * reflection.c: Functions added to support the creation
11505         of CustomAttributeData, which includes Attribute data
11506         used by ReflectionOnly methods.
11507
11508         * reflection.h:  mono_reflection_get_custom_attrs_data and
11509          mono_custom_attrs_data_construct added (functions exposed).
11510
11511          * icall.c: Added mono_reflection_get_custom_attrs_data
11512          as icall.
11513         
11514 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11515
11516         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
11517         lupus's request.
11518
11519 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
11520
11521         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
11522
11523         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
11524         dynamic DllImportAttribute.
11525
11526         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
11527         dynamic DllImportAttribute.
11528
11529         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
11530         Fixes #75162.
11531
11532 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11533
11534         * threads.c: avoid segfault when an unstarted thread is aborted.
11535
11536 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
11537
11538         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
11539         Returns the name and version of the runtime for reporting.
11540
11541 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11542
11543         * appdomain.c: bump corlib version.
11544         * object-internals.h: new field in MonoReflectionAssembly.
11545
11546 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11547
11548         * object-internals.h: Carlos forgot to add this field.
11549
11550 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11551
11552         * icall.c: Added create_version to create instances
11553         of Version of MonoReflectionAssemblyName. This change helps
11554         the AssemblyName tests to keep running fine.
11555         
11556 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
11557   
11558         * object.c (mono_method_return_message_restore): A somehow less
11559         intrusive fix for #75138.
11560
11561 2005-06-03  Raja R Harinath  <rharinath@novell.com>
11562
11563         * object.c (mono_method_return_message_restore): Fix computation
11564         of expected number of out args.
11565
11566 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11567
11568         * reflection.c (mono_image_get_method_info): Fix the case when the
11569         charset is empty.
11570
11571 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
11572
11573         * object.c: Added missing null check in
11574           mono_method_return_message_restore.
11575
11576 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11577
11578         * reflection.c (mono_image_get_method_info): Handle the case when
11579         dllentry is empty.
11580
11581 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
11582
11583         * object.c: When creating the vtable for a proxy, take into account
11584         all inherited interfaces, not only the ones registered in
11585         iclass->interfaces. This fixs bug #74996.
11586         Also, in mono_method_return_message_restore, verify that the array
11587         of out args has the expected lengh.
11588
11589 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11590
11591         * socket-io.c: update the timeout in Poll when the call is interrupte.
11592
11593 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11594
11595         * socket-io.c: support abort/suspend in Select_internal after last
11596         change.
11597
11598 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11599
11600         * threadpool.c: remove warning.
11601
11602 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11603
11604         * icall.c:
11605         * socket-io.[ch]: Select_internal uses poll() now when available, thus
11606         removing the 1024 limit from select(). Runtime part of the fix for
11607         bug #71203.
11608
11609 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11610
11611         * socket-io.c: when resolving the addresses for the same
11612         host returned by gethostname(), get the local IPs from the interface
11613         list. Loopback addresses are discarded if the are interfaces up with
11614         non-loopback ones. Fixes bug #63265.
11615
11616 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
11617
11618         * appdomain.c, verify.c, object-internals.h, reflection.c:
11619         bumped corlib number to 36, and added new extra_flags field
11620         to ReflectionMethodBuilder and friends.  Fixes #75060.
11621
11622 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
11623
11624         * gc.c: register a new weak link only if the object is non-null
11625         (fixes bug#75047).
11626
11627 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11628
11629         * culture-info.h : short time pattern too.
11630
11631 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11632
11633         * culture-info.h : expand long time pattern string length.
11634
11635 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11636
11637         * culture-info-table.h : update (more French date format; #72788).
11638
11639 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
11640
11641         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
11642         the method is static. Fixes #75029.
11643
11644 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
11645
11646         * reflection.c: Update the table_idx field of method builders after
11647         saving the module, since it can change. This is a workaround for
11648         bug #74914. 
11649
11650 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11651
11652         * culture-info-table.h : update (additional French date format).
11653
11654 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11655
11656         * icall.c (ves_icall_type_Equals): Revert last change.
11657         
11658         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
11659
11660         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
11661
11662 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
11663
11664         * class-internals.h: Added executioncontext_class field to 
11665         MonoDefaults structure.
11666         * domain.c: Cache System.Threading.ExecutionContext class in 
11667         mono_defaults.
11668         * object.c: Capture the ExecutionContext for asynchroneous calls in
11669          mono_async_result_new.
11670         * object-internals.h: Added execution_context and original_context 
11671         fields to MonoAsyncResult. Added execution_context to MonoThread.
11672         * security-manager.c|.h: Added mono_get_context_capture_method to 
11673         return the capture method (if required by the security manager or by
11674         the framework version used).
11675         * threadpool.c: Apply capture (if present) ExecutionContext in 
11676         mono_async_invoke and revert to original context after it completes.
11677
11678 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
11679
11680         * culture-info-table.h : updated (real hacky solution for zh-CHT).
11681
11682 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
11683
11684         * culture-info-table.h : zh-CHT related workaround.
11685
11686 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11687
11688         * marshal.c (emit_marshal_custom): Add some error checking and call the
11689         methods in the ICustomMarshaler interface. Fixes #74875.
11690         
11691         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
11692         native->managed wrappers.
11693
11694 2005-05-12  Martin Baulig  <martin@ximian.com>
11695
11696         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
11697         here and use the loader lock.
11698
11699         * mono-debug.c: Properly lock when the debugger is not attached.
11700         (mono_debug_init): Release the initial lock if we're not running
11701         in the debugger.
11702
11703 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11704
11705         * marshal.c (emit_marshal_custom): Pass through NULL values without
11706         calling the custom marshalling routines.
11707
11708         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
11709         conversion in structures. Fixes #74882.
11710
11711 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
11712
11713         * culture-info-table.h : zh-* cultures were missing.
11714
11715 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
11716
11717         * threads.c: Added a new event background_change_event which is signaled
11718         when a thread changes its background mode.
11719         Moved here several checks previously done in managed code. The checks
11720         require the thread lock, and using the thread lock in managed code
11721         can result in deadlocks.
11722         Merged Start_internal and Thread_internal into a single method. Now 
11723         Thread_internal does all work of creating and starting a thread.
11724         Added icalls for setting and getting the state of the object. Moved from
11725         managed code to avoid locking there.
11726         Added wait_for_tids_or_state_change() which is called instad of
11727         wait_for_tids when waiting for non-backround threads to end. This method
11728         will return if one of the threads ends or the background_change_event
11729         is signaled.
11730         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
11731         the background mode. This method signals the background_change_event
11732         event.
11733         * icall.c:
11734         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
11735         removed Start_internal.
11736         
11737 2005-05-11  Martin Baulig  <martin@ximian.com>
11738
11739         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
11740         to order of some fields to get proper alignment on 64-bit machines.
11741
11742 2005-05-11  Martin Baulig  <martin@ximian.com>
11743
11744         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
11745         changes as they're broken and completely fuck up the debugger.
11746
11747         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
11748
11749 2005-05-10  Martin Baulig  <martin@ximian.com>
11750
11751         * reflection.c (mono_reflection_generic_class_initialize): Don't
11752         call mono_class_setup_parent() here.
11753
11754 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11755
11756         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
11757         send/receive timeout use an integer in milliseconds. We were using a
11758         struct timeval.
11759
11760 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11761
11762         * locales.c:
11763         (internal_get_cultures): reserve the first slot of the array for the
11764         InvariantCulture, which will be filled in managed code.
11765
11766 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
11767
11768         * reflection.c (mono_image_fill_module_table): Initialize the
11769         GENERATION field as well.
11770
11771 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11772
11773         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
11774         Monitor.Enter on the object.
11775
11776 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11777
11778         * threads.c: Enable the wait for running threads when exiting.
11779         * icall.c: Suspend all threads before exiting.
11780
11781 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11782
11783         * assembly.c (mono_assembly_load_reference): Fix warning.
11784
11785 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11786
11787         * threadpool.c: changed the default number of threads per cpu. From now
11788         on, the default will be 20 + (5 * number of cpus) instead of 50.
11789
11790 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
11791
11792         * loader.c (mono_method_get_signature_full): Add locking here.
11793
11794 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
11795
11796         * appdomain.c: Moved methods for parsing and freeing assembly
11797         names to assembly.c.
11798         * assembly.c, domain-internals.h: Created public methods for parsing
11799         assembly names. Fixed mono_assembly_load_with_partial_name:
11800         it now finds the best match, taking into account the version,
11801         token and culture specified in the partial name. Also return
11802         the latest version if no version information is specified.
11803
11804 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
11805
11806         * threadpool.c: replace check for SocketAsyncCall class.
11807
11808 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11809
11810         * threadpool-internals.h:
11811         * Makefile.am: added threadpool-internals.h
11812
11813         * threadpool.c: call mono_unhandled_exception on exceptions not handled
11814         that happen in threadpool threads (tested on MS).
11815         (mono_thread_pool_remove_socket): new function that dispatch any pending
11816         AIO call on a socket that is closing. By now only epoll really needs it,
11817         as select/poll wake up when the socket closes.
11818
11819
11820         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
11821
11822 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
11823
11824         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
11825
11826 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
11827
11828         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
11829
11830 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
11831
11832         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
11833         has an abort request, convert it into a suspend request.
11834
11835 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
11836
11837         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
11838         warning for the usage of `UnmanagedFunctionPointerAttribute' which
11839         is not supported yet.
11840
11841 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11842
11843         * image.c: register assemblies loaded from data (bundles) in the loaded
11844         assemblies hash. Fixes bug #74772.
11845
11846 2005-04-29  Martin Baulig  <martin@ximian.com>
11847
11848         * class.c (mono_type_get_name_recurse): Update to the new naming
11849         schema from the latest .NET 2.x beta2.
11850         (mono_class_setup_vtable_general): If we're a generic instance,
11851         copy the vtable from our generic type definition and inflate all
11852         the methods in it.
11853
11854         * loader.c (find_method): Update to the new naming schema from the
11855         latest .NET 2.x beta2.
11856
11857 2005-04-29  Raja R Harinath  <harinath@gmail.com>
11858
11859         * class.c (mono_class_init): Add a mono_loader_unlock to the
11860         #74734 fix.
11861
11862 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11863
11864         * icall.c (ves_icall_System_Environment_Exit): Remove the 
11865         suspend_all_other_threads () call for the time being, since it can hang.
11866
11867         * threads.c (mono_thread_manage): Similarly, disable the waiting for
11868         the background threads to exit, since it can also hang.
11869
11870         * class.c (mono_class_init): Applied patch from Ankit Jain 
11871         (radical@gmail.com). Avoid pending init errors when a field refers
11872         to a nested class using a typeref. Fixes #74734.
11873
11874         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
11875         this for dynamic modules.
11876
11877 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11878
11879         * threads.c: don't wait for threads that are in the process of aborting
11880         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
11881         and waiting for background threads to finish. This makes xsp and
11882         mod-mono-server exit without random length delays and/or hangs.
11883
11884 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11885
11886         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
11887
11888 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
11889
11890         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
11891         dynamic types to prevent infinite loops. Fixes #74727.
11892
11893         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
11894         ..._is_assignable_to.
11895
11896 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
11897
11898         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
11899
11900 2005-04-25  Martin Baulig  <martin@ximian.com>
11901
11902         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
11903
11904         * domain.c
11905         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
11906
11907         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
11908
11909         * reflection.c (build_compressed_metadata): Set metadata header
11910         version to 2.0.
11911
11912 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11913
11914         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
11915         number into an integral and a decimal part. Fixes #70473.
11916
11917         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
11918
11919 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
11920
11921         * culture-info-table.h : reflected the latest locale-builder output.
11922
11923 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11924
11925         * threadpool.c: check for SuspendRequested too when deciding if
11926         mono_thread_interruption_checkpoint should be called.
11927
11928 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11929
11930         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
11931         * threads.c: remove interruption_mutex and use Interlocked instead. When
11932         suspending all the threads, wait for all the suspended events at once.
11933         If we're shutting down and get an APC that is going to be queued,
11934         call mono_thread_execute_interruption immediately, as the thread might
11935         be sleeping on a pthread condition or mutex.
11936
11937         * icall.c: call mono_runtime_set_shutting_down before suspending the
11938         threads.
11939
11940         Fixes bug #74693. And now xsp is happier when exiting.
11941
11942 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11943
11944         * loader.c (mono_stack_walk): Fix #74690.
11945
11946 2005-04-22  Martin Baulig  <martin@ximian.com>
11947
11948         * mono-debug.h (MonoDebugMethodJitInfo): Added
11949         `MonoDebugMethodJitInfo *jit'.
11950
11951         * mono-debug.c (mono_debug_read_method): Cache the
11952         MonoDebugMethodJitInfo in `address->jit'.
11953         (mono_debug_free_method_jit_info): New public method.
11954
11955 2005-04-22  Martin Baulig  <martin@ximian.com>
11956
11957         * class.c (mono_class_is_assignable_from): Disallow
11958         type parameter -> interface.
11959
11960 2005-04-21  Dick Porter  <dick@ximian.com>
11961
11962         * threads.c (mono_thread_create): Turn an assertion into an error.
11963
11964 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11965
11966         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
11967         
11968         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
11969         Fix some gcc 4.0 warnings.
11970
11971 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
11972
11973         * file-io.c: fix alt dir separator char on unix systems
11974         and cleanup (fixes bug #71214).
11975
11976 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
11977
11978         * marshal.c: Use CALLVIRT instead of CALL when dispatching
11979         a call to a remote domain, since the method may be an
11980         interface method in the client domain. This fixes bug #74192.
11981
11982 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11983
11984         * threadpool.c: recv/send are now performed before going back to managed
11985         code to save one transition.
11986
11987 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11988
11989         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
11990
11991         * metadata/threadpool.c: removed hack to workaround the bug above.
11992
11993         Fixes bug #74618.
11994
11995 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
11996
11997         * reflection.c reflection.h: Fix handling of parameter defaults in
11998         dynamic methods. Also fixes handling of parameter attributes.
11999         Fixes #74609.
12000
12001         * mono-debug.c (mono_debug_close_image): Fix warning.
12002
12003 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12004
12005         * socket-io.h: replaced old unused field with new 'blocking'.
12006         * threadpool.c: restore socket blocking state on windows(tm).
12007
12008 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
12009
12010         * icall.c: don't return the codebase in the AssemblyName[] returned by
12011         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
12012         * object-internals.h: Removed FIXME (fields were presents) and fixed
12013         versioncompat declaration.
12014
12015 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12016
12017         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
12018         not closed, so don't cleanup when it happens.
12019
12020 2005-04-13  Chris Toshok  <toshok@ximian.com>
12021
12022         * mono-debug-debugger.h: change prototype for
12023         mono_debugger_lookup_type.
12024
12025         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
12026         this function, although it should probably be named
12027         mono_debugger_init_type.
12028
12029 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12030
12031         * threadpool.c: fix non-AIO case.
12032
12033 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
12034
12035         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
12036         the built-in profiler to measure just JIT compilation times.
12037
12038 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12039
12040         * threadpool.c: the epollfd might be closed by another thread at
12041         any time, so ignore EBADF at treat it as a "we're closing" sign.
12042
12043 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12044
12045         * threadpool.c: release the semaphores with a count equals to the number
12046         of working threads in both IO and regular pools. Fixed typo that messed
12047         up the count of IO pool threads. Don't initialize the pipe handles if
12048         we're using epoll.
12049
12050 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12051
12052         * threadpool.c: some systems don't like a NULL when deleting the socket
12053         from epoll.
12054
12055 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12056
12057         * threadpool.c: fix semaphore allocation.
12058
12059 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12060
12061         * threadpool.c: added epoll() based implementation for asynchronous IO
12062         that is used instead of the default poll() when available.
12063         It can be disabled by setting MONO_DISABLE_AIO.
12064
12065 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12066
12067         * threadpool.c: windows needs 'closesocket' and instead of returning
12068         0 when the stream is closed while in select, it returns -1. Fixes bug
12069         #74573.
12070
12071 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
12072
12073         * class.c (class_compute_field_layout): Fix the regression caused by
12074         the previous try.
12075
12076 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12077
12078         * threadpool.c: separate pool for socket async. IO.
12079         * threadpool.h: mono_max_worker_threads is not a global any more.
12080
12081 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12082
12083         * class.c (class_compute_field_layout): Fix #74549.
12084
12085 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12086
12087         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
12088         use 2 connected sockets instead.
12089
12090 2005-04-08  Miguel de Icaza  <miguel@novell.com>
12091
12092         * mono-config.c: Add new entry point for mkbundle
12093         mono_config_parse_memory. 
12094
12095 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12096
12097         * threadpool.c: removed another unused function.
12098
12099 2005-04-08  Ankit Jain  <radical@corewars.org>
12100
12101         * reflection.c (get_default_param_value_blobs): Add 'types'
12102         parameter to get the types encoded in the constant table.
12103         (mono_param_get_objects): Use the type from the constant table,
12104         not the type of the parameter, when creating default values.
12105         Handle null default values correctly.
12106
12107 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12108
12109         * file-io.c:
12110         * file-io.h:
12111         * threadpool.c:
12112         * threadpool.h:
12113         * icall.c:
12114         * socket-io.c: removed dead code for async IO.
12115
12116 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12117
12118         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
12119
12120         * threadpool.c: intercept socket async. calls and pass them to a thread
12121         that is polling and dispatching the job items to the threadpool as
12122         socket become ready. Fixes bugs #71217, #71933.
12123
12124         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
12125         between char and short/ushort arrays.
12126
12127         * socket-io.c: remove dead code.
12128
12129 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12130
12131         * locales.c,
12132           icall.c : removed InternalToUpper_Comp() and
12133           InternalToLower_Comp().
12134
12135 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12136
12137         * char-conversions.h : The tables were incorrectly generated. Should
12138           be generated against invariant culture.
12139
12140 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12141
12142         * object.c (mono_runtime_invoke_array): Fix return value when 
12143         passing pre-created valuetype objects to ctors.
12144
12145         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
12146         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
12147         Fixes #74338.
12148
12149 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
12150
12151         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
12152         only used with --security and hides the wrong corlib version error.
12153
12154 2005-03-30  Joshua Tauberer  <tauberer@for.net>
12155
12156         * class.c: Changed mono_class_name_from_token so that types
12157         outside of a namespace don't have an initial period.  Improved
12158         the g_warning message used in _mono_class_get when loading
12159         fails.
12160         * assembly.c: In mono_assembly_load_reference, when an assembly
12161         can't be found, "No such file or directory" is misleading and
12162         unhelpful because a few paths were checked for the presence of
12163         the assembly.  When that happens (ENOENT), display a nicer
12164         message indicating the directories that were searched.  In all
12165         cases, the warning is made easier to read for non-hackers.
12166
12167 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12168
12169         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
12170         project/solution.
12171         * appdomain.h|domain.c: Removed inline from functions.
12172         * appdomain.c: Reduced warnings when compiling on windows.
12173         * icall.c: Fixed output_debug declaration to gunichar2*.
12174         * mono-config.c: Reduced warnings when compiling on windows.
12175         * rand.c: Added missing "windows.h". Added missing return value.
12176         * rawbuffer.c: Added missing winsock2.h for windows.
12177         * sysmath.h: Added mono-compiler.h header to allow/ease 
12178         compilation with non-GCC compilers.
12179         * threads.c: Fixed declarations to compile with VS.NET C compiler.
12180         Removed cast warnings.
12181
12182         Adapted from the work of J Lothian (for VC6).
12183
12184 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12185
12186         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
12187         from default_path.
12188
12189 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12190
12191         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
12192         the 2.0 profile.
12193
12194 2005-03-27  Raja R Harinath  <harinath@gmail.com>
12195
12196         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
12197         has to be in $(exec_prefix).  $(prefix) is for arch-independent
12198         stuff, and it would probably use $(prefix)/share rather than
12199         $(prefix)/lib.
12200
12201 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12202
12203         * console-io.c: added 2 includes that might be missing.
12204
12205 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12206
12207         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
12208         profile.
12209
12210         * reflection.c (create_custom_attr): Allocate the params array using
12211         alloca so it gets GC tracking.
12212
12213 2005-03-23  Chris Toshok  <toshok@ximian.com>
12214
12215         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
12216         out some spew.
12217
12218 2005-03-24  Raja R Harinath  <rharinath@novell.com>
12219
12220         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
12221         changes to pick up any changes in prefix, etc.
12222
12223 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12224
12225         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
12226         
12227         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
12228         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
12229
12230 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12231
12232         * class-internals.h object-internals.h class.c reflection.c: Extend the
12233         mono_lookup_dynamic_token () function to return the class of the
12234         token as well. 
12235
12236         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
12237         well. Fixes #73848.
12238
12239 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12240
12241         * security-manager.c: Skip inheritance checks for intra-corlib
12242         class inheritance and method overrides. This skips a lot of checks
12243         and (anyway) permissions cannot work until corlib is loaded.
12244
12245 2005-03-23  Martin Baulig  <martin@ximian.com>
12246
12247         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
12248         MONO_TYPE_GENERICINST.  
12249
12250 2005-03-23  Martin Baulig  <martin@ximian.com>
12251
12252         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
12253
12254 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12255
12256         * class.c: added locking comments to some functions.
12257         Cache the interface offsets arrays (saves about 20 KB
12258         of runtime memory in a typical app).
12259         Reduce the time overhead in mono_class_setup_supertypes ().
12260
12261 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
12262
12263         * icall.c: speedup and fix leaks in GetMethodsByName and
12264         GetPropertiesByName.
12265
12266 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12267
12268         * reflection.c: some locking fixes.
12269
12270 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12271
12272         * metadata.c: added missing break in case statement.
12273
12274 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
12275
12276         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12277         typedbyref return values. Fixes #73941.
12278
12279 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12280
12281         * security-manager.c|h: Added demandunmanaged method and 
12282         suppressunmanagedcodesecurity class to MonoSecurityManager.
12283         Renamed aptc class to allowpartiallytrustedcallers.
12284
12285 2005-03-17  Martin Baulig  <martin@ximian.com>
12286
12287         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
12288
12289 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12290
12291         * file-io.c: disabled file async. IO using aio_*. It uses the
12292         threadpool now. Workaround for bug #73718.
12293
12294 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12295
12296         * assembly.h, mono-config.c: added code to deal with bundled configs
12297         for bundled assemblies.
12298
12299 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
12300
12301         * *.c, private.h: cleanup, removing old private.h header file.
12302
12303 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12304
12305         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
12306         and throw_on_unmappable_char attributes.
12307
12308 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
12309
12310         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
12311         _ProcessName_internal.
12312
12313 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12314
12315         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
12316         #73631.
12317
12318         * icall.c threads.c threads-types.h: Remove slothash icalls as they
12319         are no longer used.
12320
12321 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12322
12323         * object.c (compute_class_bitmap): Add support for generics. Fixes
12324         #73527.
12325
12326 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12327
12328         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
12329
12330 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12331
12332         * filewatcher.c: commented out the code for windows watcher, as we don't
12333         use it (we use the managed implementation instead).
12334
12335 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12336
12337         * object-internals.h (MonoThread): Remove 'unused1' field.
12338
12339         * appdomain.c: Bump corlib version.
12340
12341         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
12342
12343         * reflection.c (mono_reflection_create_runtime_class): Remove the
12344         AssemblyBuilder.Save optimization since it causes too many problems.
12345
12346 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
12347
12348         * exception.c|h: Added mono_get_exception_reflection_type_load to
12349         create a ReflectionTypeLoadException object.
12350         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
12351         to return NULL is a InheritanceDemand fails during reflection. Updated
12352         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
12353         ReflectionTypeLoadException if an InheritanceDemand fails during 
12354         reflection. Added icall mapping for GetLinkDemandSecurity.
12355         * security-manager.c|h: Added ves_icall_System_Security_
12356         SecurityManager_GetLinkDemandSecurity internal call to return the
12357         class and methods permissions set for a LinkDemand. Removed unused
12358         fields in MonoSecurityManager.
12359
12360 2005-03-10  Martin Baulig  <martin@ximian.com>
12361
12362         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
12363         it's a generic instance.
12364
12365 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
12366
12367         * reflection.c (mono_get_object_from_blob): Applied patch from
12368         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
12369
12370         * class.c (mono_class_is_assignable_from): Another try at fixing 
12371         #73469 without breaking anything.
12372
12373 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12374
12375         * class.c: (mono_class_is_assignable_from): Revert the last changes
12376         since they don't work with generics.
12377         
12378         * class.c (mono_class_is_assignable_from): Fix build bustage.
12379
12380         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
12381         the managed IsAssignableFrom method. Fixes #73469.
12382
12383         * reflection.c (mono_reflection_call_is_assignable_from): New helper
12384         function.
12385
12386 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12387
12388         * object.c (mono_load_remote_field_new): Fix returning uninitialized
12389         memory when the remoting callback does not sets the out arguments.
12390         Fixes #73007.
12391
12392         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
12393         by mistake.
12394
12395         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
12396
12397         * object-internals.h (MonoStackFrame): Sync with managed object layout.
12398
12399         * appdomain.c: Bump corlib version.
12400
12401 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12402
12403         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
12404         function.
12405
12406         * threads.c (mono_thread_attach): Detect threads which are not started
12407         by the GC pthread wrappers.
12408
12409 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
12410
12411         * icall.c: Added new icall for RNG.
12412         * rand.c|h: Added new icall to open the RNG. This allows to share a 
12413         single handle on Linux to access /dev/urandom and fix #73183.
12414
12415 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12416
12417         * object.c: setting the new vtable in a transparent proxy object must
12418         not change the GC descriptor.
12419
12420 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12421
12422         * object.c: fixed compilation without GCJ support.
12423         * reflection.c: for runtime-created types ensure klass->has_references
12424         is correct (bug #73215).
12425
12426 2005-03-02  Martin Baulig  <martin@ximian.com>
12427
12428         * class.c (mono_class_is_assignable_from): Make this work if
12429         `oklass' is a generic instance; fixes #72831.
12430
12431 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12432
12433         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
12434         with hasthis set.
12435         
12436         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
12437
12438         * marshal.c: Reorganize native->managed marshalling code to also use
12439         the emit_marshal_... functions.
12440
12441 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12442
12443         * object.c: typed allocs have issues with bitmap sizes > 30,
12444         so check for max_set >= 30.
12445
12446 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12447
12448         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
12449         managed code. Fixes #73012.
12450
12451         * metadata.h (MonoMarshalSpec): Add elem_mult field.
12452
12453         * metadata.c reflection.c: Load/Emit elem_mult as well.
12454         
12455         * metadata.h (MonoMarshalSpec): Add comment.
12456
12457         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
12458
12459         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
12460         num_elem to -1 if not given.
12461
12462         * object-internals.h (MonoReflectionMarshal): Add has_size field.
12463
12464         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
12465         given values.
12466
12467 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
12468
12469         * null-gc.c (mono_gc_free_fixed): Was not compilable.
12470
12471 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
12472
12473         * reflection.c (encode_marshal_blob): Encode param_num field as well.
12474
12475         * object-internals.h (MonoReflectionMarshal): Add param_num field.
12476
12477 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12478
12479         * object.c: generalized the reference bitmap creation
12480         and added hooks for the new GC.
12481         * class-internals.c: removed the gc_bitmap field from MonoClass.
12482
12483 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12484
12485         * domain.c: help the compiler to produce better code
12486         in mono_jit_info_table_find ().
12487
12488 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12489
12490         * object.c: make all allocations look typed.
12491
12492 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12493
12494         * socket-io.c: load Mono.Posix if it's not loaded already
12495         (fixes bug#73033).
12496
12497 2005-02-24  Martin Baulig  <martin@ximian.com>
12498
12499         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
12500         * reflection.c (dup_type): Likewise.
12501
12502 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
12503
12504         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
12505         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
12506
12507 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12508
12509         * domain.c, threads.c, object-internals.h: make the critical thread
12510         local vars use the fast access mode (even when we're compiled in
12511         a lib). Provide accessors to be used by the jit during codegen.
12512
12513 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12514
12515         * appdomain.c: Changed hook functios behavior to include
12516         support for the reflection only assemblies. Some icalls were changed
12517         to support the mentioned assemblies too. Signatures of static methods
12518         try_assembly_resolve and real_load now have an additional parameter:
12519         refonly.
12520
12521         * assembly.c: General changes to mono_assembly_ methods to support
12522         reflection only api. Functions mono_assembly_open, mono_assembly_load,
12523         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
12524         suffix, to support an additional gbool parameter to specify whether
12525         the assembli is reflection only or not. Created some new hook functions 
12526         to add support for reflection only assemblies. Signatures of static 
12527         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
12528         have now an additional parameter: refonly.
12529
12530         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
12531         indicating whether the assembly is reflection only or not.
12532
12533         * exception.c: Add mono_get_exception_invalid_operation.
12534
12535         * icall.c: Throw an InvalidOperationException when trying to invoke
12536         a property/method/event, or trying to set/get the value of a field.
12537         Also add an icall to retrieve the ref_only flag to the
12538         MonoReflectionAssembly.
12539
12540 2005-02-23  Chris Toshok  <toshok@ximian.com>
12541
12542         Part of fix for #72827.
12543         * mono-debug.c (mono_debug_add_method): add lexical block data to
12544         the info we write.  Kind of a hack at the moment - we copy the
12545         lexical block info from the MonoDebugMethodInfo to the
12546         MonoDebugMethodJitInfo here, before writing it.
12547         (mono_debug_read_method): read the lexical block info.
12548
12549         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
12550
12551         * debug-mono-symfile.h: add lexical block support.
12552
12553         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
12554         support.
12555
12556 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12557
12558         * loader.c (mono_lookup_pinvoke_call): Fix warning.
12559
12560         * object.c (mono_runtime_free_method): Call mono_free_method () and
12561         put the TODOs there.
12562
12563         * loader.c (mono_free_method): Free up most memory allocated for 
12564         dynamic methods.
12565
12566 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12567
12568         * reflection.c: properly flag a Type argument to a
12569         named custom attr value (bug #72248).
12570
12571 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12572
12573         * reflection.c: reduce code duplication in named custom
12574         attribute encoding.
12575
12576 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
12577
12578         * reflection.c: properly encode custom attrs of type object
12579         (bug #72649).
12580
12581 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12582
12583         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
12584
12585 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
12586
12587         * socket-io.c: load System.dll if it's not loaded already
12588         (bug #72850 and #70477).
12589
12590 2005-02-21  Martin Baulig  <martin@ximian.com>
12591
12592         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12593         generic instances.
12594
12595 2005-02-21  Martin Baulig  <martin@ximian.com>
12596
12597         * reflection.c (mono_image_build_metadata): We also need to
12598         "fixup" the MethodImpl table after we computed the final method
12599         indices.  Call fixup_methodimpl() to do that.
12600         (fixup_methodimpl): New private method.
12601
12602 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12603
12604         * assembly.c: special case mscorlib.dll (bug#72536),
12605         patch from Carlos Alberto Cortez.
12606
12607 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12608
12609         * threads-types.h threads.c: Fix build bustage.
12610
12611         * threads.c: Use a union for long<->double conversions.
12612
12613         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
12614         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
12615
12616         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
12617         containing the checkpoint call with NOT_TAKEN.
12618         
12619         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
12620         checkpoint before pushing the arguments, so they won't have to be
12621         spilled to stack.
12622
12623 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12624
12625         * domain.c, assembly.c, domain-internals.h: make some data
12626         const and relocation-free.
12627
12628 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12629
12630         * object.c, appdomain.c, class-internals.h: introduce the
12631         MonoClassRuntimeInfo structure to hold the info needed to
12632         use a class at runtime. Made mono_class_vtable() lock-free
12633         for all the appdomains.
12634
12635 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
12636
12637         * metadata-internals.h, image.c: introduce a per-image mempool to
12638         be used for memory that has the same lifetime as the image.
12639
12640 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
12641
12642         * domain.c: In mono_init_internal(), instead of selecting the first
12643         runtime version supported by an executable, get a list of all
12644         supported versions and select the one for which an mscorlib exists
12645         (since even if the runtime supports a given version, it doesn't mean
12646         that the framework for that version is installed).
12647         Modified get_runtimes_from_exe to support this behavior.
12648         In supported_runtimes, added information about additional system
12649         assembly versions.
12650         
12651         * assembly.c: Added support for more than one system assembly version
12652         per runtime version. Updated the assembly list.
12653         In mono_assembly_remap_version, removed the initial version check,
12654         since we don't know to which version we need to compare until we
12655         get the version set on which the assembly is based.
12656         Moved the code for loading corlib into the new method
12657         mono_assembly_load_corlib(), so it can be used by the initialization
12658         code.
12659         
12660         * domain-internals.h: Updated data structures and added declaration
12661         for mono_assembly_load_corlib.
12662
12663 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12664
12665         * reflection.c (resolve_object): Fix the creation of the signature in 
12666         the SignatureHelper case.
12667
12668         * assembly.c (mono_assembly_remap_version): Fix binary search.
12669         
12670 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
12671  
12672         * class.c: Added inheritance check when a method is overloaded (from a
12673         virtual method or when implementing an interface) and when a class is
12674         inherited. Added functions to set a failure for a class and to 
12675         retreive the exception from a failure.
12676         * class-internals.h: Added fields to MonoClass to keep the exception
12677         information status for inheritance (or other exceptions) to be thrown
12678         later (i.e. not at load time).
12679         * object.c: Throw the inheritance SecurityException when a type is to 
12680         be created with either class or method inheritance violations.
12681         * reflection.c|h: Fix when getting declsec from a class. Removed 
12682         unrequired code for class. Improved sanity in parameter naming.
12683         * security-manager.c|h: Added functions to check for class and method
12684         inheritance.
12685
12686 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12687
12688         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
12689         and has_finalize in dynamic types as well.
12690
12691 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
12692
12693         * culture-info-table.h : fixed currency format for en-GB (and so on).
12694
12695 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
12696
12697         * gc.c: ensure the GC handles never have 0 as a value.
12698
12699 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12700
12701         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
12702         a pointer to a struct to unmanaged code. Fixes #72625.
12703
12704 2005-02-16  Martin Baulig  <martin@ximian.com>
12705
12706         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
12707
12708 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12709
12710         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
12711
12712 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12713
12714         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
12715
12716         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
12717         UnmanagedFunctionPointerAttribute, use it for determining calling convention
12718         etc. Fixes #71471.
12719
12720         * reflection.c (mono_custom_attrs_get_attr): New helper function.
12721
12722         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
12723
12724 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
12725
12726         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
12727         changes to make the current context a field in MonoThread.
12728
12729 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12730
12731         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
12732         the last change.
12733         
12734         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
12735         extracted from mono_marshal_get_native_wrapper.
12736
12737         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
12738         to create wrappers around native functions.
12739
12740         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
12741         delegates for arbitrary function pointers. Fixes #71472.
12742
12743 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
12744
12745         * threads.c: cleaned up the code a little.
12746
12747 2005-02-15  Martin Baulig  <martin@ximian.com>
12748
12749         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
12750         the data table.
12751
12752         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
12753         allocate larger chunks if needed.
12754
12755 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12756
12757         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
12758         in by mistake.
12759
12760 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
12761
12762         * domain.c: keep the domains in an array and ensure the domain ids
12763         are kept small, so they can be used as indexes to domain-specific data
12764         with a small memory overhead.
12765
12766 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12767
12768         * icall.c: Handle byref types in Type icalls. Fixes #72544.
12769
12770 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
12771
12772         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
12773
12774 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12775
12776         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
12777
12778         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
12779         values.
12780
12781         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
12782         
12783 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12784
12785         * domain-internals.h: add the hashtable here.
12786
12787         * class-internals.h: Remove `info' from MonoMethod
12788
12789         * domain.c: Add a new hashtable, jit_trampoline_hash
12790
12791 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12792
12793         * object.c: don't set the value of static fields
12794         (fixes bug#72494).
12795
12796 2005-02-11  Martin Baulig  <martin@ximian.com>
12797
12798         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
12799         (mono_debug_add_method): Silently ignore the method if it's too big.
12800         (mono_debug_add_type): Likewise.
12801
12802 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
12803
12804         * threads.c, appdomain.c: remove #ifdefs from the code.
12805
12806 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12807
12808         * metadata-internals.h: Added flags to MonoAssembly to cache the most
12809         common security informations. This allows us to stay in unmanaged code
12810         when doing LinkDemand and it's special cases (except for the first 
12811         time for initialization). The flags a very much used with --security.
12812         * reflection.c|h: Added code to get declarative security attributes 
12813         for LinkDemand and InheritanceDemand. This required to refactor the
12814         existing code for Demand.
12815         * security-manager.c|h: Added new method fields for the special cases
12816         of LinkDemand.
12817
12818 2005-02-10  Martin Baulig  <martin@ximian.com>
12819
12820         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
12821         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
12822
12823 2005-02-10  Martin Baulig  <martin@ximian.com>
12824
12825         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
12826         debugging code; this is almost a complete rewrite.
12827
12828         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
12829
12830 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12831
12832         * domain.c, object.h: expose mono_string_equal () and 
12833         mono_string_hash ().
12834         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
12835         it's implemented in managed code.
12836
12837 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12838
12839         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
12840         lo leak objects between appdomains.
12841
12842 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12843
12844         * assembly.c: old compilers compilation fix from 
12845         robertj@gmx.net (Robert Jordan).
12846
12847 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
12848
12849         * class-internals.h: Little reminder for the future.
12850
12851         * debug-helpers.c: Fix up wrapper_type_names
12852
12853 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12854
12855         * image.c, metadata-internals.h: when loading an image from a file,
12856         mmap all of it and use the same codepaths as when using a
12857         in-memory image: the code is simpler and we use less memory
12858         (both writable and readonly).
12859
12860 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12861
12862         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
12863         API to alloc runtime data structures that need to be tracked by the
12864         GC and contain pointers.
12865         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
12866         make the code more readable and eventually use a different GC.
12867
12868 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
12869
12870         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
12871         for out arguments.
12872         
12873 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
12874
12875         * object.c: In release_type_locks(), don't release the cctor lock
12876         if it has already been released. This fixes a crash in the
12877         thread5 test.
12878
12879 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12880
12881         * gc.c, marshal.c, icall.c: register a delegate for finalization
12882         only when the native function pointer has been allocated for it.
12883
12884 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12885
12886         * object.c: cleaned up some code, allocate objects that are
12887         pointer free with the atomic malloc variant. Allocate memory
12888         for static data from the mempool if it's pointer-free.
12889         Allocate the bounds array at the end of the array data, when needed.
12890         * object-internals.h, object.h: move a private function in a private
12891         header.
12892         * class.c: handle missing case in tracking references in fields.
12893
12894 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12895
12896         * class.c, class-internals.h: keep track if a type has
12897         reference fields in either the instance or static fields.
12898
12899 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
12900
12901         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
12902         and renamed to MonoRuntimeInfo. Added fields to store the expected
12903         framework assembly version. Changed mono_get_framework_version and
12904         mono_get_runtime_version for a single mono_get_runtime_info method.
12905         
12906         * assembly.c: Added method to remap system assembly versions to the
12907         current executing runtime version. Removed old mapping code.
12908         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
12909         
12910         * icall.c, reflection.c: Track api changes.
12911
12912 2005-02-06  Miguel de Icaza  <miguel@novell.com>
12913
12914         * loader.c (method_from_memberref): Improve error reporting,
12915         produce the class name instead of the typeref/typedef index. 
12916
12917 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
12918
12919         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
12920
12921 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12922
12923         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
12924         stdcall and charset name mangling.  Reorganize the code and add
12925         some tracing stuff.
12926
12927 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
12928
12929         * monodiet.c: More iters!
12930
12931         * marshal.c: Iter usage.
12932
12933         * icall.c: Iter usage.
12934
12935         * object.c: Use iters.
12936
12937         * debug-helpers.c: More iters
12938
12939 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12940
12941         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
12942         under win32.
12943
12944 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
12945
12946         * mono-debug-debugger.c: use iters
12947
12948         * class.c, class-internals.h: mono_class_setup_events is static
12949         now
12950
12951         * All callers: use iters
12952
12953 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12954
12955         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
12956         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12957
12958 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12959
12960         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
12961
12962         * marshal.h: Add prototypes for ldfld/stfld_remote.
12963
12964         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
12965         this is called during startup.
12966         
12967 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12968
12969         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
12970         MonoThreadsSync struct private in monitor.c. Changed the way
12971         MonoThreadsSync is allocated so it's faster and there is no
12972         need to keep track of it with a finalizer and it uses less memory.
12973         This also finally allows us to allocate mono objects as ptrfree when
12974         there are no reference fields.
12975
12976 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
12977
12978         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
12979         disappearing link to the GC interface and use them to simplify
12980         the gchandles code.
12981
12982 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12983
12984         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
12985         stfld_remote which call mono_load/store_field_new. This allows methods
12986         calling ldfld/stfld wrappers to be AOTed.
12987
12988         * console-io.c: Include sys/filio.h under solaris.
12989         
12990         * console-io.c: Include curses.h if needed correctly.
12991
12992 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12993         
12994         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
12995         method->klass as well.
12996
12997         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
12998
12999         * class.c (mono_class_init): Switch on lazy initialization of 
13000         methods.
13001
13002         * class.c (mono_class_get_finalizer): Handle the case when the 
13003         finalizer is inherited.
13004
13005 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13006
13007         * console-io.c: <curses.h> is needed by term.h on solaris.
13008
13009 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
13010
13011         * icall.c, class-internals.h, monodiet.c, class.c: Remove
13012         mono_class_setup_properties where possible. Remove this ftn from
13013         the header file, and make it static.
13014
13015 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13016
13017         * loader.c: Add missing setup_... call.
13018
13019         * class.c: Add missing setup_... calls.
13020
13021         * class.c (mono_class_init): Switch on lazy initialization of 
13022         the generic vtable.
13023         
13024         * class.c (mono_class_init): Fix generics broken by the recent changes.
13025
13026         * monodiet.c (handle_type): Add missing setup_... calls.
13027
13028         * class.c: Back out garbage in previous patch.
13029         
13030         * class.c: Add missing setup_... calls.
13031
13032         * class.c (mono_class_get_method_from_name_flags): Avoid calling
13033         mono_class_setup_methods () if possible.
13034
13035         * class-internals.h (MonoClass): Add 'has_cctor' flag.
13036
13037         * class-internals.h (MonoCachedClassInfo): New structure.
13038
13039         * class.c: Initialize properties and events fields of MonoClass lazily.
13040
13041         * class.c: Add infrastructure for lazily initializing the methods and
13042         vtable fields of MonoClass. Not yet used.
13043
13044         * class.c (mono_class_get_finalizer): New helper function.
13045
13046         * class.c: Add infrastructure for loading some class related data from
13047         an AOT file.
13048
13049         * object.c: Add infrastructure for initializing the vtable from data
13050         in the AOT file.
13051
13052         * gc.c (run_finalize): Use mono_class_get_finalizer ().
13053
13054         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
13055         appropriate initialization function before accessing parts of the
13056         MonoClass structure.
13057
13058         * marshal.c: Fix warnings.
13059         
13060         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
13061
13062         * mono-debug-debugger.c (get_exception_message): Use 
13063         mono_class_get_method_from_name_flags ().
13064
13065 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
13066
13067         * reflection.c, appdomain.c: Replace a few manual searches that
13068         Zoltan missed. (Paolo approved this part of my initial patch).
13069
13070 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
13071
13072         * profiler.c: disable recording statistical events at report time.
13073
13074 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13075
13076         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
13077         to byteswap arrays of enum values, too (bug #72080).
13078
13079 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13080
13081         * appdomain.c (set_domain_search_path): Allow this to be called if
13082         domain->setup is not yet set.
13083
13084         * loader.c (mono_method_get_index): New helper function.
13085
13086         * loader.c reflection.c: Use mono_method_get_index ().
13087
13088         * class.c (mono_class_get_method_from_name_flags): New helper method.
13089
13090         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
13091         this.
13092
13093         * class.c (mono_class_get_cctor): New helper method.
13094
13095         * string-icalls.c object.c class.c marshal.c reflection.c: Use
13096         mono_class_get_method () to look up methods.
13097
13098 2005-02-01  Miguel de Icaza  <miguel@novell.com>
13099
13100         * console-io.c: Fix the build, this should work on Windows.
13101
13102 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
13103
13104         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
13105         be set to null to keep things valid
13106
13107 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13108
13109         * icall.c: added Console 2.0 icalls.
13110         * Makefile.am: added console-io.[ch]
13111         * console-io.[ch]: internal calls for Console 2.0 API.
13112
13113 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13114
13115         * class.c: make sure we consider all the interfaces
13116         when calculating max_interface_id (bug found by
13117         Jeroen Frijters running ikvm).
13118
13119 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13120
13121         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
13122         valuetype fields to null.
13123
13124         * object.c (set_value): Ditto. Fixes #71669.    
13125
13126 2005-01-31  Martin Baulig  <martin@ximian.com>
13127
13128         * metadata.c (mono_metadata_has_generic_params): New public
13129         function; checks whether something is a generic method.
13130
13131 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13132
13133         * appdomain.c: fix infinite recursion when adding assemblies.
13134
13135 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13136
13137         * object.c: Fix small typo to return all items for Environment.
13138         GetCommandLineArgs.
13139
13140 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13141
13142         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
13143         reflection.c: more domain and assembly-unload related fixes
13144         and memory leaks plugs.
13145
13146 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13147
13148         * 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.
13149
13150 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13151
13152         * loader.c (mono_method_signature): Make this method lazy
13153         (mono_get_method_from_token): Don't computate the signature here.
13154
13155         Doing this saves quite a bit of memory. I got 90 kb on starting up
13156         monodoc. It should also save some disk reads on startup.
13157
13158         * *: MonoMethod->signature might be NULL now. You *MUST* use
13159         mono_method_signature.
13160
13161 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
13162
13163         * object.c (mono_runtime_get_main_args): Return an array from the
13164         current domain here. Fixes #71938.
13165
13166 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13167
13168         * monitor.c: formatting changes to comply with the
13169         mono coding style and remove #ifdefs from the code.
13170
13171 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13172
13173         * metadata.c, private.h: remove some unneeded data
13174         and use a more compact representation for table schemas.
13175
13176 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13177
13178         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
13179         to get a better distribution in hash tables.
13180         * *.c: use mono_aligned_addr_hash() where appropriate.
13181         * assembly.c: make var static.
13182
13183 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13184
13185         * domain-internals.h: Put MonoJitInfo on a diet.
13186
13187         * domain.c: Fix a warning.
13188
13189 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13190
13191         * gc.c: rework the gc handles code to reuse handles
13192         when freed.
13193
13194 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13195
13196         * domain.c: fixed long standing bug in mono_string_equal() which
13197         was brought to light with the ldstr changes.
13198
13199 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13200
13201         * reflection.c: Remove warning by adding missing include for marshal.h
13202
13203 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13204
13205         * domain.c, object.c: change the ldstr_table to hold
13206         MonoString* as keys: makes the runtime isinterned lookup
13207         faster and simplifies memory management.
13208
13209 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
13210  
13211         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
13212         possible to add imperative security checks before calling the icall.
13213         * reflection.c: Return security attributes on the original MonoMethod
13214         (and not the wrapped one). This fix permissions on icalls.
13215
13216 2005-01-25  Dick Porter  <dick@ximian.com>
13217
13218         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
13219         the check for mktime() support actually test the mktime() return
13220         value.  "Fixes" bug 71682, though the output is still different to
13221         MS.
13222
13223 2005-01-25  Martin Baulig  <martin@ximian.com>
13224
13225         * class.c (mono_class_is_assignable_from): Make this work for
13226         generic instances.
13227
13228 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
13229
13230         * marshal.c (mono_string_utf8_to_builder)
13231         (mono_string_builder_to_utf16): We might not have ownership of the
13232         string. In thise case, we need to create a new buffer.
13233
13234         * object-internals.h (mono_stringbuilder_capacity): sb->str might
13235         be null, in which case, use the default capacity.
13236
13237 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13238
13239         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
13240         GC events to the profiler.
13241
13242 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13243
13244         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
13245         if you don't want the GC to run.
13246
13247 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
13248
13249         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
13250         start providing a GC API and keeping different implementations in
13251         their own file.
13252         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
13253
13254 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13255
13256         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
13257         mmap rather than allocating a huge buffer.
13258         (mono_debug_close_mono_symbol_file): Free the buffer allocated
13259         above.
13260
13261 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13262
13263         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
13264         and CheckExecutionRights.
13265         * reflection.c|h: Keep the index of the declarative security to be 
13266         used, instead of the pointer, when AOT compiler is used. Also add 
13267         class initialization when requesting demands.
13268         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
13269         CheckExecutionRights. Both properties are now FALSE by default, and
13270         unmodifiable, unless the --security option is used.
13271
13272 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13273
13274         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
13275         reflection.c: properly refcount images and assemblies, many leaks fixed.
13276
13277 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13278
13279         * threadpool.c: increase the timeout for threads in the thread pool to
13280         10s.  Fixes bug #67159.
13281
13282 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
13283
13284         * class-internals.h: Sun's compiler insists on explicit
13285         signed on bit fields to handle then correctly.
13286
13287 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
13288
13289         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
13290         Make the size of the array fit only the number of invalid path
13291         chars that we have.
13292
13293         * class.c (_mono_class_get): Improve the error reporting when a
13294         class referenced is not found, to assist debugging. 
13295
13296 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
13297
13298         * threads.c: fix off-by-one error.
13299         * domain.c: free data allocated in the domain.
13300
13301 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13302
13303         * reflection.c (mono_method_body_get_object): Fill out exception info
13304         as well.
13305
13306         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
13307         structure.
13308         
13309 2005-01-19  Martin Baulig  <martin@ximian.com>
13310
13311         * loader.c (mono_get_method_constrained): Make this work again.
13312
13313 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13314
13315         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
13316         guint16 to match the managed side.
13317
13318         * reflection.c (mono_reflection_body_get_object): Fill out local
13319         variables array.
13320
13321         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
13322         as well.
13323
13324         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
13325         'local_var_sig_token'.
13326
13327 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13328
13329         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
13330         System.Drawing.
13331
13332         * reflection.c (mono_method_body_get_object): Handle abstract and
13333         runtime methods.
13334
13335 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
13336
13337         * marshal.c, loader.c, class-internals.h, reflection.c:
13338         store the emthod data for a wrapper in an array instead of a list.
13339
13340 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
13341
13342         * marshal.c: change the code to allocate memory more
13343         conservatively for method wrappers.
13344
13345 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13346
13347         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
13348         fields from MonoClass to the marshal info structure where they belong.
13349
13350 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13351
13352         * class.c, object.c, class-internals.h, marshal.c: rearrange
13353         some fields and tweak some types to lower memory usage.
13354
13355 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
13356
13357         * threads.c (signal_thread_state_change): Handle the case when the
13358         target thread is the current thread.
13359
13360         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
13361
13362         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
13363         emit_ptr_to_object_conv. 
13364
13365         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
13366         marshalling. Fixes #71352.
13367
13368 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13369
13370         * metadata.h, blob.h: move table enum to blob.h so it can be included
13371         in any header.
13372         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
13373         cut the size of MonoImage/MonoDynamicImage.
13374
13375 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
13376
13377         * profiler.c (mono_profiler_install_simple): Fix default arguments.
13378
13379 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
13380
13381         * reflection.c, reflection.h, icall.c: add a function to check
13382         if an attribute type is defined for a metadata object.
13383
13384 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
13385
13386         * object-internals.h: Added some needed fields from StringBuilder class.
13387         * marshal.c: Set the maxCapacity when creating a StringBuilder.
13388
13389 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
13390
13391         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
13392         threads before shutting down the runtime.
13393
13394         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
13395
13396 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13397
13398         * object-internal.h, threads.c: implement stacksize and 
13399         parameterized thread start functionality (requires
13400         matching corlib). Marked broken code for later removal.
13401
13402 2005-01-12  Martin Baulig  <martin@ximian.com>
13403
13404         * class-internals.h (MonoGenericClass): Moved the `initialized'
13405         flag to MonoDynamicGenericClass, removed `init_pending'.
13406         (MonoGenericInst): Added `is_reference' flag.
13407
13408 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
13409
13410         * reflection.c (mono_image_create_pefile): Only set the pe_offset
13411         inside the MSDOS header. Fixes #71201.
13412
13413         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
13414         gc thread.
13415         (mono_domain_finalize): Ditto.
13416
13417 2005-01-12  Martin Baulig  <martin@ximian.com>
13418
13419         * class.c (mono_get_shared_generic_class): Use the cache for
13420         non-dynamic generic classes.
13421
13422         * class-internals.h (mono_class_create_generic_2): Removed
13423         function prototype, this function is now static inside class.c.
13424
13425         * class.c (mono_class_create_generic_2): Made this static, only
13426         call it from mono_class_init() and mono_class_setup_parent().
13427         (collect_implemented_interfaces_aux): Call mono_class_init() on
13428         the interfaces we collect.
13429         (mono_class_setup_vtable): Call mono_class_init (class->parent).
13430
13431 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13432
13433         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
13434         it a real thread handle.
13435
13436         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
13437         MonoJitExceptionInfo, since each catch clause needs its own variable.
13438         
13439 2005-01-11  Dick Porter  <dick@ximian.com>
13440
13441         * image.c (mono_pe_file_open): New variant on mono_image_open()
13442         that does not set up the CLI metadata; used for FileVersionInfo so
13443         it can get the data for windows binaries too.
13444         
13445         * process.c (process_read_string_block): Don't read off the end of
13446         the StringTable block.
13447
13448         These both fix bug 70766.
13449
13450 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
13451
13452         * gc.c: set some fields to NULL at GC cleanup time.
13453         * threads.c: if we quit the main thread, call exit ().
13454
13455 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13456
13457         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
13458
13459 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
13460
13461         * threads.h, threads.c, object.c: added accessor and settor for
13462         main_thread. Handle it specially when exiting from it: wait
13463         for other foreground threads to exit.
13464
13465 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13466
13467         * process.c, verify.c: remove some bloat.
13468
13469 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13470
13471         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
13472         the calling convention to cdecl under win32.
13473
13474 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
13475
13476         * object.c (mono_object_get_size): New function to get the size of
13477         an object instance.
13478
13479         * profiler.c (simple_allocation): Use above.
13480
13481 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
13482
13483         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
13484         ves_icall_System_AppDomain_getRootDomain (as it's not required to
13485         get an appdomain by it's id and we can't assume the root's id is 0).
13486         * domain-internals.h: Change the function prototype to match.
13487         * icall.c: Change the icall table for AppDomain.
13488
13489 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
13490
13491         * locales.c (string_invariant_compare_char): Only compute
13492         GUnicodeTypes in the case where we need them.  Test for ordinality
13493         first and return if so.
13494
13495         From the commit:
13496
13497                 /*
13498                  * FIXME: here we must use the information from c1type and c2type
13499                  * to find out the proper collation, even on the InvariantCulture, the
13500                  * sorting is not done by computing the unicode values, but their
13501                  * actual sort order.
13502                  */
13503
13504 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13505
13506         * loader.c: for P/Invoke methods, allow the "Internal" shared
13507         library name to refer to the calling process symbol namespace.
13508
13509 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13510
13511         * Makefile.am: Add the security manager to the build.
13512         * security-manager.c|h: New. Initialization of the security manager.
13513
13514 2005-01-07  Dick Porter  <dick@ximian.com>
13515
13516         * threads.c: 
13517         * monitor.c: Update thread state during Monitor and WaitHandle
13518         waits.  Fixes bug 71031.
13519
13520 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13521
13522         * reflection.c (property_encode_signature): Correctly handle when the
13523         property has no methods.
13524
13525 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13526
13527         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
13528         
13529         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
13530         fields from mb, not rmb. Fixes #71017.
13531
13532         * marshal.c (emit_ptr_to_str_conv): Add support for 
13533         ByValTStr -> string conversion. Fixes #71015.
13534
13535         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
13536
13537         * mempool.c (mono_mempool_contains_addr): New helper function.
13538
13539 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13540
13541         * metadata.c (mono_metadata_compute_size): Fix size calculation of
13542         HasSematics encoded fields.
13543         
13544         * metadata.c (mono_type_to_unmanaged): Improve error message for 
13545         invalid string marshalling.
13546
13547         * metadata.c: Fix warnings.
13548         
13549 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13550
13551         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
13552         profiler support.
13553
13554 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13555
13556         * domain.c object.c domain-internals.h: Revert part of r38077 since the
13557         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
13558         tests.
13559
13560 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13561
13562         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
13563         so methods containing these can be AOTed.
13564
13565 2005-01-03  Martin Baulig  <martin@ximian.com>
13566
13567         * loader.c (find_method): Removed the hack for generic instances.
13568         (method_from_memberref): If our parent is a generic instance, pass
13569         its generic type definition to find_method() and then inflate the
13570         method.
13571         (mono_get_method_constrained): Pass the generic type definition to
13572         find_method() and inflate the method later.
13573
13574         * class-internals.h (MonoStats): Added `generic_class_count'.
13575
13576         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
13577         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
13578
13579         * reflection.c (mono_custom_attrs_from_params): Don't ignore
13580         generic type definitions.
13581
13582 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13583
13584         * loader.c icall.c: Fix warnings.
13585
13586 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
13587
13588         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
13589         blittable types. Fixes #70864.
13590
13591 2004-12-29  Martin Baulig  <martin@ximian.com>
13592
13593         * icall.c
13594         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
13595
13596         * reflection.c (mono_method_get_object): Create a
13597         "System.Reflection.MonoGenericMethod" for inflated methods; don't
13598         call mono_get_inflated_method().
13599
13600         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
13601
13602 2004-12-27  Martin Baulig  <martin@ximian.com>
13603
13604         * class-internals.h (MonoMethod): Added `is_inflated' flag.
13605         (MonoMethodInflated): Added `inflated' field.
13606
13607         * class.c (mono_class_inflate_generic_method): Don't really
13608         inflate the method here; just set the `is_inflated' flag in the
13609         MonoMethod.
13610         (mono_class_get_inflated_method): Actually inflate the method here
13611         if it's not already inflated; we use the MonoMethodInflated's new
13612         `inflated' field as a cache.
13613
13614 2004-12-26  Martin Baulig  <martin@ximian.com>
13615
13616         * class.c
13617         (inflate_generic_class): Moved some code out of inflate_generic_type().
13618         (mono_class_inflate_generic_method): If we're already inflated,
13619         inflate the context and use the declaring method; ie. make sure
13620         the declaring method of an inflated method is always the generic
13621         method definition.
13622         (mono_class_create_from_typedef): Create
13623         `class->generic_container->context->gclass'.
13624
13625 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13626
13627         * metadata-internals.h, marshal.c, reflection.c: More
13628         MonoGHashTable->GHashTable.
13629
13630         * domain-internals.h, class.c: Change MonoGHashTable's into
13631         GHashTables for some cases where no gc stuff is used
13632
13633         All users: update apis
13634
13635 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
13636
13637         * metadata.c (builtin_types): Make this `const'. Makes this get
13638         put into the shareable section.
13639         (mono_metadata_init): Casts to make gcc happy.
13640
13641 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
13642
13643         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
13644
13645 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
13646
13647         * icall.c: Added an internal call to retrieve the position and length
13648         of assembly-level declarative security attributes (RequestMinimum, 
13649         RequestOptional and RequestRefuse). This is used by the Assembly class
13650         to re-create the corresponding permission sets.
13651
13652 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13653
13654         * marshal.c: fix the stelemref wrapper to be type correct
13655         (and faster).
13656
13657 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13658
13659         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
13660         to do key & 0x7fffffff. Hashtable already does this. It just
13661         results in longer code.
13662
13663 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13664
13665         * appdomain.c: Bump corlib version.
13666         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
13667         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
13668         * reflection.c|h: Add functions to get declarative security infos
13669         (blob position and length) for assemblies, classes and methods.
13670
13671 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
13672
13673         * reflection.c: sort the constant table (bug #70693).
13674
13675 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
13676
13677         * object-internals.h, threads.c, domain.c: add accessors for
13678         the MonoThread and MonoDomain tls keys.
13679
13680 2004-12-18  Martin Baulig  <martin@ximian.com>
13681
13682         * class.c (inflate_generic_type): If we're inflating a generic
13683         instance, set `ngclass->context->container = context->container';
13684         ie. the container we inflated into.
13685
13686         * metadata.c (mono_metadata_parse_generic_param): Reflect above
13687         inflate_generic_type() changes.
13688
13689 2004-12-17  Martin Baulig  <martin@ximian.com>
13690
13691         * class-internals.h
13692         (MonoGenericClass): Replaced `MonoType *generic_type' with
13693         `MonoClass *generic_class'.  Removed `dynamic_info'; if
13694         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
13695         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
13696
13697 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13698
13699         * exception.c (mono_exception_from_token): New helper function.
13700
13701 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13702
13703         * assembly.c (mono_assembly_load_with_partial_name): Call 
13704         mono_assembly_loaded before invoking the preload hooks. Fixes
13705         #70564.
13706
13707         * object-internals.h (MonoThread): Change culture_info and 
13708         ui_culture_info into an array.
13709
13710         * threads.c: Cache culture info objects from more than one appdomain.
13711
13712         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
13713         current UI culture.
13714
13715 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13716
13717         * threads.h threads.c appdomain.c: Clear the culture_info field of
13718         all threads during unloading if they point to an object in the dying
13719         appdomain.
13720
13721 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
13722
13723         * culture-info.h (TextInfoEntry): New struct
13724         * object-internals.h: sync with managed
13725         * locales.c: fill the `text_info_data' field
13726         * culture-info-tables.h: update
13727
13728 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
13729
13730         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
13731         collector.
13732
13733 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
13734
13735         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
13736         (ves_icall_ModuleBuilder_getMethodToken): Ditto
13737
13738 2004-12-12  Martin Baulig  <martin@ximian.com>
13739
13740         * mono-debug-debugger.c (write_type): If we're an enum and the
13741         builtin types have already been initialized, call mono_class_init().
13742
13743 2004-12-11  Martin Baulig  <martin@ximian.com>
13744
13745         * metadata.c (mono_metadata_load_generic_params): Added
13746         `MonoGenericContainer *parent_container' argument; automatically
13747         compute `container->is_method'; pass the correct owner to
13748         get_constraints().      
13749
13750         * reflection.c (compare_genericparam): Sort the GenericParam table
13751         according to increasing owners. 
13752
13753 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13754
13755         * profiler.c: allow disabling the default profiler.
13756
13757 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
13758
13759         * decimal.c, icall.c: allow disabling System.Decimal support.
13760
13761 2004-12-09  Marek Safar <marek.safar@seznam.cz>
13762
13763         * reflection.c: Add support for null attribute arguments.
13764
13765 2004-12-09  Martin Baulig  <martin@ximian.com>
13766
13767         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
13768         names to get rid of compiler warnings.
13769
13770 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13771
13772         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
13773         mono_marshal_load_type_info (). Fixes #69625.
13774         (mono_marshal_get_ptr_to_struct): Likewise.
13775
13776 2004-12-08  Martin Baulig  <martin@ximian.com>
13777
13778         * mono-debug.h: Bumped version number to 47.
13779
13780         * mono-debug-debugger.c
13781         (mono_debugger_event_handler, mono_debugger_event): Take two
13782         guint64 arguments insteed of a gpointer and a guint32.  
13783
13784 2004-12-08  Martin Baulig  <martin@ximian.com>
13785
13786         * debug-mono-symfile.h
13787         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
13788         `address' to `native_offset'.
13789
13790 2004-12-08  Martin Baulig  <martin@ximian.com>
13791
13792         * class.c (mono_class_create_from_typespec): Only inflate if we
13793         either have `context->gclass' or `context->gmethod'.
13794
13795 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13796
13797         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
13798
13799         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
13800
13801         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
13802
13803         * reflection.c (mono_assembly_get_object): Remove the workaround put
13804         in for the release.
13805         
13806         * appdomain.c: Use the corlib_internal field from MonoAssembly.
13807
13808         * appdomain.c: Bump corlib version.
13809
13810         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
13811         be visible in other appdomains.
13812
13813 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
13814
13815         * threads.c: Interlocked inc and dec for longs were messed up,
13816         use a KISS based impl for this. Fixes 70234
13817
13818 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13819
13820         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
13821
13822 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
13823
13824         * icall.c: fix to follow policy not to allow struct
13825         arguments in icalls.
13826
13827 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13828
13829         * process.c: make the patch that handles spaces in file paths work
13830         on mono/windows too.
13831
13832 2004-12-06  Martin Baulig  <martin@ximian.com>
13833
13834         * class.c (mono_class_create_generic): Call
13835         mono_class_setup_supertypes() if we're dynamic.
13836         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
13837
13838 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13839
13840         * object-internals.h: Add new fields to MonoThread.
13841
13842         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13843
13844         * icall.c threads-types.h threads.c: Add new icalls.
13845
13846         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
13847
13848         * object-internals.h (MonoReflectionAssembly): Sync object layout with
13849         managed side.
13850
13851         * appdomain.c: Bump corlib version.
13852
13853         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
13854         internal assemblies. Fixes #69181.
13855
13856 2004-12-05  Martin Baulig  <martin@ximian.com>
13857
13858         * class.c (mono_class_inflate_generic_signature): Make this a
13859         no-op if `context' is NULL or we don't have any type parameters;
13860         also copy `sentinelpos'.        
13861
13862 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
13863
13864         * image.c: Add unbox_wrapper_cache.
13865
13866         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
13867
13868         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
13869         function generator.
13870         
13871         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
13872         Fixes #70173.
13873
13874         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
13875         
13876 2004-12-04  Martin Baulig  <martin@ximian.com>
13877
13878         * loader.c (mono_method_get_signature_full): New public function;
13879         like mono_method_get_signature(), but with an additional
13880         `MonoGenericContext *' argument.
13881
13882         * class.c (mono_class_inflate_generic_signature): Formerly known
13883         as inflate_generic_signature(); make this public.
13884
13885 2004-12-04  Martin Baulig  <martin@ximian.com>
13886
13887         * metadata.c
13888         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
13889         instead of a `MonoGenericContainer *'.  
13890         (mono_metadata_parse_array_full): Likewise.
13891         (mono_metadata_parse_signature_full): Likewise.
13892         (mono_metadata_parse_method_signature_full): Likewise.
13893         (mono_metadata_parse_generic_inst): Likewise.
13894         (mono_metadata_parse_generic_param): Likewise.
13895         (mono_metadata_parse_mh_full): Likewise.
13896         (mono_type_create_from_typespec_full): Likewise.
13897
13898 2004-12-03  Martin Baulig  <martin@ximian.com>
13899
13900         * class-internals.h (MonoGenericContainer): Replaced the
13901         `MonoGenericContext * pointer with a `MonoGenericContext'
13902         structure and made it the first element.
13903
13904 2004-12-03  Martin Baulig  <martin@ximian.com>
13905
13906         * class.c
13907         (inflate_generic_type): Set the `context->container' when creating
13908         a new MonoGenericContext.
13909         (mono_class_inflate_generic_method): Likewise.
13910         (mono_class_create_from_typespec): Just use `context->container'
13911         to get the container.
13912
13913         * loader.c (method_from_methodspec): Set `context->parent' from
13914         `context->container' - and if that's a method container, use its
13915         parent.  Also set the `context->container' when creating a new
13916         MonoGenericContext.
13917         (mono_get_method_from_token): Use just `context->container' to get
13918         the container.
13919
13920         * metadata.c (do_mono_metadata_parse_generic_class): Also set
13921         `gclass->context->container'.
13922
13923         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
13924         the `context->container' when creating a new MonoGenericContext.
13925
13926 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
13927
13928         * reflection.c (compare_genericparam): Sort params with identical
13929         owner by their number. Fixes gen-111 on sparc.
13930
13931 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13932
13933         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
13934         around the domain changes.
13935
13936         * appdomain.c (mono_domain_unload): Handle the case when the thread
13937         calling Unload is itself being aborted during unloading. Fixes #70022.
13938
13939         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
13940
13941         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
13942         checkpoint_func as an icall so it gets a wrapper.
13943         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
13944         in the cross-appdomain wrappers too.
13945
13946         * threads.c (mono_thread_has_appdomain_ref): Make this public.
13947
13948         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
13949
13950         * reflection.c: Fix some memory leaks.
13951         
13952 2004-12-02  Martin Baulig  <martin@ximian.com>
13953
13954         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
13955
13956         * metadata.c (generic_class_cache): New static hashtable.
13957         (mono_metadata_lookup_generic_class): New public method.
13958
13959 2004-12-02  Martin Baulig  <martin@ximian.com>
13960
13961         * class.c (mono_class_create_from_typedef): Call
13962         mono_class_setup_parent() and mono_class_create_mono_type() before
13963         parsing the interfaces.
13964
13965 2004-12-02  Martin Baulig  <martin@ximian.com>
13966
13967         * metadata.c (generic_inst_cache): New static hashtable.
13968         (mono_metadata_lookup_generic_inst): New public function.
13969         (mono_metadata_inflate_generic_inst): New public function.
13970         (mono_metadata_parse_generic_inst): New public function.
13971         (do_mono_metadata_parse_generic_class): Use the new
13972         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
13973         since this'll also use the cache.
13974
13975         * reflection.c (mono_reflection_bind_generic_method_parameters):
13976         Use mono_metadata_lookup_generic_inst() to use the new cache.
13977
13978         * class.c (inflate_mono_type): Use
13979         mono_metadata_inflate_generic_inst() to inflate a generic
13980         instance; this'll also use the new cache.
13981
13982         * loader.c (method_from_methodspec): Use
13983         mono_metadata_parse_generic_inst() and
13984         mono_metadata_inflate_generic_inst() rather than parsing it
13985         manually, so we can use the new cache.
13986
13987 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13988
13989         * threads.c (wait_for_tids): Do not incorrectly free threads when 
13990         the wait times out.
13991
13992 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13993
13994         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
13995         iter->args based on whether parameters are passed in registers (i.e.
13996         MONO_ARCH_REGPARMS is defined)
13997
13998 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
13999
14000         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
14001         the exception message. Fixes #70070.
14002         (method_from_methodspec): Fix warnings.
14003
14004 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14005
14006         * process.c: (complete_path) return the path quoted
14007
14008 2004-12-01  Martin Baulig  <martin@ximian.com>
14009
14010         * class-internals.h (MonoGenericInst): New structure.
14011         (MonoGenericClass): Replaced `type_argc', `type_argv' and
14012         `is_open' with `MonoGenericInst *inst'.
14013         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
14014         `is_open' with `MonoGenericInst *inst'.
14015
14016 2004-11-30  Martin Baulig  <martin@ximian.com>
14017
14018         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
14019
14020         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
14021         to `generic_class_cache'.
14022
14023         * metadata.c
14024         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
14025         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
14026         (mono_generic_inst_is_valuetype): Renamed to
14027         mono_generic_class_is_valuetype().
14028
14029         * class-internals.h
14030         (MonoGenericInst): Renamed to MonoGenericClass.
14031         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
14032         (MonoClass): Renamed `generic_inst' to `generic_class'.
14033         (MonoGenericContext): Renamed `ginst' to `gclass'.
14034
14035         * object-internals.h
14036         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
14037
14038         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
14039         mono_reflection_generic_class_initialize().
14040
14041         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
14042         now known as "System.Reflection.MonoGenericClass".
14043         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
14044
14045 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
14046
14047         * class-internals.h: Added a flag field to MonoClass to cache the
14048         declarative security attributes actions associated with the class.
14049         * domain-internals.h: Added booleans to MonoJitInfo to cache the
14050         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
14051         applicable to the JITted method.
14052         * reflection.c|h: Added functions to extract (as flags) which security
14053         actions are available (declaratively) for a method, class or assembly.
14054         * metadata.c|h: Added functions to search the declarative security
14055         table in the metadata.
14056         
14057 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
14058
14059         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
14060         EXPORTEDTYPES are already in the class name cache, so there is no
14061         need to add extra code here to look at them. Just removes a bit of
14062         cruft.
14063
14064         (ves_icall_System_Environment_get_TickCount): No need for #if
14065         WINDOWS. We already have the code in io-layer.
14066
14067 2004-11-28  Martin Baulig  <martin@ximian.com>
14068
14069         * loader.c
14070         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
14071         Fixes gen-112.cs.
14072
14073 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
14074
14075         * assembly.c (do_mono_assembly_open): Instead of having a
14076         conditional WITH_BUNDLE, incorporate support for bundles here, by
14077         having a global `bundles' variable holding a pointer to the actual
14078         bundles. 
14079
14080         (mono_register_bundled_assemblies): New API call used by the
14081         bundle code. 
14082
14083         See mkbundle.1 for details.
14084         
14085 2004-11-27  Martin Baulig  <martin@ximian.com>
14086
14087         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
14088         the vtable for generic methods.
14089
14090 2004-11-26  Martin Baulig  <martin@ximian.com>
14091
14092         * metadata.c
14093         (mono_metadata_generic_method_hash): New public function.
14094         (mono_metadata_generic_method_equal): Likewise.
14095
14096         * class-internals.h
14097         (MonoGenericContainer): Added `GHashTable *method_hash'.
14098
14099         * reflection.c (ReflectionMethodBuilder): Added
14100         `MonoGenericContainer *generic_container'.
14101         (reflection_methodbuilder_to_mono_method): Don't create a new
14102         MonoGenericContainer each time we're called.
14103         (mono_reflection_bind_generic_method_parameters): Use
14104         `container->method_hash' to cache the results so we don't create a
14105         different method if we're called several times with the same
14106         arguments.
14107
14108         * loader.c (method_from_methodspec): Use the new
14109         `container->method_hash' here, too.
14110
14111 2004-11-26  Martin Baulig  <martin@ximian.com>
14112
14113         * class.c (inflate_generic_signature): Correctly compute
14114         `res->has_type_parameters'.
14115         (mono_class_vtable): Use the `has_type_parameters' flag to
14116         determine whether we're a generic method.
14117
14118         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
14119
14120 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14121
14122         * object.c (mono_runtime_run_main): Fix a small memory leak.
14123
14124 2004-11-25  Martin Baulig  <martin@ximian.com>
14125
14126         * class.c (set_generic_param_owner): Fixed the loop.
14127
14128 2004-11-25  Martin Baulig  <martin@ximian.com>
14129
14130         * object.c (mono_class_vtable): Don't create any JIT wrappers for
14131         generic methods.
14132
14133 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14134
14135         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
14136         names. Fixes #69787.
14137
14138 2004-11-24  Martin Baulig  <martin@ximian.com>
14139
14140         * class.c (mono_class_create_generic_2): If we don't have a
14141         `ginst->parent', inflate `gklass->parent' to get our parent.
14142
14143 2004-11-24  Martin Baulig  <martin@ximian.com>
14144
14145         * reflection.c (compare_genericparam): Correctly sort the
14146         GenericParam table; fixes #69779.
14147
14148 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
14149
14150         * reflection.c: When writing a PE file, don't create a huge
14151         buffer in memory. Just write the arrays we have to the file.
14152         This reduces memory usage.
14153
14154         * metadata-internals.h: MonoDynamicStream pefile is no longer used
14155         globally.
14156
14157 2004-11-17  Martin Baulig  <martin@ximian.com>
14158
14159         * class.c (mono_class_init): Don't setup `class->parent' for
14160         dynamic instances; moved this to mono_class_generic_2().
14161         (mono_class_create_generic): Also set `klass->inited' for dynamic
14162         generic instances.
14163         (mono_class_create_generic_2): Don't do anything for dynamic
14164         generic instances.  Set `klass->parent' here and also call
14165         mono_class_setup_parent() here. 
14166
14167         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
14168         `MonoType *parent' argument; set `ginst->parent' before calling
14169         mono_class_create_generic_2(), so we set the correct parent.
14170
14171 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
14172
14173         * reflection.c: allow getting attributes from ModuleBuilder
14174         (used by ikvm).
14175
14176 2004-11-17  Martin Baulig  <martin@ximian.com>
14177
14178         * class.c (mono_class_create_from_typedef): If a type parameter is
14179         inherited from an outer class, set its owner to that class.
14180
14181 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
14182
14183         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
14184           for (int*) written size. This fixes bug #69592.
14185
14186 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14187
14188         * icall.c: Added IsAuthenticodePresnet internal call.
14189         * image.c|h: New function that check a MonoImage for an Authenticode
14190         signature in the certificate PE data directory.
14191         * security.c|h: New internal call to ask the runtime if an 
14192         Authenticode signature seems referenced in the PE header.
14193
14194 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
14195
14196         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
14197
14198         * reflection.c (mono_image_create_pefile): Free the assembly streams
14199         after writing out the assembly file.
14200
14201         * object.c (mono_runtime_run_main): Fix small memory leak.
14202
14203         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
14204         property access modifiers. Fixes #69389.
14205
14206 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14207
14208         * domain.c, object.c, object-internals.h, domain-internals.h,
14209         object.h, marshal.c: keep dynamic code info per domain.
14210
14211 2004-11-15  Martin Baulig  <martin@ximian.com>
14212
14213         * class.c (mono_type_get_name_recurse): Put type arguments in
14214         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
14215         see bug #68387.
14216
14217 2004-11-15  Martin Baulig  <martin@ximian.com>
14218
14219         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
14220         (mono_class_setup_vtable): When computing `the_cname' for a
14221         generic instance, don't include the namespace since we'd otherwise
14222         add it twice.
14223
14224 2004-11-15  Martin Baulig  <martin@ximian.com>
14225
14226         * class.c (mono_class_create_generic): Changed return type to void.
14227         (mono_class_create_generic_2): New public function; setup
14228         `class->method', `class->field' and `class->interfaces' here
14229         instead of in mono_class_init().
14230
14231         * class.h (mono_class_create_generic): Moved to class-internals.h.
14232
14233 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
14234
14235         * reflection.c (mono_image_create_pefile): take a file HANDLE.
14236         rather than writing to memory, write to this file. Right now,
14237         we are just writting into a buffer, and copying that. However
14238         we can avoid the buffer later.
14239
14240         (mono_dynamic_stream_reset): new function
14241
14242         * icall.c, object-internals.h: update for the above.
14243
14244 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
14245
14246         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
14247         have been using gc'd memory. First it is slower, unlikely
14248         the comment in the source code said, secondly, it increases
14249         our footprint to do it in the gc.
14250
14251         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
14252         the method so that it does not have to copy to managed code.
14253
14254 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14255
14256         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
14257
14258 2004-11-12  Martin Baulig  <martin@localhost>
14259
14260         * reflection.c (mono_image_create_token): Allow generic method
14261         definitions here, since they may appear in an `.override'; see
14262         gen-98/gen-99 for an example.
14263
14264 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
14265
14266         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
14267         #69365.
14268
14269         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
14270         descriptive.
14271
14272 2004-11-11  Martin Baulig  <martin@ximian.com>
14273
14274         * class.c (mono_class_setup_vtable): In an explicit interface
14275         implementation, the method name now includes the arity.
14276
14277 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
14278
14279         * object.c (mono_array_full_copy): Fix warning.
14280
14281 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
14282
14283         * appdomain.c: Removed look_for_method_by_name(). Use the new method
14284         mono_class_get_method_from_name() instead.
14285         
14286         * class-internals.h: Added two new types of wrappers. 
14287         Added MonoRemotingTarget enum. Added new trampoline function type, which
14288         takes an additional MonoRemotingTarget value as parameter, so it is
14289         possible to request a trampoline for a specific target.
14290         
14291         * class.c: Added new mono_class_get_method_from_name() method.
14292         
14293         * class.h: In MonoRemoteClass, we can have now to vtables, one for
14294         general remoting sinks and one specific for cross domain calls.
14295         
14296         * debug-helpers.c: Added new wrapper names.
14297         
14298         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
14299         of a remote class.
14300         
14301         * image.c: Porperly delete value objects form the remoting invoke hashtable.
14302         
14303         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
14304         with several other methods (mono_marshal_get_xappdomain_dispatch,
14305         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
14306         and others) can generate a fast remoting wrapper for cross domain calls.
14307         More information can be found in docs/remoting.
14308         Other changes: Removed mono_find_method_by_name, and used
14309         mono_class_get_method_from_name instead.
14310         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
14311         is stored in the remoting invoke hashtable.
14312         
14313         * marshal.h: published the new method for getting the xdomain wrapper,
14314         and also added a method for getting the adequate wrapper for a given
14315         method and target.
14316         
14317         * object-internals.h, object.c: Added a couple of methods for capying and
14318         cloning arrays.
14319         Modified mono_install_remoting_trampoline, which takes the new remoting
14320         trampoline that has a remoting target as parameter.
14321         mono_class_proxy_vtable now also takes a remoting target as parameter, and
14322         will return the most suitable vtable for the target.
14323         Added mono_remote_class_vtable, which returns the vtable of a remote class
14324         (which can be the normal remoting vtable or the xdomain vtable).
14325         
14326         * threads.c: the xdomain invoke and dispatch wrappers must also be
14327         protected against interruptions.
14328
14329 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14330
14331         * icall.c: use memmove in BlockCopyInternal when the source and
14332         destination arrays are the same.
14333
14334 2004-11-09  Martin Baulig  <martin@ximian.com>
14335
14336         * class-internals.h (MonoGenericContainer): Removed `method' and
14337         `signature', replaced them with `is_method' and `is_signature'
14338         flags.  Added `context'.
14339
14340         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
14341         instead of a `MonoGenericContainer *'.
14342
14343         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
14344         for dynamic type parameters.
14345         (mono_metadata_load_generic_params): Setup `container->context'.
14346
14347         * reflection.c (mono_reflection_setup_generic_class): Setup
14348         `tb->generic_container->context'.
14349         (do_mono_reflection_bind_generic_parameters): Use
14350         mono_class_inflate_generic_type() to correctly inflate types,
14351         rather than using our own hack just for MONO_TYPE_VAR.
14352
14353 2004-11-09  Martin Baulig  <martin@ximian.com>
14354
14355         * class.c (mono_class_inflate_generic_method): Small fix; don't
14356         crash here.
14357
14358         * icall.c
14359         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
14360         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
14361         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
14362         (ves_icall_Type_BindGenericParameters): Likewise.
14363         (ves_icall_Type_get_IsGenericInstance): Likewise.
14364         (ves_icall_Type_GetGenericParameterPosition): Likewise.
14365         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
14366         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
14367         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14368
14369 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14370
14371         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
14372         assembly versions and public key tokens. Fixes #69113.
14373
14374 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
14375
14376         * metadata.c: fix bug introduced with the type cache changes
14377         on 2004-11-06.
14378
14379 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
14380
14381         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
14382         the MonoClass pointer instead of the token in exception clauses.
14383         * reflection.c: updates for the above and make the code not depend
14384         on the structure of MonoExceptionClause.
14385
14386 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14387
14388         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14389         Add support for dynamic assemblies. Fixes #69114.
14390
14391         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
14392
14393 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
14394
14395         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
14396         since most only those methods use it. the code member of
14397         MonoMethodPInvoke was dead, so that can be removed too. Also,
14398         remove inline_count (again, not used), and move slot so that it
14399         can share bits with some other flags. This saves 8 bytes in the
14400         structure and gives us about 50 kb back for mcs helloworld.cs
14401
14402         * *.[ch]: Do naming changes for the above.
14403
14404         * loader.c (mono_method_get_header): Lazily init the header
14405         on first access.
14406         (mono_get_method_from_token): don't init the header here
14407         (mono_free_method): the header may never be allocated
14408
14409         Overall, this saves 150 kb of unmanaged allocations
14410         for mcs helloworld.cs. That accounts for 10% of the unmanaged
14411         memory at runtime.
14412         
14413         * loader.c, loader.h (mono_method_get_header): new accessor.
14414
14415         * *.[ch]: use the above method. Prepares us to lazily load
14416         the header.
14417
14418         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
14419         three warnings, which are actual bugs (see 69206).
14420
14421         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
14422         unused. Saves a cool 4 bytes / method.
14423
14424 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
14425
14426         * metadata.c (builtin_types): Add types for System.Object here.
14427         (mono_metadata_parse_type_full): Cache MonoType*'s that are
14428         for a class or valuetype from klass->this_arg or klass->byval_arg.
14429
14430         On mcs for a hello world, this gets us down from 21836 MonoType's
14431         to 14560.
14432
14433         (mono_metadata_free_type): Account for the above change.
14434
14435 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
14436
14437         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
14438         exception instead of asserting if name is null.
14439         (ves_icall_System_AppDomain_GetData): Ditto.
14440
14441 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
14442
14443         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
14444         EnumBuilder.
14445
14446         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
14447         Return NULL when the domain does not have entry_assembly set.
14448
14449         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
14450         Add a 'resource_modules' argument.
14451         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
14452
14453         * reflection.c (mono_reflection_create_runtime_class): Move setting
14454         of wastypebuilder here, so mono_get_type_object () returns a MonoType
14455         for enums too.
14456
14457         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
14458         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
14459         Throw an ArgumentNullException if 'ptr' is null.
14460
14461         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
14462         assemblies here. Fixes #69020.
14463
14464 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
14465
14466         * reflection.c (build_compressed_metadata): Fix the previous patch for
14467         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
14468         the stack.
14469
14470 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
14471
14472         * assembly.c (mono_assembly_names_equal): Allow a match if one of
14473         the cultures is false. Fixes #69090.
14474
14475         * reflection.c (build_compressed_metadata): Fix invalid memory read 
14476         detected by valgrind.
14477         
14478         * reflection.c (mono_reflection_get_type): Avoid triggering a 
14479         TypeResolve multiple times for the same type. Fixes #65577.
14480
14481 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
14482
14483         * marshal.c: Avoid using ldftn to call managed functions. It is
14484         much slower than just a call.
14485
14486         * reflection.c (mono_module_get_object): free the basename we
14487         allocate here from glib.
14488         
14489         * reflection.c (ensure_runtime_vtable): make sure to free
14490         overrides.  Also, we were allocating an array of MonoMethod not an
14491         array of MonoMethod*.
14492
14493         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
14494
14495         * image.c (mono_image_close): free image->guid here.
14496
14497 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
14498
14499         * reflection.c: Fix some spec conformance issues with the PE file
14500         structures so mcs compiled apps run on the Net 2.0 beta.
14501
14502 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
14503
14504         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
14505         Implement this. Fixes #67264.
14506
14507         * debug-helpers.h debug-helpers.c marshal.c: Move 
14508         mono_find_method_by_name to debug-helpers.c.
14509
14510 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
14511
14512         * object.c (mono_release_type_locks): type_initialization_hash is
14513         a GHashTable.
14514
14515         * reflection.c object.c object-internals.h: Fix warnings.
14516
14517         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
14518         without accessors. Fixes #61561.
14519
14520         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
14521         application base from the root domain if not set. Fixes #65641.
14522         (mono_runtime_init): Fix warning.
14523
14524 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14525
14526         * appdomain.c: call mono_thread_pool_init.
14527         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
14528         of worker threads based on the number of CPUs and the environment
14529         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
14530         for non-windows (windows) systems.
14531
14532 2004-10-27  Chris Toshok  <toshok@ximian.com>
14533
14534         * mono-debug-debugger.c (write_class): don't call mono_class_init
14535         here, as even with the check for (!klass->init_pending), we get
14536         into a situation where we're hitting cycles in class
14537         initialization.  Fixes #68816.
14538
14539 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
14540
14541         * image.c: Avoid overwriting values in the loaded_images_hash when an
14542         assembly is loaded multiple times. Fixes #61152.
14543
14544         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
14545         so multiple satellite assemblies for the same name can be loaded.
14546         Fixes #68259.
14547
14548         * mono_domain_assembly_preload: Actually return the loaded assembly, 
14549         not NULL.
14550
14551         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
14552         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
14553
14554         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
14555         pending finalizers are not invoked after the appdomain has been 
14556         unloaded. Fixes #67862.
14557
14558 2004-10-22  Martin Baulig  <martin@ximian.com>
14559
14560         * mono-debug-debugger.c
14561         (mono_debugger_runtime_invoke): Don't box valuetypes.
14562
14563 2004-10-22  Chris Toshok  <toshok@ximian.com>
14564
14565         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
14566         don't hide private methods.
14567
14568 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
14569
14570         * icall.c: Allows the runtime to "share" (when known) the public key
14571         token of an assembly. This avoid the need to recalculate the token 
14572         (from the public key) in managed code.
14573
14574 2004-10-21  Chris Toshok  <toshok@ximian.com>
14575
14576         * debug-helpers.c (append_class_name): argh, revert last patch.
14577         
14578 2004-10-21  Chris Toshok  <toshok@ximian.com>
14579
14580         * debug-helpers.c (append_class_name): use '+' as the delimiter,
14581         not '/', so that it matches what the debugger uses to look up
14582         methods.
14583
14584 2004-10-21  Martin Baulig  <martin@ximian.com>
14585
14586         * mono-debug-debugger.c (mono_debugger_throw_exception): New
14587         public method; this is called each time an exception is thrown and
14588         allows the debugger to use exception catch points.
14589
14590 2004-10-21  Martin Baulig  <martin@ximian.com>
14591
14592         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
14593         the stack pointer and the exception object in some struct and pass
14594         that to the debugger.
14595
14596 2004-10-21  Chris Toshok  <toshok@ximian.com>
14597
14598         * mono-debug-debugger.c (do_write_class): add instance/static
14599         event support.  We don't expose "raise" or "other" yet.
14600         (event_is_static): new method.
14601
14602 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
14603
14604         * mono-debug-debugger.c
14605         (mono_debugger_handle_exception): Remove
14606         bogus return value for fussy compilers.
14607
14608 2004-10-20  Martin Baulig  <martin@ximian.com>
14609
14610         * mono-debug-debugger.c
14611         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
14612         (mono_debugger_handled_exception): Likewise.
14613
14614 2004-10-20  Martin Baulig  <martin@ximian.com>
14615
14616         * mono-debug-debugger.h (MonoDebuggerEvent): Added
14617         MONO_DEBUGGER_EVENT_EXCEPTION.
14618
14619         * mono-debug-debugger.c (mono_debugger_handle_exception): New
14620         public function to send the debugger a notification for an
14621         exception and inform it about a catch/finally clause.
14622
14623 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
14624
14625         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
14626         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
14627         fix 2.95 build. 
14628
14629         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
14630
14631 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
14632
14633         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
14634         marshalled as [In,Out]. Fixes #58325.
14635
14636 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
14637
14638         * reflection.c (mono_method_body_get_object): Implement some fields.
14639
14640 2004-10-12  Martin Baulig  <martin@ximian.com>
14641
14642         * reflection.c (mono_reflection_bind_generic_parameters): Small
14643         fix, correctly retrieve our parent from a generic instance.
14644
14645 2004-10-12  Martin Baulig  <martin@ximian.com>
14646
14647         * metadata.c (mono_metadata_generic_param_equal): We always have
14648         an owner.
14649
14650         * class.c
14651         (mono_class_from_generic_parameter): We need to have an owner.
14652         (my_mono_class_from_generic_parameter): Likewise.
14653
14654         * reflection.c (mono_reflection_setup_generic_class): Renamed to
14655         mono_reflection_create_generic_class() and added a new
14656         mono_reflection_setup_generic_class().  
14657         (mono_reflection_initialize_generic_param): If we're a nested
14658         generic type and inherited from the containing class, set our
14659         owner to the outer class.
14660
14661 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
14662
14663         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
14664
14665         * reflection.c (mono_method_body_get_object): New function to create
14666         a MethodBody object.
14667
14668         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
14669
14670 2004-10-11  Martin Baulig  <martin@ximian.com>
14671
14672         * metadata.c (_mono_metadata_type_equal): Renamed to
14673         do_mono_metadata_type_equal() and made static.
14674
14675 2004-10-11  Martin Baulig  <martin@ximian.com>
14676
14677         * appdomain.c: Bump corlib version number to 28.
14678
14679 2004-10-10  Martin Baulig  <martin@ximian.com>
14680
14681         * class-internals.h
14682         (MonoGenericInst): Added `MonoGenericContainer *container'.
14683         (MonoGenericMethod): Likewise.
14684         (MonoGenericContext): Likewise.
14685         (MonoGenericParam): Added `MonoGenericContainer *owner'.
14686
14687         * metadata.c
14688         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
14689         (do_mono_metadata_parse_generic_inst): Likewise.
14690         (mono_metadata_parse_type_full): New public method.  This is the actual
14691         mono_metadata_parse_type() implementation - with an additional
14692         `MonoGenericContainer *' argument.
14693         (mono_metadata_parse_array_full): Likewise.
14694         (mono_metadata_parse_signature_full): Likewise.
14695         (mono_metadata_parse_method_signature_full): Likewise.
14696         (mono_metadata_parse_mh_full): Likewise.
14697         (mono_type_create_from_typespec): Likewise.
14698         (mono_metadata_interfaces_from_typedef_full): New public method;
14699         this is similar to the other _full() methods, but we take a
14700         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
14701         (mono_metadata_parse_generic_param): Take an additional
14702         `MonoGenericContainer *' argument and lookup the MonoGenericParam
14703         from that container.
14704         (mono_metadata_generic_param_equal): New static method to compare
14705         two type parameters.
14706         (_mono_metadata_type_equal): New static method; takes an
14707         additional `gboolean signature_only' argument - if true, we don't
14708         compare the owners of generic parameters.
14709         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
14710         with a TRUE argument - do a signature-only comparision.
14711
14712         * loader.c: Use the new _full() methods and pass the
14713         MonoGenericContainer to them.
14714
14715         * object-internals.h (MonoReflectionTypeBuilder): Added
14716         `MonoGenericContainer *generic_container' field.
14717         (MonoReflectionMethodBuilder): Likewise.
14718
14719 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14720
14721         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
14722         case initial images of dynamic assemblies.
14723
14724         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
14725
14726         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
14727
14728         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
14729         length of event->other array.
14730         (typebuilder_setup_events): Ditto.
14731
14732         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
14733         'assembly_by_name' and add an 'assemblies' list.
14734
14735         * assembly.h assembly.c: Add a new search hook for determining whenever
14736         an assembly is already loaded. Use this instead of searching in the
14737         loaded_assemblies list.
14738
14739         * domain.c appdomain.c: Implement the new search hook so loaded 
14740         assemblies are now scoped by appdomain. Fixes #67727.
14741
14742 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
14743
14744         * threads.c (mono_thread_attach): Initialize synch_lock field so
14745         mono_thread_detach works again.
14746
14747         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
14748         'lib' too. Fixes #63130.
14749
14750 2004-10-06  Jackson Harper  <jackson@ximian.com>
14751
14752         * culture-info-tables.h: regenerated.
14753
14754 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
14755
14756         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
14757         implemented by other interfaces in the result. Fixes #65764.
14758         
14759         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14760         Handle unloadable modules without crashing.
14761
14762         * image.c (load_modules): Revert the previous patch since modules must
14763         have a fixed index inside the array.
14764         
14765         * image.c (load_modules): Don't include native modules in the modules
14766         array.
14767
14768 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14769
14770         * reflection.h: Add param_defaults field.
14771
14772         * reflection.c: Add support for parameter defaults in dynamic methods.
14773         Fixes #64595.
14774
14775         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
14776         an empty string when a type has no namespace. Fixes #64230.
14777
14778 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
14779
14780         * tabledefs.h: Added "internal" security actions to support non-CAS
14781         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
14782         Note: they do not seems to be used anymore in 2.0 (new metadata format)
14783
14784 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
14785
14786         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
14787         constructor of abstract class. Fixes #61689.
14788
14789 2004-10-04  Martin Baulig  <martin@ximian.com>
14790
14791         * class-internals.h (MonoGenericContainer): New type.
14792         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
14793         `MonoGenericContainer *generic_container'.
14794         (MonoClass): Replaced `gen_params' and `num_gen_params' with
14795         `MonoGenericContainer *generic_container'.
14796
14797         * metadata.c (mono_metadata_load_generic_params): Return a
14798         `MonoGenericContainer *' instead of a `MonoGenericParam *';
14799         removed the `num' argument.
14800
14801 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14802
14803         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
14804         for dynamic images.
14805
14806         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
14807         machine fields.
14808
14809         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
14810
14811         * reflection.c: Save pe_kind and machine values into the generated
14812         image file.
14813
14814         * appdomain.c: Bump corlib version number.
14815
14816         * object-internals.h: Reorganize layout of LocalBuilder.
14817
14818         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
14819         New helper function.
14820
14821         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
14822         created MonoType for dynamic types. Fixes #66180.
14823
14824 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
14825
14826         * threadpool.c: the ares hashtable needs a critical section around it.
14827         this prevents some nasty segfaults
14828
14829 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14830
14831         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
14832         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
14833         bug 67324).
14834         
14835 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14836
14837         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
14838         
14839 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14840
14841         * image.c: Always canonicalize image file names, to avoid loading
14842         the same assembly twice when referenced using a relative path.
14843
14844 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14845
14846         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
14847
14848         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
14849
14850         * marshal.c: Fix warnings.
14851
14852 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
14853
14854         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
14855         attempting to marshal the delegate_trampoline as the method_addr.
14856         This patch has a static hashtable of marshalled delegates so that 
14857         we can map delegate_trampoline addresses back to delegates.  This
14858         allows a delegate passed to managed code to be passed back into native
14859         code.  Fixes #67039
14860
14861 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14862
14863         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
14864
14865         * reflection.c (method_encode_code): Align method headers properly.
14866         Fixes #66025.
14867
14868 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14869
14870         * marshal.c: In the runtime invoke wrapper, reset the abort
14871         exception if it is cached. This avoids the automatic rethrowal of 
14872         the exception after the catch of the wrapper. Also check for pending
14873         interruptions before calling the managed method. This is done using
14874         the new method emit_thread_force_interrupt_checkpoint, since the
14875         normal checkpoint method is ignored when running the invoke wrapper.
14876         * object.c: If the abort exception is rethrown, set the abort_exc
14877         field of the thread, so it will be rethrown aftere every catch.
14878         * threadpool.c: Only run an interruption checkpoint if what has been
14879         requested is a stop of the thread (aborts will be ignored).
14880         * threads.c: By default, a thread will now never be interrumped while
14881         running the runtime invoke wrapper (this ensures that runtime_invoke
14882         will always return to the caller if an exception pointer is provided).
14883         There is a new special method mono_thread_force_interruption_checkpoint()
14884         to force an interruption checkpoint even if running a protected
14885         wrapper, which is used by the same runtime invoke wrapper to do a check
14886         at a safe point.
14887
14888 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14889
14890         * object.c, object-internals.h: Implemented mono_release_type_locks,
14891         which releases the cctor locks held by a thread.
14892         * threads.c, threads.h: In thread_cleanup, release cctor locks held
14893         by a thread. Added mono_thread_exit() method to be used to safely stop
14894         a thread.
14895
14896 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14897
14898         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14899         Move null check before dereference.  Avoid indexing beyond the end
14900         of the 'modules' array.
14901
14902 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14903
14904         * metadata-internals.h (MonoImage): Add module_count field.
14905         * image.c (load_modules): Set image->module_count.
14906         (mono_image_load_file_for_image): Use image->module_count.
14907         * reflection.c (mono_image_load_module): Append to image->modules array 
14908         of dynamic assembly.
14909         (mono_module_get_object): Fix loop to actually increment index.
14910         Use image->module_count.
14911         * assembly.c (mono_assembly_load_references): Use image->module_count.
14912         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
14913         Likewise.
14914
14915 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14916
14917         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
14918         Avoid assert on generic types.
14919
14920 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
14921
14922         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
14923
14924         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
14925
14926         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
14927         function to convert a MarshalSpec structure to its managed counterpart.
14928
14929         * reflection.c: Fix warnings.
14930         
14931         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
14932         field.
14933
14934         * icall.c (mono_create_icall_signature): Fix build.
14935
14936 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14937
14938         * icall.c: Add MakePointType icall.
14939
14940         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
14941         warnings.
14942
14943 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14944
14945         * threadpool.c: reuse allocated slots in the queue.
14946
14947 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14948
14949         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
14950
14951         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
14952
14953         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
14954         previous change.
14955
14956         * tabledefs.h: Add constants for pinvoke attributes BestFit and
14957         ThrowOnUnmappableChar.
14958
14959         * icall.c (ves_icall_Type_GetPacking): New icall.
14960
14961 2004-09-24  Martin Baulig  <martin@ximian.com>
14962
14963         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
14964
14965 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14966
14967         * appdomain.c:
14968         (mono_domain_set): allow setting a domain that is being unloaded.
14969         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
14970         being unloaded.
14971
14972 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14973
14974         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
14975         the GetCustomAttributes icall.
14976
14977 2004-09-23  Martin Baulig  <martin@ximian.com>
14978
14979         * object-internals.h (MonoReflectionGenericParam): Replaced
14980         'has_ctor_constraint', `has_reference_type' and `has_value_type'
14981         with `guint32 attrs'.
14982
14983 2004-09-23  Martin Baulig  <martin@ximian.com>
14984
14985         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
14986
14987 2004-09-23  Martin Baulig  <martin@ximian.com>
14988
14989         * object-internals.h (GenericParameterAttributes): New enum.
14990
14991 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14992
14993         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
14994         
14995         * class.c (init_events): Fill out event->other field.
14996
14997         * class.c: Fix warnings.
14998
14999         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
15000
15001 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15002
15003         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
15004         walk which doesn't supply the IL offset.
15005
15006 2004-09-22  Martin Baulig  <martin@ximian.com>
15007
15008         * reflection.c (mono_reflection_setup_internal_class): If we're
15009         System.ValueType, System.Object or System.Enum, set
15010         `klass->instance_size' and create the vtable.
15011         (mono_reflection_create_internal_class): If we're an enum type,
15012         get the base class from our current corlib.
15013
15014 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
15015
15016         * reflection.h (MonoResolveTokenError): New type.
15017
15018         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
15019         icall.
15020
15021         * icall.c: Add an 'error' argument to the ResolveToken icalls.
15022
15023 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
15024
15025         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
15026         Support also calling constructors, but only for already allocated objects.
15027
15028 2004-09-17  Geoff Norton <gnorton@customerdna.com>
15029
15030         * reflection.c (type_get_qualified_name): If the klass is null
15031         return the typename to avoid a NullRefEx.
15032         (encode_cattr_value): Get the qualified name of the boxed type,
15033         not the underlying enumtype.  Fixes #62984.
15034
15035 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
15036
15037         * marshal.c: Fix problems with previous checkin.
15038
15039 2004-09-21    <vargaz@freemail.hu>
15040
15041         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
15042         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
15043
15044         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
15045
15046 2004-09-21  Geoff Norton <gnorton@customerdna.com>
15047
15048         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
15049         should only return a type for pointers, arrays, and passbyref types.
15050         Fixes bug #63841.
15051
15052 2004-09-21  Martin Baulig  <martin@ximian.com>
15053
15054         * domain.c (mono_debugger_check_runtime_version): New public
15055         function.
15056
15057         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
15058
15059 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
15060
15061         * reflection.c: Added missing sort to the declarative security 
15062         attributes table. MS implementation stops seeing the attributes if the
15063         token number regress in the table (as shown by ildasm and permview).
15064
15065 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
15066
15067         * object-internals.h (MonoReflectionModule): Add 'token' field.
15068         
15069         * reflection.c (mono_reflection_get_token): Add support for Module
15070         and Assembly.
15071         (mono_module_get_object): Set 'token' field.
15072         (mono_module_file_get_object): Set 'token' field.
15073
15074         * icall.c: Add new Assembly and Module icalls.
15075
15076         * appdomain.c: Bump corlib version.
15077
15078 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * loader.h loader.c class.h class.c: Add helper functions for obtaining
15081         tokens of metadata objects.
15082
15083         * reflection.h reflection.c (mono_reflection_get_token): New function
15084         to obtain the token of a metadata object.
15085
15086         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
15087
15088 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15089
15090         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
15091         
15092         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
15093
15094 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
15095
15096         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
15097         * object-internals.h: Added 3 MonoArray* members to MonoReflection
15098         AssemblyBuilder to access the permissions set in the class lib.
15099         * reflection.c: Added security attributes encoding step in 
15100         mono_image_build_metadata.
15101         * tabledefs.h: Added new security actions defined in 2.0:
15102         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
15103
15104 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15105
15106         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
15107         macro parameter.
15108
15109 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15110  
15111         * locales.c: nullify the ICU_collator member of CompareInfo when it is
15112           finalized. There where random SIGSEVs at program termination, when
15113           an object being finalized was trying to do a string comparison and
15114           the current culture was already finalized.
15115  
15116 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15117
15118         * threads.c: call thread_cleanup before finishing the thread if we get
15119         there.
15120
15121 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
15122
15123         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
15124         assemblies from the parent. Fixes #65665.
15125
15126 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
15127
15128         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
15129         modifiers.
15130
15131 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
15132
15133         * reflection.h: add prototype for mono_get_dbnull_object
15134         * reflection.c: add prototypes for get_default_param_value_blobs 
15135         and mono_get_object_from_blob for fussier compilers
15136
15137 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
15138  
15139         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
15140         false deadlock checks in class initialization.
15141  
15142 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15143
15144         * image.c (mono_image_addref): Fix comment.
15145
15146         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
15147         possible.
15148
15149 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
15150
15151         * reflection.c (mono_param_get_objects): Modified to return
15152         ParameterInfo.DefaultValue object.
15153
15154         (get_default_param_value_blobs):
15155         (mono_get_object_from_blob):
15156         (mono_get_dbnull_object): New helper routines. 
15157
15158         * object.c (mono_get_constant_value_from_blob): New helper routine
15159         carved out from get_default_field_value ()
15160
15161         * object-internals.h (mono_get_constant_value_from_blob): Added
15162         function declaration.
15163
15164 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15165
15166         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
15167         referenced assemblies. Fixes #62135.
15168
15169         * exception.h exception.c (mono_get_exception_file_not_found2): New
15170         helper function.
15171
15172 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15173
15174         * class.h class.c: Add mono_type_get_underlying_type ().
15175
15176 2004-09-09  Geoff Norton <gnorton@customerndna.com>
15177
15178         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
15179         Fix GetTypes() to support dynamically created assemblies.
15180
15181 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
15182
15183         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
15184         
15185         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
15186         previous patch.
15187
15188         * reflection.h reflection.c loader.c: Allow dynamic construction of
15189         pinvoke methods. Fixes #65571.
15190         
15191         * reflection.c (mono_reflection_get_type): Revert previous change since
15192         it causes regressions.
15193
15194 2004-09-08  Martin Baulig  <martin@ximian.com>
15195
15196         * class.c (class_compute_field_layout): Don't call
15197         mono_class_layout_fields() for open generic instances.
15198
15199 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
15200         * threads.c appdomain.c: fix typo in GC macro
15201
15202 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15203
15204         * threads.c: don't call mono_thread_detach() in start_wrapper(),
15205         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
15206
15207 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
15208
15209         * image.c (mono_image_close): Applied patch from 
15210         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
15211         assembly is loaded multiple times from data.
15212         
15213         * image.c (mono_image_open): Fix warning.
15214
15215 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15216
15217         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
15218         once. Fixes #58334.
15219         
15220         * reflection.c (mono_reflection_create_runtime_class): Initialize
15221         klass->nested_classes. Fixes #61224.
15222
15223 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15224
15225         * threads.c: sched_yield() on exit, to allow threads to quit.
15226
15227 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15228
15229         * object.c (mono_unhandled_exception): Remove leftover debug code.
15230
15231 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
15232
15233         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
15234
15235 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15236
15237         * marshal.c (emit_marshal_array): Really null terminate string arrays.
15238         
15239         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
15240
15241 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15242
15243         * marshal.c (emit_marshal_array): Null terminate string arrays.
15244         
15245         * marshal.c (raise_auto_layout_exception): Fix warning.
15246
15247         * reflection.c (mono_param_get_objects): Initialize the default value
15248         with DBNull.Value, not null. Fixes #62123.
15249
15250 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
15251
15252         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
15253         throw an exception with a cute explanation.
15254
15255 2004-09-06  Dick Porter  <dick@ximian.com>
15256
15257         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
15258         Close the new process's thread handle, as we don't use it.  The
15259         handle stays around forever otherwise.
15260
15261 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15262
15263         * object.c (arith_overflow): Fix warning.
15264
15265         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
15266         calling conventions in method refs. Fixes #65352.
15267
15268         * reflection.c: Fix warnings.
15269
15270 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15271
15272         * icall.c: Add a new icall for Array.Clear
15273
15274 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15275
15276         * object.c: When allocating an array, we have to throw
15277         an overflow exception if any of the lengths are < 0.
15278
15279 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15280
15281         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
15282         properly. Also move implementation of string array marshalling to 
15283         managed code. Fixes #42316.
15284
15285 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15286
15287         * assembly.c: provide more information when loading an assembly fails.
15288
15289 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15290
15291         * filewatcher.c: don't expect the development fam package to be
15292         installed.
15293
15294 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
15295
15296         * marshal.c: Make a copy of the signature cookie since it will be
15297         freed by the caller.
15298         
15299         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
15300
15301         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
15302
15303         * metadata.c (mono_metadata_free_marshal_spec): New function to free
15304         marshal specs.
15305
15306         * marshal.c: More refactoring.
15307         
15308         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
15309         smaller functions.
15310
15311 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
15312
15313         * object.c: In mono_message_invoke, fill the output parameter array after
15314           calling the managed method (it was done before the call). This fixes
15315           bug #59299.
15316
15317 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15318
15319         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
15320         as well.
15321
15322 2004-09-02  Martin Baulig  <martin@ximian.com>
15323
15324         * class.c (mono_class_instance_size): Don't allow generic type
15325         definitions or open generic instances.
15326         (mono_class_array_element_size): If we're a value type, call
15327         mono_class_instance_size() on the original class.
15328
15329         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
15330         handle generic instances.
15331
15332         * mono-debug-debugger.c (write_type): Handle generic instances
15333         like classes.
15334
15335 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15336
15337         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
15338         the allocation request fails. Fixes #65089.
15339
15340         * object.c (mono_runtime_free_method): Do not call mono_free_method.
15341         
15342         * object.c (mono_runtime_free_method): New function to free a dynamic
15343         method.
15344
15345         * marshal.c (mono_delegate_free_ftnptr): New function to free the
15346         delegate trampoline.
15347
15348         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
15349         with hasthis as dynamic,
15350
15351         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
15352
15353         * domain.c (mono_jit_info_table_remove): New function to remove an
15354         entry from the jit info table.
15355
15356         * class-internals.h (MonoMethod): Add 'dynamic' field.
15357
15358         * loader.c: Fix warnings.
15359
15360 2004-09-01  Martin Baulig  <martin@ximian.com>
15361
15362         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
15363         instead of mono_debugger_lock() because the latter one is a no-op
15364         unless running in the debugger.
15365
15366 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15367
15368         * class.c (class_compute_field_layout): Classes with auto-layout or
15369         reference fields are not blittable.
15370         
15371 2004-09-01  Dick Porter  <dick@ximian.com>
15372
15373         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
15374         mono_image_get_filename() to get the assembly location.
15375
15376         * icall.c:
15377         * metadata.h: Fix compile warnings
15378
15379 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15380
15381         * class.c (class_compute_field_layout): System.Object is blittable.
15382
15383         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
15384         as in/out. Fixes #59909.
15385
15386 2004-09-01  Martin Baulig  <martin@ximian.com>
15387
15388         * metadata.h (MONO_TYPE_ISREFERENCE): Call
15389         mono_metadata_generic_inst_is_valuetype() if we're a generic
15390         instance to check whether our underlying type is a reference type.
15391
15392 2004-09-01  Martin Baulig  <martin@ximian.com>
15393
15394         * metadata.c (mono_type_size): If we're a generic instance, call
15395         mono_class_value_size() for value types.
15396
15397 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
15398
15399         * marshal.c: Implement more custom marshalling functionality. Fixes
15400         #64915.
15401
15402 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15403
15404         * mono-debug.c, debug-mono-symfile.c: add some locking love.
15405
15406 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15407
15408         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
15409
15410         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
15411
15412         * icall.c: Fix some warnings.
15413
15414         * threads.c (abort_appdomain_thread): Fix unref errors.
15415         (mono_thread_current): Fix THREAD_DEBUG define.
15416
15417 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15418
15419         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
15420
15421         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
15422
15423 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
15426         string arrays.
15427
15428 2004-08-28  Martin Baulig  <martin@ximian.com>
15429
15430         * metadata.c
15431         (mono_metadata_generic_inst_is_valuetype): New public function.
15432
15433         * metadata.h (MONO_TYPE_ISSTRUCT): Call
15434         mono_metadata_generic_inst_is_valuetype() if we're a generic
15435         instance to check whether our underlying type is a valuetype.
15436
15437 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15438
15439         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
15440         #63768.
15441
15442 2004-08-25  Martin Baulig  <martin@ximian.com>
15443
15444         * loader.c (mono_get_method_from_token): Abstract methods can also
15445         be generic and thus have type parameters.
15446
15447         * metadata-internals.h
15448         (MonoDynamicImage): Added `GPtrArray *gen_params'.
15449
15450         * reflection.c (mono_image_get_generic_param_info): Don't create a
15451         metadata row, just add an entry to the `gen_params' array.
15452         (build_compressed_metadata): Sort the `gen_params' array and then
15453         actually create the metadata.
15454
15455 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15456
15457         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
15458
15459 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15460
15461         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
15462
15463 2004-08-24  Martin Baulig  <martin@ximian.com>
15464
15465         * class.cs (mono_class_is_subclass_of): Like an interface, a
15466         generic instance also derives from System.Object.
15467
15468 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
15469
15470         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
15471         custom modifiers to be in any order. Fixes #61990.
15472
15473 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
15474
15475         * object.c: Register mono_object_new_fast icall.
15476         
15477         * object.c (mono_class_get_allocation_ftn): Return to calling
15478         mono_object_new_fast, since it seems faster to compute the object 
15479         size in unmanaged code than passing it as a parameter.
15480
15481         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
15482
15483         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
15484         this function with Boehm as the oom handler, so we don't have to check
15485         the result of GC_malloc.
15486
15487         * object.c: Remove checks for oom.
15488
15489         * object.h object.c (mono_class_get_allocation_ftn): New function to
15490         return the icall which can be used to allocate an instance of a given
15491         class. 
15492
15493         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
15494
15495         * class-internals.h: Add 'enabled' field.
15496
15497 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
15498
15499         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
15500
15501 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
15502         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
15503         value 0x0010.
15504
15505 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15506
15507         * appdomain.c: use the Tls function for appdomain too,
15508         at Zoltan's request. Actually return in mono_context_get
15509
15510         * appdomain.c, profiler.c, threads.c: use __thread
15511
15512 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
15513
15514         * appdomain.c threads.c: Call GC_CreateThread on windows.
15515
15516         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
15517         multiple libraries since this don't work on windows.
15518
15519 2004-08-18  Martin Baulig  <martin@ximian.com>
15520
15521         * class-internals.h
15522         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
15523         MonoMethodHeader.
15524
15525         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
15526         MonoMethodNormal since we also need it for abstract and interface
15527         methods.
15528
15529         * reflection.c
15530         (build_compressed_metadata): Sort the GenericParam table.
15531         (mono_image_create_token): Added `gboolean create_methodspec'
15532         argument; this is false when generating a MethodImpl token.
15533         (reflection_methodbuilder_to_mono_method): Abstract and interface
15534         methods may also have generic parameters.
15535
15536 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15537
15538         * appdomain.c: thread local alloc
15539
15540 2004-08-17  Martin Baulig  <martin@ximian.com>
15541
15542         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
15543
15544         * icall.c
15545         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
15546         argument.
15547
15548         * class.c (mono_type_get_full_name): New public function.
15549         (mono_type_get_name): Don't include the type arguments.
15550
15551 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
15552
15553         * Makefile.am: Build static versions of libmetadata and libmonoruntime
15554         for inclusion into the mono executable.
15555
15556 2004-08-16  Martin Baulig  <martin@ximian.com>
15557
15558         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
15559         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
15560
15561 2004-08-14  Martin Baulig  <martin@ximian.com>
15562
15563         * class.c (dup_type): Also copy the `byref' field.
15564
15565 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
15566
15567         * reflection.c (create_dynamic_mono_image): Revert the last change 
15568         since it breaks bootstrap.
15569
15570 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15571
15572         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
15573
15574         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
15575         not free them with g_free.
15576
15577 2004-08-11  Martin Baulig  <martin@ximian.com>
15578
15579         * reflection.c (mono_reflection_setup_internal_class): Also call
15580         mono_class_setup_mono_type() if we already have a `tb->type.type'.
15581
15582 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
15583
15584         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
15585         called during default (first) AppDomain creation. Keep track of
15586         Evidence when loading assemblies.
15587
15588 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15589
15590         * opcodes.c, opcodes.h: reduce runtime relocations.
15591
15592 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15593
15594         * culture-info.h, locales.c: fixes and chages to sue the new
15595         optimized format of the locale data.
15596         * culture-info-tables.h: regenerated.
15597
15598 2004-08-06  Geoff Norton <gnorton@customerdna.com>
15599         
15600         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
15601
15602 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
15603
15604         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
15605         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
15606         * domain-internals.h: icall declaration.
15607         * icall.c: icall registration.
15608         * object-internals.h: New fields in MonoAssembly for CAS.
15609
15610 2004-08-05  Duncan Mak  <duncan@ximian.com>
15611
15612         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
15613         CEE_LDELEM_ANY.
15614
15615 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
15616
15617         * reflection.c: fix to deal with object[] arrays in custom ctors
15618         (bug #62550).
15619
15620 2004-08-05  Martin Baulig  <martin@ximian.com>
15621
15622         * class.c (mono_class_array_element_size): Added support for
15623         generic instances and correctly handle "recursive" types.
15624
15625 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15626
15627         * assembly.c: Fix warnings.
15628
15629 2004-08-04  Martin Baulig  <martin@ximian.com>
15630
15631         * class.c
15632         (mono_type_get_name_recurse): Added `gboolean include_arity'
15633         argument specifying whether or not we should include the generic
15634         arity in the type name.
15635         (_mono_type_get_name): New static function.
15636         (mono_class_setup_vtable): If we're a generic instance, don't
15637         include the generic arity in the names of explicit method
15638         implementations.        
15639
15640 2004-08-03  Martin Baulig  <martin@ximian.com>
15641
15642         * class.c (mono_type_get_name_recurse): Enclose the generic type
15643         arguments in `<', '>'.
15644
15645 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15646
15647         * gc.c: make GC warning messages use the trace API, they are just
15648         noise to most of the users.
15649
15650 2004-08-03  Martin Baulig  <martin@ximian.com>
15651
15652         * debug-mono-symfile.c (read_string): Correctly read the string.
15653
15654 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15655
15656         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
15657         
15658         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
15659         icalls.
15660         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
15661
15662 2004-07-30  Martin Baulig  <martin@ximian.com>
15663
15664         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
15665         Reflect latest symbol writer changes.   
15666
15667 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15668
15669         * object.c: always create an object if null is passed
15670         to Invoke() where a valuetype is expected.
15671
15672 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
15673
15674         * marshal.c (mono_marshal_init): make managed
15675         signatures match native ones better for 64bits.
15676
15677 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15678
15679         * appdomain.c: hack to build correctly the private bin path on windows.
15680         Fixes bug #61991.
15681
15682 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
15683
15684         * assembly.c: Load mscorlib from the correct framework directory
15685           (mono/<version>/mscorlib.dll).
15686         * appdomain.h: Added prototypes for new functions.
15687         * internals.h: Added some prototypes.
15688         * domain.c: When initializing the runtime, get from the executable and
15689           the configuration files the runtime version that the app supports.
15690           Added support methods for reading app.exe.config. Added list of versions
15691           supported by the JIT. Added two new methods: mono_init_from_assembly,
15692           which initializes the runtime and determines the required version from
15693           the provided exe file, and mono_init_version, which initializes
15694           the runtime using the provided version.
15695         * icall.c: Get machine.config from version-specific directory.
15696         * reflection.c: When generating an image, embed the version number
15697           of the current runtime.
15698
15699 2004-07-28  Dick Porter  <dick@ximian.com>
15700
15701         * socket-io.c
15702         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
15703         returned sockaddr size before creating the remote address object.
15704         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
15705         61608.
15706
15707 2004-07-28  Dick Porter  <dick@ximian.com>
15708
15709         * locales.c (string_invariant_compare_char): Fix invariant char
15710         compares between upper and lower cases.  Fixes bug 61458.
15711
15712 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
15713         
15714         * marshal.c: actually cache stelem.ref wrappers.
15715         
15716 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15717
15718         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
15719         sections and remove the mono_cli_rva_map () function.
15720
15721 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15722
15723         * debug-mono-symfile.c: fix one more endianess issue, from a patch
15724         by Geoff Norton (<gnorton@customerdna.com>).
15725
15726 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15727
15728         * class.c: fix class loads for pointer types (typeof(int) !=
15729         typeof(int*)).
15730
15731 2004-07-27  Martin Baulig  <martin@ximian.com>
15732
15733         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
15734         reading the debugging information from an external ".mdb" file.
15735
15736 2004-07-24  Martin Baulig  <martin@ximian.com>
15737
15738         * reflection.c (mono_image_get_type_info): Only write a class
15739         layout entry if we actually have a size or a packing size.
15740
15741 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15742
15743         * reflection.c (type_get_fully_qualified_name): 
15744         insert cast to get type checking of ?: with non-gcc compilers
15745
15746 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15747
15748         * rand.c: use g_getenv for both lookups of
15749         MONO_EGD_SOCKET
15750
15751 2004-07-17  Martin Baulig  <martin@ximian.com>
15752
15753         * reflection.c (mono_reflection_bind_generic_method_parameters):
15754         Set `gmethod->reflection_info'.
15755
15756 2004-07-17  Martin Baulig  <martin@ximian.com>
15757
15758         * class.c (mono_class_create_from_typedef): Insert the newly
15759         created class into the hash table before computing the interfaces
15760         since we could be called recursively.
15761
15762 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
15763
15764         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
15765         function to implement stelem.ref in managed code
15766         * class-internals.h, debug-helpers.c: a new wrapper type
15767         for the above.
15768
15769 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15770
15771         * gc.c: allow GC handles to work even when no GC is compiled in.
15772         Fix part of bug #61134 (GetAddrOfPinnedObject).
15773
15774 2004-07-13  Peter Williams  <peter@newton.cx>
15775  
15776         * process.c (complete_path): Make sure we don't attempt to execute
15777         directories.
15778  
15779 2004-07-12  Geoff Norton <gnorton@customerdna.com>
15780
15781         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
15782           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
15783           and will add/subtract the hour if needed
15784
15785 2004-07-12  Martin Baulig  <martin@ximian.com>
15786
15787         * reflection.c (mono_field_get_object): If we have
15788         `field->generic_info', take the attributes from
15789         `field->generic_info->generic_type'.    
15790
15791 2004-07-12  Martin Baulig  <martin@ximian.com>
15792
15793         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
15794         This function must be called before initializing the runtime.
15795         (mono_debug_init_1): New function; call this after initializing
15796         the runtime, but before loading the assembly.  It tells the
15797         debugger to load corlib and the builtin types.
15798
15799         * mono-debug-debugger.c: Did some larger changes in the debugging
15800         code; support recursive class declarations, make sure we actually
15801         add all classes.
15802
15803 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15804
15805         * debug-helpers.c: undo my previous patch and fixed the real issue in
15806         ../mini/exceptions-x86.c
15807
15808 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15809
15810         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
15811         when no HOME env. variable was set and a NullRef was thrown in a .cctor
15812         called from other .cctors.
15813
15814 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
15815
15816         * loader.c: Removed the mono_loader_wine_init hack now that we are
15817         doing a managed version of Windows.Forms.
15818
15819 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
15820
15821         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
15822         threadpool.c, threads.c: remove static data from rootset.
15823
15824 2004-07-09  Dick Porter  <dick@ximian.com>
15825
15826         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
15827         Don't do any more processing if the matched length was 0.  It was
15828         increasing the size of the string before.  Fixes bug 61167.
15829
15830 2004-07-09  Dick Porter  <dick@ximian.com>
15831
15832         * socket-io.h:
15833         * socket-io.c
15834         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15835         Add support for SO_PEERCRED if its available.
15836
15837 2004-07-09  Peter Bartok <pbartok@novell.com>
15838         * loader.c: winelib.exe.so error message is now only displayed if
15839         MONO_DEBUG is set. To help us avoid questions when people are trying
15840         out the new Managed.Windows.Forms.
15841
15842 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
15843
15844         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
15845         for isinst and castclass wrappers.
15846
15847         * class-internals.h icall.c: Move registration and lookup of JIT icalls
15848         to libmetadata from the JIT, so they could be used by the marshalling
15849         code and the interpreter.
15850
15851         * marshal.c: Register marshalling related JIT icalls here instead of
15852         in mini.c. Use CEE_MONO_ICALL instead of the family of 
15853         CEE_MONO_PROC<x> opcodes to call marshalling functions.
15854
15855         * metadata.h: Remove unneeded marshalling conversions.
15856
15857         * opcodes.c: Update for new opcodes.
15858         
15859 2004-07-08  Martin Baulig  <martin@ximian.com>
15860
15861         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
15862         (mono_debug_get_domain_data): Make this function static.
15863
15864 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
15865
15866         * gc.c, object.h: add nice GC handle API for embedders.
15867
15868 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
15869
15870         * reflection.c: more changes for the new api
15871
15872         * object.c: When we reflect on a field w/ a constant value, it
15873         will not have a memory location, so we must access metadata. Also,
15874         allow easier reading of strings so that we can read them from
15875         the constant data.
15876
15877         * class.c (mono_class_layout_fields): no need for literal fields here.
15878
15879         * class-internals.h: api changes for const fields
15880
15881         * icall.c (ves_icall_get_enum_info): use new apis for const fields
15882
15883 2004-07-06  Martin Baulig  <martin@ximian.com>
15884
15885         * mono-debug.h: Increment version number to 44.
15886
15887         * mono-debug.c (mono_debug_add_wrapper): The second argument is
15888         now a gpointer, rewrote this whole method.
15889
15890         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
15891         function.  Add information about the wrapper in a new "misc table".
15892
15893         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
15894         for the new misc table.
15895
15896 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
15897
15898         * metadata-internals.h image.c: Add a cache for helper signatures.
15899
15900         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
15901
15902 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
15903
15904         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
15905         delegates from a delegate. Fixes #61033.
15906         
15907         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
15908         marshalling of stringbuilder arrays. Fixes #59900.
15909
15910 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
15911
15912         * icall.c: Add EnumBuilder:setup_enum_type icall.
15913
15914 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
15915
15916         * icall.c: Added a new icall for the property version of
15917         OffsetOfStringData.
15918
15919 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
15920
15921         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
15922         it has a constant size across platforms.
15923
15924         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
15925         stack trace.
15926
15927 2004-06-29  Martin Baulig  <martin@ximian.com>
15928
15929         * mono-debug.c (mono_debug_add_method): Protect the whole function
15930         in mono_debugger_lock(), not just parts of it.
15931
15932 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15933
15934         * reflection.c: make sure padding bytes in heaps are zeroed.
15935
15936 2004-06-24  David Waite  <mass@akuma.org>
15937
15938         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
15939         image.c, loader.c, locales.c, marshal.c, metadata.c,
15940         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
15941         string-icalls.c, threads.c: change to C90-style comments from C99 /
15942         C++ -style
15943
15944 2004-06-24  Dick Porter  <dick@ximian.com>
15945
15946         * threads.c
15947         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
15948         return createdNew.  Fixes bug 60412.
15949
15950         * threads-types.h: 
15951         * icall.c: Add createdNew parameter to CreateMutex icall
15952
15953 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15954
15955         * reflection.c, object-internals.h: save default value in params.
15956
15957 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15958
15959         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
15960         no need to build a new path combining that with the application base.
15961         Fixes bug #60442.
15962
15963 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15964
15965         * reflection.c: fixed minor standard compliance issues.
15966
15967 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
15968
15969         * reflection.c: fixed issue with encoding some custom attributes
15970         (arrays in properties and fields, bug #60411).
15971
15972 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15973
15974         * reflection.c: fix start address when copying the public key token.
15975
15976 2004-06-23  Martin Baulig  <martin@ximian.com>
15977
15978         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
15979         the `exc' object in a static object to put it into the GC's root set.
15980
15981 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15982
15983         * reflection.c: make mono_reflection_setup_internal_class ()
15984         callable a second time to setup a new parent class.
15985
15986 2004-06-23  Dick Porter  <dick@ximian.com>
15987
15988         * threads.c: Check for WAIT_IO_COMPLETION return values.
15989
15990 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
15991
15992         * appdomain.c: Removed the g_free on the public key token. Now copy 
15993         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
15994         * assembly.c: Added public key token string value when loading 
15995         assemblies. Fix bug #60439.
15996         * icall.c: Added missing informations (like public key) in 
15997         GetReferencedAssemblies. Fix #60519.
15998         * image.h: Changed definition for public key token from const char*
15999         public_tok_value to guchar public_key_token [17];
16000         * reflection.c: Updated for changes to public key token.
16001
16002 2004-06-22  Lluis Sanchez Gual
16003
16004         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
16005         for the field in base classes.
16006
16007 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16008
16009         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
16010         mark headers as not supported, they are installed only for use by the
16011         debugger.
16012
16013 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
16014
16015         * *.c, *.h: avoid namespace pollution in public headers.
16016
16017 2004-06-21  Martin Baulig  <martin@ximian.com>
16018
16019         * exception.c (mono_get_exception_security): It's in
16020         "System.Security", not in "System".
16021
16022         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
16023         the exception classes.
16024
16025 2004-06-21  Martin Baulig  <martin@ximian.com>
16026
16027         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
16028         Protect the exception object from being finalized.
16029
16030 2004-06-21  Martin Baulig  <martin@ximian.com>
16031
16032         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
16033         public function.
16034
16035 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
16036
16037         * reflection.c: Load the assembly in mono_reflection_type_from_name,
16038         if it was not loaded before. Fix parts of #60439.
16039
16040 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
16041
16042         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
16043         code that was broken since Ben's change: wrappers are now
16044         dependent on the method signature only again.
16045
16046 2004-06-21  Martin Baulig  <martin@ximian.com>
16047
16048         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
16049         added interface support.
16050
16051 2004-06-21  Martin Baulig  <martin@ximian.com>
16052
16053         * class.c (mono_vtable_get_static_field_data): New public method.
16054
16055 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
16056
16057         * filewatcher.c : Windows build fix to be compliant with API changes.
16058
16059 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16060
16061         * class.h, class.c: more accessors.
16062         * metadata.h, metadata.c: prepare for hiding MonoType and
16063         MonoMethodSignature: people should use the accessors from now on
16064         outside of the tree.
16065
16066 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16067
16068         * *.c, *.h: more API cleanups.
16069
16070 2004-06-18  Jackson Harper  <jackson@ximian.com>
16071
16072         * assembly.c: Trace loading assemblies.
16073         * loader.c: Trace loading native libraries.
16074         * mono-config.c: Trace loading config files.
16075         
16076 2004-06-18  Dick Porter  <dick@ximian.com>
16077
16078         * locales.c: Tell ICU the lengths of strings, it can cope with
16079         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
16080
16081 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16082
16083         * image.c: swapped name/filename;
16084
16085 2004-06-18  Martin Baulig  <martin@ximian.com>
16086
16087         * mono-debug-debugger.c (write_class): Write the parent class at
16088         the end of the header.
16089
16090 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16091
16092         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
16093
16094 2004-06-17  Raja R Harinath  <rharinath@novell.com>
16095
16096         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
16097         (bundle_obj): New conditional define.
16098         (BUILT_SOURCES): Remove.
16099         ($(bundle_srcs)): Make parallel-make safe.
16100         (libmonoruntime_la_LIBADD): Make unconditional.
16101         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
16102         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
16103
16104 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
16105
16106         * culture-info-tables.h: It was inconsistent with the latest
16107           supp info files.
16108
16109 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
16110
16111         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
16112         be loaded.
16113
16114         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
16115         with gcc 2.95.
16116
16117 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16118
16119         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
16120         cleaned up public header threads.h.
16121
16122 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16123
16124         * Makefile.am, *.c, *.h: more API cleanups.
16125
16126 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16127
16128         * Makefile.am: removed monosn from compilation.
16129         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
16130         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
16131         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
16132         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
16133         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
16134         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
16135
16136 2004-06-15  Jackson Harper  <jackson@ximian.com>
16137
16138         * assembly.c: Make locales lower case when searching the GAC for
16139         assemblies. gacutil will always make locales lowercase when
16140         installing so this effectively makes them case insensitive.
16141         
16142 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
16143
16144         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
16145         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
16146           parameter which allows to choose whether the wait can be interrupted or 
16147           not. Also added the method mono_monitor_enter(), which locks the monitor
16148           using an infinite wait and without allowing interruption.
16149           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
16150           interrupted.
16151         * object.h: Added new fields in MonoThread. suspend_event holds the event
16152           used to susped/resume the thread. synch_lock is the lock object to use for
16153           modifying the thread state.
16154         * threads.c: Use the new synch_lock object for locking, instead of "this",
16155           which can generate deadlocks.
16156           Moved thread state change in Thread.Sleep and Thread.Join from managed
16157           to unmanaged code. This avoids a deadlock when the thread was suspended
16158           just after acquiring the thread lock.
16159           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
16160           Implemented Thread.Suspend using an event instead of ThreadSuspend,
16161           which is not fully implemented in the io-layer.
16162         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
16163
16164 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
16165
16166         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
16167         threads-types.h: more API cleanups.
16168
16169 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16170
16171         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
16172         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
16173         threadpool.c, threads.c: first pass at the exported API cleanup.
16174
16175 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16176
16177         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
16178
16179 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16180
16181         * icall.c: added internalGetHome.
16182
16183 2004-06-14  Dick Porter  <dick@ximian.com>
16184
16185         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
16186         possible to return successfully when '.' or '..' were the only
16187         entries in a directory, but were skipped.  The MonoIOStat was not
16188         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
16189         Fixes bug 59574.
16190
16191 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16192
16193         * reflection.c: make binaries run on .Net 1.1 by default.
16194
16195 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16196
16197         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
16198
16199 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
16200
16201         * marshal.c: keep track of struct size with explicit layout
16202         (bug #59979).
16203
16204 2004-06-12  Martin Baulig  <martin@ximian.com>
16205
16206         * mono-debug-debugger.c: Comment out a debugging g_message().
16207
16208 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16209
16210         * reflection.c, reflection.h: do not free custom attrs that are cached.
16211         * icall.c: use braces to make code clearer.
16212
16213 2004-06-11  Martin Baulig  <martin@ximian.com>
16214
16215         * class.h (MonoInflatedField): New type.
16216         (MonoClassField): Replaced `MonoType *generic_type' with
16217         `MonoInflatedField *generic_info'.
16218
16219         * icall.c
16220         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
16221
16222 2004-06-11  Martin Baulig  <martin@ximian.com>
16223
16224         * reflection.c (mono_image_create_method_token): Correctly encode
16225         varargs methods.
16226
16227 2004-06-11  Martin Baulig  <martin@ximian.com>
16228
16229         * metadata.c (mono_metadata_parse_method_signature): When parsing
16230         a MethodDef which has VarArgs, also set sentinelpos if we don't
16231         have any parameters.
16232
16233 2004-06-11  Martin Baulig  <martin@ximian.com>
16234
16235         * verify.c (mono_method_verify): In CEE_CALL, use
16236         mono_method_get_signature() to get the method's signature, unless
16237         we're a PInvoke method.
16238
16239 2004-06-10  Jackson Harper  <jackson@ximian.com>
16240
16241         * assembly.c: Use <path>/lib/mono/gac for the extra paths
16242         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
16243         logical name as the supplied path is just a prefix to the gac not
16244         the direct path to it.
16245         
16246 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
16247
16248         * reflection.c: make the token for a created method match
16249         the token of the MethodBuilder it was created from
16250         (IKVM requires this behaviour now).
16251
16252 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
16253
16254         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
16255         reflection.c, socket-io.c: leak fixes.
16256
16257 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16258
16259         * icall.c: handle sentinel pos in vararg methods in position different
16260         from 0.
16261
16262 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16263
16264         * culture-info-tables.h: freshly generated.
16265
16266 2004-06-09  Martin Baulig  <martin@ximian.com>
16267
16268         * loader.c (mono_get_method_constrained): Call `mono_class_init
16269         (constrained_class)'.   
16270
16271 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
16272
16273         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
16274         any methods. Fixes #59629.
16275
16276 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16277
16278         * culture-info-tables.h: reflecting locale-builder updates.
16279
16280 2004-06-08  Dick Porter  <dick@ximian.com>
16281
16282         * object.h:
16283         * locales.c: Fixed compile warnings, including a real bug in
16284         CompareInfo_internal_compare.
16285         
16286 2004-06-08  Dick Porter  <dick@ximian.com>
16287
16288         * locales.c
16289         (ves_icall_System_Globalization_CompareInfo_internal_index):
16290         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16291         Double-check the resuls of usearches, because ICU currently
16292         ignores most of the collator settings here.  Fixes bug 59720.
16293         
16294 2004-06-08  Dick Porter  <dick@ximian.com>
16295
16296         * locales.c
16297         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16298         Fix memory leak and segfault-causing typo.  No idea how this one
16299         lasted so long without being noticed.
16300
16301 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
16304         any methods. Fixes #59629.
16305
16306 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16307
16308         * assembly.c:
16309         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
16310         own the critical section before). Removed dead code (that's done
16311         in the preload hook).
16312
16313         (mono_assembly_load_with_partial_name): call the preload hook.
16314
16315 2004-06-08  Martin Baulig  <martin@ximian.com>
16316
16317         * metadata.c (mono_metadata_signature_alloc): Default
16318         `sentinelpos' to -1.
16319
16320         * reflection.c (mono_image_get_array_token): Likewise.
16321
16322 2004-06-08  Martin Baulig  <martin@ximian.com>
16323
16324         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
16325
16326         * metadata.c (mono_metadata_parse_method_signature): When parsing
16327         a MethodDef which has VarArgs, set sentinelpos.
16328
16329         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
16330         `gint16' since we're using -1 for non-varargs methods.
16331
16332         * reflection.c
16333         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
16334         (method_encode_signature): Added varargs support.
16335         (method_builder_encode_signature): Likewise.
16336         (mono_image_get_varargs_method_token): New static method.
16337         (mono_image_create_method_token): New public method; this is
16338         called via an icall instead of mono_image_create_token() when
16339         calling a varargs method.       
16340
16341 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
16342
16343         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
16344
16345 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16346
16347         * culture-info-tables.h : Reflecting the latest locale-builder that
16348           fixed empty array representation ({} to {0}).
16349
16350 2004-06-07  Jackson Harper  <jackson@ximian.com>
16351
16352         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
16353         looking up extra gac paths. This allows MONO_GAC_PATH to act
16354         exactly like a prefix.
16355         
16356 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16357
16358         * reflection.c (mono_reflection_type_from_name): Make a copy of the
16359         type name before modifying it. Fixes #59405.
16360
16361 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16362
16363         * culture-info.h: added fields for "all datetime patterns".
16364         * locales.c: (  ves_icall_System_Globalization_CultureInfo
16365           _construct_datetime_format ()): fill xxx_patterns fields.
16366         * object.h: added fields for "all datetime patterns" to
16367           MonoDateTimeFormatInfo.
16368         * culture-info-tables.h: reflecting locale-builder updates.
16369
16370 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16371
16372         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
16373         the event has no add and remove methods. Fixes #59629.
16374
16375 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
16376
16377         * object.c: Fixed possible integer overflow when allocating large
16378         strings.
16379
16380 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16381
16382         * culture-info-tables.h: reflecting locale-builder updates.
16383
16384 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16385
16386         * culture-info-tables.h: reflecting locale-builder updates.
16387
16388 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
16389
16390         * culture-info-tables.h: reflecting locale-builder updates.
16391
16392 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
16393
16394         * threads.c: Made Thread.Sleep abortable.
16395
16396 2004-06-02  Martin Baulig  <martin@ximian.com>
16397
16398         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
16399
16400         * debug-mono-symfile.h: Bumped symbol file version number to 37.
16401
16402 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
16403
16404         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
16405
16406 2004-05-30  Jackson Harper  <jackson@ximian.com>
16407
16408         * reflection.c: Do not hardcode assembly versions or public key
16409         tokens anymore. All of this except the corlib section was dead
16410         code anyways.
16411         
16412 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16413
16414         * object.c (mono_runtime_invoke_array): Automatically create boxed
16415         objects for byref valuetypes if needed. Fixes #59300.
16416         
16417         * object.c (mono_method_return_message_restore): Handle 
16418         MONO_TYPE_OBJECT as well.
16419
16420 2004-05-28  Jackson Harper  <jackson@ximian.com>
16421
16422         * reflection.c: The modified type encoding was causing build
16423         problems. Reverted for now.
16424         
16425 2004-05-28  Jackson Harper  <jackson@ximian.com>
16426
16427         * reflection.c/h: Take an assembly ref so that we dont create
16428         fully qualified names when encoding types in the same assembly as
16429         the custom attribute being emitted.
16430         * appdomain.c: Increment version number.
16431         
16432 2004-05-26  Duncan Mak  <duncan@ximian.com>
16433
16434         * icall.c
16435         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
16436         Set the full version number (major, minor, build, revision).
16437
16438 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
16439
16440         * marshal.c (emit_struct_conv): increment src/dst after blit
16441         (mono_marshal_get_managed_wrapper,
16442         mono_marshal_get_native_wrapper): make sure we have marshalling
16443         info before marshalling params (info computation affects
16444         blittable)
16445
16446         * class.c (class_compute_field_layout): correctly deal with
16447         blittable
16448         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
16449         value types (as per what windows dows by default)
16450         (mono_class_setup_mono_type): System.ValueType is blittable
16451         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
16452         blittable
16453
16454         * marshal.c (mono_marshal_load_type_info): flag types  as
16455         non-blittable if the native layout doesn't match the managed
16456         layout
16457
16458 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16459
16460         * appdomain.c: don't add stuff in the private search path that is
16461         above the application base. If application base is not set, there's
16462         no private search path.
16463
16464 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16465
16466         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
16467         byref struct arguments in native->managed marshalling.
16468
16469 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
16470
16471         * marshal.c (mono_marshal_get_runtime_invoke): correctly
16472         cache methods using signature (special case for methods
16473         that are value type or string class)
16474         
16475         * image.c (mono_image_close): clean up allocated GSList's
16476         in runtime_invoke_cache.
16477
16478 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16479
16480         * mono-config.c: set the correct path for mono_cfg_dir on windows when
16481         there's no MONO_CFG_DIR environment variable defined.
16482
16483 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16484
16485         * threads.c: windows version must be >= 0x0500 to include OpenThread.
16486
16487 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
16488
16489         * threadpool.c: Really wait for 500ms after the async call, even if the wait
16490           is interrumped.
16491         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
16492           before waiting for it, and call CloseHandle after the wait to unref it.
16493           This will make sure that handles are not disposed too early.
16494
16495 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16496
16497         * appdomain.c:
16498         * appdomain.h:
16499         * icall.c: removed
16500         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
16501         needed now.
16502
16503         * object.c: se the application_base only for the domain that runs
16504         Main. Fixes bug #59216,
16505
16506 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16507
16508         * appdomain.c:
16509         * object.c: only the domain in which Main is run have
16510         SetupInformation.ConfigurationFile set, so moved a few lines from
16511         appdomain.c to object.c.
16512
16513 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16514
16515         * appdomain.c: we tried to load [name].(dll|exe), but according
16516         to bug #57710, we must also try [culture]/[name].(dll|exe) and
16517         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
16518         There's a test case attached to bug #58922.
16519
16520 2004-05-27  Dick Porter  <dick@ximian.com>
16521
16522         * icall.c:
16523         * file-io.c: Implemented icalls for locking and unlocking regions
16524         in a file.
16525         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
16526         FALSE on error (fixes both compiler warning and real bug.)
16527
16528 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
16529
16530         * culture-info-tables.h: reflecting locale-builder updates.
16531
16532           (Added missing ChangeLog entry for 05/26)
16533
16534 2004-05-27  Jackson Harper  <jackson@ximian.com>
16535
16536         * locales.c: Fix some cut and paste errors.
16537         
16538 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16539
16540         * mono-config.c: set the correct path for config. directory on windows.
16541
16542 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16543
16544         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
16545           on win32.
16546
16547 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16548
16549         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
16550         from pinvoke functions.
16551         
16552         * marshal.c (mono_ftnptr_to_delegate): Implement this.
16553
16554 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16555
16556         * culture-info-tables.h: reflecting locale-builder updates.
16557
16558 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16559
16560         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
16561         #59086.
16562
16563 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
16564
16565         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
16566         * icall.c: Modified icalls for RNG.
16567         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
16568         Windows (CryptoAPI).
16569
16570 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16571
16572         * locales.c: Fix build.
16573
16574 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16575
16576         * culture-info-tables.h: reflecting locale-builder updates.
16577
16578 2004-05-25  Jackson Harper  <jackson@ximian.com>
16579
16580         * locales.c: When creating the current culture use the $LANGs
16581         specific culture. So DateTimeFormat and NumberFormat entries are created.
16582         
16583 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16584
16585         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
16586         a char array as parameter.
16587
16588 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
16589
16590         * image.c: In mono_image_open(), always use an absolute path name to
16591           look for already loaded images.
16592
16593 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
16594
16595         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
16596         missing in the windows build (like older cygwin include files).
16597
16598 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
16599
16600         * icall.c: Fixed check for possible integer overflow in Buffer_
16601         BlockCopy icall. Replaced comments style // by /* */.
16602
16603 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
16606         
16607         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
16608         check after MONO_VTADDR. Fixes pinvoke2.exe.
16609
16610         * marshal.h marshal.c metadata.h: Add beginnings of support for
16611         ftnptr -> delegate marshalling.
16612
16613 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16614
16615         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
16616         * threads.c: Fix warnings.
16617
16618 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16619
16620         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
16621         * icall.c: Registered icalls for Suspend and Resume.
16622         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
16623           Thread.Abort.
16624         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
16625         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
16626         * process.c: Use WaitForSingleObjectEx.
16627         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
16628           checkpoints.
16629         * threads.c, threads.h: Make use of new Ex wait methods. Improved
16630           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
16631           for Suspend and Resume. Added new mono_thread_stop, used for stoping
16632           background threads. Added basic support for Abort in Windows.
16633           Start new threads using a managed delegate invoke wrapper. This wrapper
16634           has an interruption checkpoint that is needed since an interruption
16635           can be requested before the thread leaves the unmanaged code that starts 
16636           the thread.
16637         * marshal.c: Added interruption checkpoint after every native call, and
16638           also before managed calls for wrappers called from unmanaged code to
16639           go into managed code.
16640         * object.h: Added new field in MonoThread to keep track of interruption
16641           requests.
16642
16643 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16644
16645         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
16646         calls.
16647
16648 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16649
16650         * appdomain.c:
16651         * assembly.c:
16652         * gc.c:
16653         * locales.c:
16654         * mono-config.c:
16655         * rand.c: getenv -> g_getenv (windows!)
16656
16657         * process.c: complete_path is also used on non-windows platforms.
16658
16659 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16660
16661         * icall.c: new signature for Process_Start.
16662
16663         * process.[ch]: new signature for Process_Start. If we're on windows
16664         and UseShellExecute is false, we have to search for the program by
16665         ourselves if we don't get a full path.
16666
16667 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
16670         marshalling and call CleanUpNativeData if needed. Fixes #58646.
16671
16672 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16673
16674         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
16675         Fixes bug #58373.
16676
16677 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16678
16679         * process.c: use double quotes to quote program name and arguments on
16680         windows. Fixes bug #58575.
16681
16682 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16683
16684         * file-io.c: don't return "." and ".." when using windows Find*File.
16685
16686 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
16687
16688         * marshal.c: Don't pass wrappers to message init because method 
16689         addressed used to lookup metadata. part of remoting[2|3] fix.
16690
16691 2004-05-15  Jackson Harper  <jackson@ximian.com>
16692
16693         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
16694         path is essentially the same as MONO_PATH except that it points to
16695         GACs instead of lib directories.
16696         * loader.h: The user gac is gone so we dont need function to
16697         enable/disable it.
16698         * mono-config.c: user gac option is now gone.
16699         
16700 2004-05-15  Jackson Harper  <jackson@ximian.com>
16701
16702         * culture-info.h: Make defines more consistent, add calendar data
16703         to the culture info table.
16704         * culture-info-tables.h: Add basic calendar data. Basically
16705         everyone gets default gregorian until all the data is
16706         updated.
16707         * locales.c: Use the new consistent defines. Set calendar data for
16708         culture info objects.
16709         * object.h: add a field for calendar data to CultureInfo
16710         
16711 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
16712
16713         * image.c: image->runtime_invoke_cache is keyed on signatures now.
16714         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
16715         a signature.
16716         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
16717         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
16718         an extra param that is the pointer of the method to invoke. The IL for
16719         the invoke method is no longer specific to the method, but to the
16720         signature of the method. Thus, we can share the same code for multiple
16721         methods. This reduces the number of methods that have to be compiled.
16722
16723 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
16726
16727         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16728
16729         * icall.c: Optimize Buffer.BlockCopy.
16730
16731 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16732
16733         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
16734         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
16735         quote). Changed them to "MMMM yyyy".
16736
16737 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
16738
16739         * rand.c
16740         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
16741
16742 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
16743
16744         * reflection.h: Updated after changes to managed structures.
16745
16746         * appdomain.c: Bump corlib version.
16747
16748 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16749
16750         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
16751         windows.
16752
16753 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16754
16755         * Makefile.am: link to ../os/libmonoos.la on windows.
16756
16757         * assembly.c:
16758                 -If MONO_DEBUG, warn about non-existing directories in
16759                 MONO_PATH.
16760                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
16761                 compile time variable.
16762                 -Removed init_default_path and call mono_set_rootdir from
16763                 libmonoos.a instead (windows only).
16764
16765         * assembly.h: declare mono_assembly_getrootdir().
16766
16767         * domain.c:
16768         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
16769
16770         * loader.c: s/getenv/g_getenv/
16771
16772 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
16775
16776         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
16777
16778         * metadata.h: Add new marshalling conversions.
16779
16780         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
16781         function.
16782
16783         * reflection.c (mono_reflection_get_type): Lookup the type in all
16784         modules of a multi-module assembly. Fixes #58291.
16785
16786 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
16787
16788         * threads.c: Before aborting a background, set the StopRequested
16789         state.  This avoids throwing the Abort exception.
16790         In mono_thread_manage, don't continue with the shutdown until all
16791         aborted threads have actually stopped.
16792
16793 2004-05-10  Jackson Harper  <jackson@ximian.com>
16794
16795         * locales.c: Remove the modifier from culture names.
16796         
16797 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16798
16799         * Makefile.am: monosn is not installed any more. It has been deprecated
16800         in favor of sn.
16801
16802 2004-05-07  Jackson Harper  <jackson@ximian.com>
16803
16804         * locales.c
16805         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
16806         Fix array construction, add bailout if the length is 0.
16807
16808 2004-05-07  Dick Porter  <dick@ximian.com>
16809
16810         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
16811         machine doesn't have a DNS entry.  Patch by Urs Muff
16812         (umuff@quark.com), fixes bug 57928.
16813
16814 2004-05-06  Jackson Harper  <jackson@ximian.com>
16815
16816         * reflection.c: Handle null PublicTokens properly. alloc mem for
16817         assembly names culture so we dont crash when freeing it.
16818         
16819 2004-05-06  Jackson Harper  <jackson@ximian.com>
16820
16821         * assembly.c: Check the usergac when loading with partial names.
16822         
16823 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16824
16825         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
16826         does nothing for now (not required for Linux/Windows) but the class
16827         library can call it (and a newer or modified runtime could need it).
16828         * icall.c: Registred icall.
16829
16830 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16831
16832         * loader.c: prints a message on module loading error we set MONO_DEBUG
16833         environment variable.
16834
16835 2004-05-05  Jackson Harper  <jackson@ximian.com>
16836
16837         * appdomain.c: Handle PublicKeyToken=null properly.
16838         
16839 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16840
16841         * environment.c|h: Added icall ves_icall_System_Environment_
16842         GetOSVersionString to get the current OS version as a string.
16843         * icall.c: Registred icall.
16844
16845 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
16846
16847         * object.c: in mono_object_get_virtual_method(), take into account that
16848         non-virtual methods don't have a slot in the vtable. Check needed when
16849         the object is a proxy.
16850
16851 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
16852
16853         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
16854         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
16855
16856         * object.c (mono_class_compute_gc_descriptor): Fix warning.
16857
16858         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
16859         passed when a valuetype is expected.
16860
16861         * object.c (mono_unhandled_exception): Only set the exit code if the
16862         exception happens in the main thread. Fixes thread5.exe.
16863
16864         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
16865         invalid names. Fixes #58047.
16866
16867 2004-05-03  Jackson Harper  <jackson@ximian.com>
16868
16869         * assembly.c: This line was committed accidently and is unneeded.
16870         
16871 2004-05-03  Jackson Harper  <jackson@ximian.com>
16872
16873         * icall.c: Add new icall for Assembly::LoadWithPartialName
16874         * assembly.c/.h: new function that probes the GAC to load partial
16875         assembly names by Paolo Molaro.
16876         
16877 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16878
16879         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
16880         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
16881         (type_get_fully_qualified_name): Added PublicKeyToken when building a
16882         full type name.
16883
16884 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16885
16886         * appdomain.c: fixed check for 'neutral' culture and removed warning.
16887         * reflection.c: fix bug when parsing a full type name and Version is not
16888         the last thing in the string.
16889
16890 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
16891
16892         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
16893         crashes when it is freed.
16894
16895 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16896
16897         * assembly.c: print the compat warning to stderr.
16898
16899 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
16900
16901         * assembly.c (mono_assembly_load_references): Add a compatibility
16902         hack to run old applications that might be still referencing the
16903         3300-based assemblies, only do this for System.xxx.
16904
16905 2004-05-01  Jackson Harper  <jackson@ximian.com>
16906
16907         * appdomain.c: If the culture is neutral we set it to "".
16908         
16909 2004-04-29  Jackson Harper  <jackson@ximian.com>
16910
16911         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
16912
16913 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
16914  
16915         * string-icalls.c: added low overhead function for copying chars
16916         * icall.c: added needed icall for the above function
16917  
16918 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16919
16920         * icall.c: fix return value of get_global_assembly_cache.  Implemented
16921         Environment.GetLogicalDrives.
16922
16923 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
16924
16925         * rand.c: try and talk to egd or prngd
16926         for random bytes if opening devices fail.
16927
16928 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
16929
16930         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
16931         alignment for the type using the native alignment of its members 
16932         instead of using klass->min_align.
16933
16934         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
16935
16936 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16937
16938         * file-io.c:
16939         * socket-io.c: added check for sys/aio.h.
16940
16941 2004-04-28  Dick Porter  <dick@ximian.com>
16942
16943         * threads.c: Don't abort a thread thats already aborting, when
16944         terminating everything.
16945
16946 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16947
16948         * icall.c: added 2 new async calls for Socket.
16949
16950         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
16951         IO on *nix systems.
16952
16953         * threadpool.c: removed unused variable.
16954
16955 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
16956
16957         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
16958
16959 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16960
16961         * locales.c: put back string_invariant_tolower () and
16962         string_invariant_toupper ().
16963
16964 2004-04-26 David Waite <mass@akuma.org>
16965
16966         * file-io.h:
16967         * socket-io.h:
16968         * threads.h:
16969         * unicode.h: remove comma from end of enumeration declarations
16970
16971 2004-04-26 David Waite <mass@akuma.org>
16972
16973         * debug-mono-symfile.h:
16974         * decimal.c:
16975         * mono_debug.h:
16976         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
16977
16978
16979 2004-04-26  Jackson Harper  <jackson@ximian.com>
16980
16981         * appdomain.c: Increment version number.
16982         
16983 2004-04-26  Jackson Harper  <jackson@ximian.com>
16984
16985         * appdomain.c: Set assembly references public token value when
16986         PublicKeyToken is specified, not the hash_value. Free public token
16987         values when free assembly name data. Previously the public key
16988         token was hex decoded, however we are using hex encoded public key
16989         tokens, so this is not neccasary.
16990         * assembly.c: Lookup assemblies in the gac if their public token
16991         value is set. Add function to allow enabling user gac
16992         lookups. Specify whether or not the assembly was loaded from the
16993         GAC. Compare full assembly names when checking the cache for
16994         assemblies (Temporarily disabled see comment in code). Remove
16995         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
16996         specifies trace-loader they get extra info to stdout on the
16997         loading of assemblies.
16998         * image.h: Add a field for an assembly references public token
16999         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
17000         whether an assembly has been loaded from the GAC.
17001         * image.c: Remove a corlib -> mscorlib name mapping.
17002         * loader.h: Add function to enable/disable the user gac.
17003         * mono-config.c: Check if the usergac is enabled in the config
17004         file.
17005         * icall.c: New icall to determine whether or not an assembly has
17006         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
17007         * tabldefs.h: Add constant for assemblyref flag that specifies a
17008         full public key is used instead of a public token.
17009         * reflection.c: Remove mscorlib -> corlib mappings. Set
17010         PublicTokenValue instead of hash value. This value is a hex
17011         string so it does not need to be expanded.
17012
17013 2004-04-26  Martin Baulig  <martin@ximian.com>
17014
17015         * mono-debug-debugger.c (mono_debugger_initialize): Set
17016         `mono_debugger_initialized' before calling mono_debug_lock().
17017
17018 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
17019
17020         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
17021           InternalToUpper/InternalToLower.
17022         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
17023           removed invariant culture shortcut.  This is now done in managed code.
17024         * locales.c: (string_invariant_toupper/tolower) removed.
17025
17026 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17027
17028         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
17029         Added Poll internal call.
17030
17031         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
17032         call for Poll. Select was too heavy for polling a single socket.
17033
17034         * threadpool.[ch]: added mono_threadpool_cleanup.
17035         * threads.c: use it. Don't use Thread_Abort on windows.
17036
17037 2004-04-23  Martin Baulig  <martin@ximian.com>
17038
17039         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
17040
17041 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
17042
17043         * icall.c: Registred new icalls for key pair protection and added an
17044         icall for Environment.GetFolderPath on Windows.
17045         * security.c|h: Added new icalls for key pair protection.
17046
17047 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17048
17049         * socket-io.c: don't display the non-supported family warning for known
17050         families. Now this is not displayed on windows when checking support
17051         for IPv4/IPv6.
17052
17053 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17054
17055         * class.c: don't display the layout warning for static fields.
17056
17057 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
17058
17059         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
17060         * locales.c, locales.h: Added new icalls for culture-specific
17061         Char.ToLower and Char.ToUpper.
17062
17063 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17064
17065         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
17066         by David Waite.
17067
17068 2004-04-20  Martin Baulig  <martin@ximian.com>
17069
17070         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
17071         of the type name before passing it to mono_reflection_type_from_name().
17072
17073 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
17076         encodings here. Fixes #56965.
17077
17078 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
17079
17080         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17081         fix test on strstr result not that I can see anything that
17082         relies on the result.
17083
17084 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17085
17086         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
17087         Fixes #57081.
17088
17089         * marshal.c (mono_marshal_get_string_encoding): New helper function.
17090
17091         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
17092         function to determine which marshalling to use for strings. Fixes
17093         #56965.
17094
17095         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
17096
17097         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
17098
17099 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
17100
17101         * icall.c: #include mono-config.h
17102
17103 2004-04-15  Jackson Harper  <jackson@ximian.com>
17104
17105         * culture-info-tables.h: Fix date formats for en-US culture.
17106         
17107 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
17108
17109         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
17110         ThreadPool.SetMinThreads.
17111         * threadpool.c: Implemented ThreadPool.GetMinThreads and
17112         ThreadPool.SetMinThreads.
17113
17114 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17115
17116         * mono-config.c: also load the .config file in the directory
17117         where the assembly was found.
17118
17119 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17120
17121         * assembly.c: load per-assembly config files.
17122         * icall.c: decrapified code to get the config dir and moved to
17123         mono-config.c.
17124         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
17125         per-assembly config files. When doing a dll map lookup give precedence
17126         to the per-assembly data.
17127
17128 2004-04-14  Martin Baulig  <martin@ximian.com>
17129
17130         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
17131         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
17132         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
17133
17134         * mono-debugger-debugger.c: While the debugger is locked, remember
17135         whether the symbol tables have changes and send one single
17136         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
17137
17138 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
17141
17142         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
17143         function.
17144
17145         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
17146         account when marshalling string arrays. Fixes #56965.
17147
17148 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
17149
17150         * icall.c: Add new icalls mapping for security.
17151         * security.c|h: Add internal calls for WindowsIdentity,
17152         WindowsImpersonationContext and WindowsPrincipal.
17153
17154 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
17155
17156         * class.c: Added comment to ensure the System.MonoDummy class
17157         is removed when no longer necessary
17158
17159 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17160
17161         * appdomain.c: Pass arguments to the bootstraping exceptions to
17162         minimize JITed methods at boot
17163
17164         * metadata.c (mono_exception_from_name_two_strings): Allow for the
17165         second string to be null.
17166
17167         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17168         Change the protocol to minimize the JIT methods at startup.  Now
17169         it Returns the internal codepage, if the value of "int_code_page"
17170         is 1 at entry, and we can not compute a suitable code page
17171         number, returns the code page as a string.
17172
17173 2004-04-13  Jackson Harper  <jackson@ximian.com>
17174
17175         * culture-info-tables.h: Fix number of decimal digits for all
17176         english locales.
17177
17178 2004-04-13  Jackson Harper  <jackson@ximian.com>
17179
17180         * icall.c: Clairfy out of sync error message. It is not always
17181         your corlib that is out of sync.
17182
17183 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
17184
17185         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
17186         properties when only the set accessor is overriden. Fixes #55874.
17187
17188 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * assembly.c (mono_assembly_load_references): Make this thread safe.
17191         Fixes #56327.
17192
17193 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17194
17195         * monosn.c: Add missing initialization calls.
17196
17197 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
17198
17199         * locales.c:
17200         ves_icall_System_Globalization_CultureInfo_construct_number_format
17201         Fix g_assert so it compiles on fussier compilers re int/ptr
17202         mismatch
17203
17204 2004-04-08  Dick Porter  <dick@ximian.com>
17205
17206         * socket-io.h:
17207         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
17208         53992.  Also rearrange the code so that the internal calls return
17209         an error value and exceptions are thrown from managed code.
17210
17211         * icall.c: Add type info to the socket icalls.
17212
17213 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17214
17215         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
17216         owes me a beer.
17217
17218 2004-04-07  Martin Baulig  <martin@ximian.com>
17219
17220         * class.c (mono_class_from_generic_parameter): Don't default
17221         `klass->parent' to `mono_defaults.object_type'.
17222
17223 2004-04-07  Martin Baulig  <martin@ximian.com>
17224
17225         * reflection.c (mono_reflection_initialize_generic_parameter): Set
17226         `param->pklass->reflection_info'.       
17227
17228 2004-04-07  Jackson Harper  <jackson@ximian.com>
17229
17230         * culture-info-tables.h: Fix date separator symbol.
17231         
17232 2004-04-07  Martin Baulig  <martin@ximian.com>
17233
17234         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
17235         from System.Type to System.MonoType.
17236
17237 2004-04-07  Martin Baulig  <martin@ximian.com>
17238
17239         * reflection.h
17240         (MonoReflectionGenericParam): Added `has_reference_type' and
17241         `has_value_type' fields.
17242
17243         * reflection.c (mono_image_get_generic_param_info): Encode the
17244         correct flags if we have the `class' or `struct' constraint.
17245
17246 2004-04-07  Martin Baulig  <martin@ximian.com>
17247
17248         * reflection.h
17249         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
17250
17251 2004-04-07  Jackson Harper  <jackson@ximian.com>
17252
17253         * appdomain.c: Revert extra patches, just wanted to bump the
17254         version number.
17255         
17256 2004-04-07  Jackson Harper  <jackson@ximian.com>
17257
17258         * Makefile.am: Add culture-info private headers.
17259         * icall.c: Add new icalls for contructing locales.
17260         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
17261         * locales.h: Declare new culture info construction methods.
17262         * object.h: Add new fields used to avoid the CultureMap to
17263         MonoCultureInfo.
17264         * culture-info.h: Definition of structs used in the culture info
17265         tables.
17266         * culture-info-tables.h: Autogenerated tables that contain culture
17267         info data. This file was generated with the locale-builder tool.
17268         * appdomain.c: Incement corlib version number.
17269         
17270 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
17271
17272         * appdomain.c: (mono_runtime_init) move mono_thread_init
17273         to before mono_object_new calls so critical sections
17274         are initialized before use.
17275
17276 2004-04-07  Martin Baulig  <martin@ximian.com>
17277
17278         * icall.c
17279         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
17280         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
17281         (ves_icall_MonoGenericParam_initialize): Removed.
17282         (monogenericparam_icalls): Removed.
17283         (generictypeparambuilder_icalls): Added new table for
17284         System.Reflection.Emit.GenericTypeParameterBuilder.
17285
17286         * reflection.c
17287         (mono_reflection_define_generic_parameter): Removed.
17288         (mono_reflection_initialize_generic_parameter): This is now called
17289         from GenericTypeParameterBuilder's .ctor.
17290
17291 2004-04-06  Martin Baulig  <martin@ximian.com>
17292
17293         * class.c (mono_class_init): Don't inflate nested classes in a
17294         generic instance.
17295         (mono_type_get_name_recurse): Include the generic arguments for
17296         generic instances and generic type declarations.
17297         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
17298         (_mono_class_get_instantiation_name): Removed.
17299         (mono_class_create_generic): Always use `gklass->name' as our name.
17300
17301         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
17302
17303         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
17304         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
17305         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
17306         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
17307         closed generic methods here.
17308
17309         * reflection.c
17310         (mono_reflection_generic_inst_get_nested_types): Removed.
17311         (inflate_mono_method): Copy the generic parameters from the
17312         MonoMethodHeader into out MonoGenericMethod.
17313
17314 2004-04-06  Martin Baulig  <martin@ximian.com>
17315
17316         * row-indexes.h
17317         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
17318
17319         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
17320
17321         * reflection.c (build_compressed_metadata): If we have any entries
17322         in the GenericParam, MethodSpec or GenericParamConstraint tables,
17323         set the header version to 1.1.
17324
17325 2004-04-06  Martin Baulig  <martin@ximian.com>
17326
17327         * class.c (mono_class_init): If we're a generic instance,
17328         initialize our nested classes, too.
17329         (_mono_class_get_instantiation_name): Deal with the new `!%d'
17330         suffix. 
17331
17332 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17333
17334         * process.c: quote the argument passed to the shell on windows.
17335
17336 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17337
17338         * threads.c (mono_alloc_special_static_data): Allow this to be
17339         called during startup.
17340
17341 2004-04-02  Martin Baulig  <martin@ximian.com>
17342
17343         * icall.c
17344         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
17345
17346 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17347
17348         * icall.c: Fix build.
17349
17350 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
17351
17352         * Makefile.am: Added security.c|h.
17353         * icall.c: Added icall for get_UserName;
17354         * security.c: New file for security related icalls. Added function
17355         get_UserName for System.Environment (fix #56144).
17356         * security.h: New. Header file for security.c
17357
17358 2004-04-02  Dick Porter  <dick@ximian.com>
17359
17360         * icall.c: Deleted the icalls that were obsoleted some time ago
17361         by the ICU string code, and which were mixed into the icall
17362         rearranging.  Fixes bug 55969.
17363
17364         * string-icalls.h: 
17365         * string-icalls.c: Deleted the code that those icalls reference.
17366
17367 2004-04-01  Martin Baulig  <martin@ximian.com>
17368
17369         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
17370
17371         * class.c (mono_class_from_generic_parameter): Don't set 
17372         TYPE_ATTRIBUTE_INTERFACE.
17373         (my_mono_class_from_generic_parameter): Likewise.
17374
17375 2004-04-01  Martin Baulig  <martin@ximian.com>
17376
17377         * loader.c (find_method): Added an optional `MonoClass *ic'
17378         argument to search in a specific interface.
17379         (mono_get_method_constrained): New public function.
17380
17381 2004-04-01  Martin Baulig  <martin@ximian.com>
17382
17383         * reflection.c (mono_image_get_generic_field_token): Use the
17384         `handleref' cache here.
17385
17386 2004-04-01  Martin Baulig  <martin@ximian.com>
17387
17388         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
17389
17390         * reflection.c (create_generic_typespec): Use the `typespec' hash
17391         here, not the `typeref' one.    
17392
17393 2004-04-01  Martin Baulig  <martin@ximian.com>
17394
17395         * class.c (mono_class_inflate_generic_type): Moved the
17396         functionality into a new static inflate_generic_type() which
17397         returns NULL if it didn't do anything.  Only increment the
17398         `mono_stats.inflated_type_count' if we actually inflated
17399         something.
17400         (mono_class_get_full): Check the classes type to see whether we
17401         need to inflate it; also inflate MONO_TYPE_(M)VAR.
17402
17403 2004-04-01  Jackson Harper  <jackson@ximian.com>
17404
17405         * reflection.c: Set culture for assembly references.
17406         
17407 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
17408
17409         * reflection.[ch], icall.[ch], Fix support for pinning variables.
17410
17411 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17412
17413         * assembly.c:
17414         (do_mono_assembly_open): the critical section also covers
17415         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
17416
17417 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17418
17419         * threads.c:
17420         (mono_manage_threads): abort the background threads when finishing.
17421         Fixes bug #47232.
17422
17423 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17424
17425         * gc.c: only close the done_event handle if there was no timeout.
17426         C-ified comments.
17427
17428 2004-03-30  Martin Baulig  <martin@ximian.com>
17429
17430         * icall.c (icall_entries): It's called "System.Activator", not
17431         "System.Activation".    
17432
17433 2004-03-30  Martin Baulig  <martin@ximian.com>
17434
17435         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
17436         (mono_class_create_from_typespec): Likewise.
17437
17438 2004-03-30  Martin Baulig  <martin@ximian.com>
17439
17440         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
17441         `has_ctor_constraint' and `initialized'.
17442
17443 2004-03-30  Martin Baulig  <martin@ximian.com>
17444
17445         * reflection.c (encode_new_constraint): New static function to add
17446         the constructor constraint attribute to a type parameter.
17447         (encode_constraints): Call encode_new_constraint() if necessary.
17448
17449         * reflection.h
17450         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
17451
17452         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
17453         
17454 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
17455
17456         * reflection.c, icall.c: add support for pinning variables. 
17457
17458 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
17459
17460         * marshal.c (mono_marshal_get_managed_wrapper):
17461         init bool local with zero rather than null.
17462
17463 2004-03-29  Martin Baulig  <martin@ximian.com>
17464
17465         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
17466         the "official" behavior here.
17467         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
17468
17469 2004-03-29  Martin Baulig  <martin@ximian.com>
17470
17471         * icall.c: Reflect latest API changes.
17472
17473 2004-03-29  Martin Baulig  <martin@ximian.com>
17474
17475         * loader.c (mono_get_method_from_token): Also call
17476         mono_metadata_load_generic_params () for abstract and interface
17477         methods; replace the type arguments in the method signature with
17478         the ones which are loaded from the metadata.
17479
17480 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
17481
17482         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
17483         of the lock is not the current thread. MS.NET don't do it, in spite of
17484         what the documentation says. See bug #56157.
17485
17486 2004-03-28  Martin Baulig  <martin@ximian.com>
17487
17488         * class.c (mono_class_init): Don't call init_properties() and
17489         init_events() for generic instances; set `prop->parent' when
17490         inflating properties.
17491
17492         * reflection.c (mono_generic_inst_get_object): Call
17493         `mono_class_init (ginst->klass)'.
17494         (mono_type_get_object): Only create a MonoGenericInst if your
17495         generic type is a TypeBuilder.
17496         (do_mono_reflection_bind_generic_parameters): Only set
17497         `ginst->is_dynamic' if our generic type is a TypeBuilder.
17498
17499 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
17502         Fixes #56091.
17503
17504 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17505
17506         * icall.c: added Kill_internal icall.
17507         * process.[ch]: added Kill_internal icall.
17508
17509 2004-03-25  Martin Baulig  <martin@ximian.com>
17510
17511         * class.h (MonoStats): Added `generic_instance_count',
17512         `inflated_method_count', `inflated_type_count' and
17513         `generics_metadata_size'.       
17514
17515 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17516
17517         * reflection.c: no warnings now.
17518
17519 2004-03-25  Martin Baulig  <martin@ximian.com>
17520
17521         * class.c (mono_class_get_full): New public function; does a
17522         mono_class_get(), but also takes a `MonoGenericContext *'.
17523
17524         * loader.c (mono_field_from_memberref): Renamed to
17525         `field_from_memberref', made static and added `MonoGenericContext *'
17526         argument.
17527         (mono_field_from_token): Added `MonoGenericInst *' argument.
17528         (method_from_memberef): Likewise.
17529         (mono_get_method_from_token): Likewise.
17530         (mono_get_method_full): New public function; does a
17531         mono_get_method(), but also takes a `MonoGenericContext *'.
17532
17533         * verify.c (mono_method_verify): Get the method's generic context
17534         and pass it to mono_field_from_token(), mono_get_method_full() and
17535         mono_class_get_full().
17536
17537 2004-03-25  Martin Baulig  <martin@ximian.com>
17538
17539         * class.c (mono_class_inflate_generic_type): Take a
17540         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
17541         `MonoGenericMethod *'.
17542
17543 2004-03-25  Martin Baulig  <martin@ximian.com>
17544
17545         * loader.h (MonoMethodInflated): Store the MonoGenericContext
17546         instead of the MonoGenericMethod here.
17547
17548 2004-03-25  Martin Baulig  <martin@ximian.com>
17549
17550         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
17551         each time we create a new MonoGenericInst, we also create a new
17552         context which points back to us.
17553
17554         * class.c (inflate_method): Use `ginst->context' instead of
17555         creating a new context.
17556
17557         * loader.c (method_from_memberref): Use
17558         `klass->generic_inst->context' instead of creating a new context.
17559
17560 2004-03-25  Martin Baulig  <martin@ximian.com>
17561
17562         * class.h (MonoGenericContext): New struct.
17563         (MonoGenericMethod): Removed `generic_inst'.
17564
17565         * class.c (mono_class_inflate_generic_method): Take a
17566         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
17567
17568 2004-03-25  Martin Baulig  <martin@ximian.com>
17569
17570         * loader.h (MonoMethodInflated): New typedef.
17571
17572         * metadata.h (MonoMethodSignature): Removed `gen_method', make
17573         `generic_param_count' consume just 30 bits, added `is_inflated'
17574         and `has_type_parameters' flags (one bit each).
17575
17576         * class.c (mono_class_inflate_generic_method): Create a
17577         MonoMethodInflated instead of a MonoMethodNormal and set
17578         `is_inflated' in the method signature.
17579
17580         * class.h (MonoGenericMethod): Removed `generic_method'.
17581
17582 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
17583
17584         * image.c: Make sure the name of a MonoImage is always an absolute path.
17585           This fixes bug #54415.
17586
17587 2004-03-24  Martin Baulig  <martin@ximian.com>
17588
17589         * class.c (mono_class_setup_vtable): If we're a generic instance,
17590         use our generic type's vtable size.
17591
17592 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17593
17594         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
17595         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
17596         problems.
17597
17598 2004-03-23  Martin Baulig  <martin@ximian.com>
17599
17600         * class.h (MonoDynamicGenericInst): Added `int count_events' and
17601         `MonoEvent *events'.
17602
17603         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
17604         (typebuilder_icalls): Added "get_event_info"; calls
17605         mono_reflection_event_builder_get_event_info(). 
17606
17607         * reflection.c (mono_reflection_generic_inst_initialize): Added
17608         `MonoArray *events'.
17609         (mono_reflection_event_builder_get_event_info): New function.
17610
17611 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
17612
17613         * object.h: add mono_type_initialization_init
17614
17615         * object.c (mono_runtime_class_init): 
17616         implement class constructor synchronization rules
17617         to cope with threading issues.  
17618         add mono_type_initialization_init
17619
17620         * appdomain.c (mono_runtime_init): call 
17621         mono_type_initialization_init
17622
17623         * class.h: removing initializing field from MonoVTable
17624
17625 2004-03-23  Martin Baulig  <martin@ximian.com>
17626
17627         * class.c (my_mono_class_from_generic_parameter): Use
17628         `param->name' if it's not NULL. 
17629
17630 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
17631
17632         * class.c: do not insert non-virtual methods in the vtable.
17633         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
17634         that means the method is non-virtual. This never would have
17635         happened before.
17636
17637 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17638
17639         * profiler.c: Added lock for accessing coverage_hash.
17640
17641 2004-03-22  Martin Baulig  <martin@ximian.com>
17642
17643         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
17644         `method->method->signature->generic_param_count != 0' to make it
17645         work for interface methods.
17646
17647 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17648
17649         * process.c: quote the string passed to the shell using g_shell_quote.
17650
17651 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17652
17653         * threads.c:
17654         (mono_threads_manage): don't remove the finalizer thread and self
17655         from the threads hash table so that mono_thread_manage can be called
17656         more than once.
17657
17658 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17659
17660         * process.c: quote the arguments when UseShellExecute is true. Fixes
17661         bug #55790.
17662
17663 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17664
17665         * threads.c: set mono_thread_detach as a cleanup routine for every
17666         thread. This way it's always executed upon thread termination, either
17667         aborted or finished normally. No more xsp hangs!
17668
17669 2004-03-17  Martin Baulig  <martin@ximian.com>
17670
17671         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
17672         `int count_nested' and a `MonoType **nested'.
17673
17674         * reflection.c (mono_reflection_bind_generic_parameters): Moved
17675         most of the functionality into a new static
17676         do_mono_reflection_bind_generic_parameters() and don't take a
17677         `MonoType *nested_in' argument any more.  Don't compute nested
17678         types here.
17679         (mono_reflection_generic_inst_get_nested_types): New public method
17680         to get nested types.
17681
17682         * class.c (mono_class_create_generic): Set `klass->nested_in' if
17683         we're a nested class.
17684
17685         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
17686         mono_reflection_generic_inst_get_nested_types() to compute the
17687         nested types.
17688
17689 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17690
17691         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
17692         descriptive error message under windows.
17693         
17694 2004-03-17  Martin Baulig  <martin@ximian.com>
17695
17696         * class.c (dup_type): Added `const MonoType *original' argument;
17697         copy the attrs from the original type.
17698
17699 2004-03-17  Martin Baulig  <martin@ximian.com>
17700
17701         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
17702         `m->generic_inst_cache' here.
17703
17704 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * exception.h exception.c: Add stack_overflow_exception.
17707
17708 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17709
17710         * threadpool.c:
17711         (overlapped_callback): call SetEvent *after* invoking the callback.
17712         No need to call CloseHandle.
17713
17714 2004-03-16  Martin Baulig  <martin@ximian.com>
17715
17716         * reflection.c (mono_image_get_fieldref_token): Take a
17717         `MonoReflectionField *' instead of a `MonoClassField *' and a
17718         `MonoClass *'; store the `MonoReflectionField *' in the hash.
17719
17720 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17721
17722         * appdomain.c: don't add the culture to the filename we're looking for
17723         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
17724
17725 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17726
17727         * locales.c: don't ignore symbols when doing case insensitive compares.
17728         Thanks Dick! Fixes bug #54046.
17729
17730         * threads.c: surround 'threads' usage with enter/leave in
17731         mono_thread_manage.
17732
17733 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17734
17735         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
17736         implicitly marshalled as [Out]. Fixes #55450.
17737
17738         (mono_marshal_get_runtime_invoke): Zero out the result if there is
17739         an exception.
17740
17741 2004-03-16  Martin Baulig  <martin@ximian.com>
17742
17743         * class.c (mono_class_from_generic_parameter): Use the actual
17744         parameter name. 
17745
17746 2004-03-16  Martin Baulig  <martin@ximian.com>
17747
17748         * reflection.c (type_get_signature_size): New static function.
17749         Compues the size of the type in a method signature.
17750         (method_get_signature_size): New static function; calls
17751         type_get_signature_size() to compute the actual size of the
17752         method's signature.
17753         (method_encode_signature): Use method_get_signature_size() to get
17754         the signature's size rather than using `nparams * 10'.
17755
17756 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17757
17758         * file-io.h: define here WapiOverlapped on windows. I don't want the
17759         regular OVERLAPPED one.
17760
17761         * file-io.c:
17762         * threadpool.c: somehow, BindIoCompletionCallback is not found.
17763         Disabling AIO on windows.
17764
17765 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17766
17767         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
17768         bug #55385.
17769
17770 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17771
17772         * appdomain.c: upgraded corlib version.
17773
17774         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
17775         and BeginWrite. Allow opening files for asynchrnous operations.
17776
17777         * file-io.h: new struct that maps FileStreamAsyncResult.
17778         * icall.c: added new icalls.
17779         * process.[ch]: support setting child process environment variables
17780         and use the SHELL or COMSPEC when UseShellExecute is true.
17781
17782         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
17783         callback for async. IO is here and also BindHandle.
17784
17785         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
17786         from here.
17787
17788 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * reflection.c (create_custom_attr): Allow len == 0.
17791
17792         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
17793         computation on big-endian machines.
17794
17795 2004-03-13  Martin Baulig  <martin@ximian.com>
17796
17797         * class.h (MonoGenericInst): Added `int count_ifaces'.
17798
17799         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
17800         `ginst->count_ifaces' instead `klass->interface_count' since we
17801         may get called before the vtable is created.
17802
17803         * loader.c (mono_method_get_param_names): If we're a generic
17804         instance, return and don't initialize the class.
17805
17806         * reflection.c (mono_reflection_setup_generic_class): Don't call
17807         ensure_runtime_vtable().
17808         (mono_reflection_bind_generic_parameters): Set
17809         `ginst->count_ifaces'.
17810
17811 2004-03-11  Jackson Harper <jackson@ximian.com>
17812
17813         * icall.c:
17814         * unicode.c:
17815         * unicode.h: Remove unused System.Char icalls.
17816         
17817 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
17818
17819         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
17820         code when we P/Invoke the first library in Windows.Forms, instead
17821         of when we first open the assembly.
17822
17823         * assembly.c: Drop the lookup from here.
17824
17825 2004-03-10  Martin Baulig  <martin@ximian.com>
17826
17827         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
17828         class for properties, fields and events.  Finally fixes #54945.
17829
17830 2004-03-10  Martin Baulig  <martin@ximian.com>
17831
17832         * metadata.c (mono_metadata_class_equal): New static function;
17833         checks whether two generic instances or two generic parameters are
17834         equal.
17835         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
17836         compare classes.        
17837
17838 2004-03-10  Martin Baulig  <martin@ximian.com>
17839
17840         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
17841
17842         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
17843         argument and write it into the `reflection_info' field.
17844
17845         * icall.c
17846         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
17847         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
17848
17849 2004-03-09  Jackson Harper  <jackson@ximian.com>
17850
17851         * char-conversions.h: use 8 bits for numeric data its all we need
17852         * icall.c: numeric data is only 8 bits now.
17853
17854 2004-03-09  Martin Baulig  <martin@ximian.com>
17855
17856         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
17857
17858         * class.c (init_properties, init_events): Initialize the new
17859         `parent' field.
17860
17861         * reflection.c (typebuilder_setup_properties): Likewise.
17862         (typebuilder_setup_events): Likewise.
17863
17864         * reflection.h (MonoEventInfo): Replaced `parent with
17865         `declaring_type' and `reflected_type'.
17866
17867         * icall.c (ves_icall_get_property_info): Distinguish between
17868         declaring and reflected type.
17869         (ves_icall_get_event_info): Likewise.
17870
17871 2004-03-09  Martin Baulig  <martin@ximian.com>
17872
17873         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
17874         (ves_icall_Type_GetField): Correctly set field->klass.
17875
17876 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * loader.h: Fix warning.
17879
17880 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
17881
17882         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
17883         library routine if present.  Notice that it will still continue
17884         executing even if its missing, for those working on the Gtk#
17885         edition of Windows.Forms.
17886
17887         * assembly.c (do_mono_assembly_open): If loading the
17888         System.Windows.Forms call mono_loader_wini_init.
17889
17890 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17891
17892         * class.h: Added MonoRemoteClass struct.
17893         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
17894         function for MonoStrings.
17895         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
17896         Added internal call for getting the proxy type.
17897         * marshal.c: Get the type of transparent proxies from its remote_class.
17898         Added methods that generate the IL for type checks and casts:
17899         mono_marshal_get_isinst, mono_marshal_get_castclass, 
17900         mono_marshal_get_proxy_cancast.
17901         * marshal.h: Declaration of the previous new methods.
17902         * object.c: Added new moethods for creating and updating MonoRemoteClass
17903         instances: mono_remote_class, mono_upgrade_remote_class, 
17904         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
17905         * verify.c: FIx transparent_proxy_fields layout.
17906         * appdomain.c: Bump corlib version.
17907
17908 2004-03-04  Jackson Harper  <jackson@ximian.com>
17909
17910         * icall.c: Add icall to access char conversion tables.
17911         * char-conversions.h: Character conversion tables.
17912         * Makefile.am: Add char-conversions.h private header file.
17913         
17914 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
17915
17916         * appdomain.c (unload_thread_main): Increase unloading timeout to
17917         10 sec as a temporary workaround for Nant problems.
17918
17919 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
17920
17921         * gc.c: Add checks for GC_enable and GC_disable.
17922
17923         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
17924         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
17925         (bug #54988).
17926         
17927 2004-02-27  Martin Baulig  <martin@ximian.com>
17928
17929         * reflection.c (mono_reflection_bind_generic_parameters): Take a
17930         `MonoReflectionType *' instead of a `MonoType *'.
17931
17932 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * gc.c (run_finalize): Avoid finalizing the object representing the
17935         finalizer thread.
17936         (finalizer_thread): Fix warning.
17937
17938 2004-02-25  Martin Baulig  <martin@ximian.com>
17939
17940         * class.c (_mono_class_get_instantiation_name): Added `int offset'
17941         argument for nested types.
17942         (mono_class_create_generic): Added support for nested generictypes.
17943
17944         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
17945         `GList *nested'.
17946
17947         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
17948
17949         * reflection.c (method_encode_signature): Increase the minimum
17950         value of `size' from 10 to 11.
17951         (mono_reflection_bind_generic_parameters): Take `int type_argc'
17952         and `MonoType **types' arguments instead of the `MonoArray
17953         *types'; added `MonoType *nested_in'.  Recursively instantiate
17954         nested classes. 
17955
17956 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
17957
17958         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
17959         stack_overflow_ex members which are used by exception handling.
17960
17961         * appdomain.c (mono_runtime_init): Initialize the new members.
17962
17963         * gc.c (mono_gc_enable): New helper function.
17964         * gc.c (mono_gc_disable): New helper function.
17965
17966 2004-02-23  Martin Baulig  <martin@ximian.com>
17967
17968         * icall.c: I must have been really stupid - make it actually work
17969         this time ;-)
17970
17971 2004-02-23  Martin Baulig  <martin@ximian.com>
17972
17973         * loader.c (method_from_memberref): Only inflate the method if
17974         it's in another klass.
17975
17976 2004-02-23  Martin Baulig  <martin@ximian.com>
17977
17978         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
17979         (mono_class_init): If we're a generic instance and an interface,
17980         compute `class->interface_id'; also create `class->interfaces'
17981         here and inflate them.
17982
17983         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
17984         `ginst->is_open'.
17985         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
17986
17987         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
17988
17989 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
17990
17991         * reflection.c (method_encode_code): Improved the error message
17992         generated by the exception.
17993
17994 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17995
17996         * icall.c: Martin did not do what he said in the ChangeLog for
17997         2004-02-18, but put back the changes for properties and events.
17998         Commenting those changes out again and adding comment to bug #54518.
17999         
18000         * process.c: removed warning.
18001
18002 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * marshal.c (emit_struct_conv): Print an error message instead of
18005         asserting when a type does not have the StructLayout attribute.
18006
18007 2004-02-20  Martin Baulig  <martin@ximian.com>
18008
18009         * reflection.c (mono_type_get_object): Also use the cache for
18010         generic instances.
18011         (mono_reflection_bind_generic_parameters): Always compute
18012         `ginst->ifaces'.        
18013
18014 2004-02-20  Martin Baulig  <martin@ximian.com>
18015
18016         * class.h (MonoGenericMethod): Removed `klass'.
18017
18018         * class.c (mono_class_inflate_generic_method): Added `MonoClass
18019         *klass' argument.
18020
18021 2004-02-20  Martin Baulig  <martin@ximian.com>
18022
18023         * reflection.c (method_encode_methodspec): Actually use the
18024         uninflated signature for the memberref.
18025
18026 2004-02-20  Martin Baulig  <martin@ximian.com>
18027
18028         * class.h (MonoGenericMethod): Removed `declaring'.
18029
18030         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
18031         is NULL, compute it here.
18032
18033 2004-02-20  Martin Baulig  <martin@ximian.com>
18034
18035         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
18036
18037         * metadata.c (mono_metadata_generic_inst_hash): New method.
18038         (mono_metadata_generic_inst_equal): New method.
18039
18040         * reflection.c (mono_reflection_bind_generic_parameters): Use the
18041         `klass->image->generic_inst_cache' cache to avoid creating
18042         duplicate MonoGenericInst's.
18043
18044         * class.c (mono_class_inflate_generic_type): Use the cache.
18045
18046 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18047
18048         * object.c: fixed gc descriptor calculation for embedded valuetypes.
18049
18050 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18051
18052         * icall.c: added Socket.WSAIoctl icall.
18053
18054         * socket-io.[ch]: implemented
18055         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
18056
18057 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
18058
18059         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
18060
18061 2004-02-18  Urs C Muff  <umuff@quark.com>
18062
18063         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
18064         this work on PPC and other big-endian architectures.
18065
18066         * debug-mono-symfile.h: Prepended the names of all the `guint32'
18067         fields with an underscore to make sure they're only accessed by
18068         the read32() macro.
18069
18070 2004-02-18  Martin Baulig  <martin@ximian.com>
18071
18072         * icall.c: Put the klass->refclass changes back for methods and
18073         fields, but not for properties and events.  We're currently not
18074         distinguishing between DeclaringType and ReflectedType for
18075         properties and events, that's what caused the regressions.
18076
18077 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18078
18079         * object.c:
18080         (mono_async_result_new): the handle can be NULL.
18081
18082         * threadpool.c: Use an event instead of a semaphore, don't initialize
18083         it until needed. This saves quite a few semaphores from being created
18084         when using the threadpool.
18085
18086 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
18087
18088         * object.c (mono_string_is_interned_lookup): Fix interning of long
18089         strings. Fixes #54473.
18090
18091         * domain.c (ldstr_equal): Optimize if the two strings are equal.
18092
18093         * icall.c: Revert the klass->refclass changes since they introduce
18094         regressions (bug #54518).
18095
18096 2004-02-18  Martin Baulig  <martin@ximian.com>
18097
18098         * class.c (mono_class_init): If we're a generic instance and don't
18099         come from a TypeBuilder, inflate our members here.
18100         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
18101         (mono_class_create_generic): New public method.
18102         (mono_class_initialize_generic): Removed.
18103         (get_instantiation_name): Renamed to
18104         _mono_class_get_instantiation_name() and made it public.
18105
18106 2004-02-18  Martin Baulig  <martin@ximian.com>
18107
18108         * class.c (mono_class_inflate_generic_type): Clear the new
18109         instance's `nginst->klass' when inflating a generic instance.
18110         (mono_class_is_subclass_of): Added (basic) support for generic
18111         instances.
18112
18113 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
18114
18115         * appdomain.h, domain.c: use a MonoCodeManager instead of a
18116         MonoMempool to hold compiled native code.
18117
18118 2004-02-17  Martin Baulig  <martin@ximian.com>
18119
18120         * class.h (MonoDynamicGenericInst): Added `count_properties' and
18121         `properties'.
18122
18123         * reflection.c (mono_reflection_generic_inst_initialize): Added
18124         `MonoArray *properties' argument.
18125
18126         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
18127
18128 2004-02-17  Martin Baulig  <martin@ximian.com>
18129
18130         * icall.c (ves_icall_Type_GetFields): Renamed to
18131         ves_icall_Type_GetFields_internal() and added a
18132         `MonoReflectionType *rtype' argument; pass it to
18133         mono_field_get_object() to set the field's "reflected" type.
18134         (ves_icall_Type_GetConstructors): Likewise.
18135         (ves_icall_Type_GetEvents): Likewise.
18136         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
18137         argument; pass it to mono_method_get_object() to set the method's
18138         "reflected" type.       
18139
18140 2004-02-17  Martin Baulig  <martin@ximian.com>
18141
18142         * class.h (MonoDynamicGenericInst): New type.
18143         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
18144
18145         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
18146         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
18147         (ves_icall_MonoGenericInst_GetFields): New interncall.
18148
18149         * class.c (mono_class_from_generic): Don't call
18150         mono_class_initialize_generic() if this is a dynamic instance;
18151         ie. it's being created from a TypeBuilder.
18152         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
18153         `class->byval_arg.type'.
18154
18155         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
18156         to `inflate_method' and made static.
18157         (mono_reflection_inflate_field): Removed.
18158         (mono_reflection_generic_inst_initialize): New public method.
18159
18160         * reflection.h (MonoReflectionGenericInst): Removed `methods',
18161         `ctors' and `fields'; added `initialized'.
18162
18163 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18164
18165         * debug-helpers.c (mono_method_full_name): Fix output for empty
18166         namespaces.
18167
18168 2004-02-12  Martin Baulig  <martin@ximian.com>
18169
18170         * class.h (MonoClassField): Added `MonoType *generic_type'.
18171
18172         * reflection.c (mono_image_get_fieldref_token): Added support for
18173         instantiated generic types.
18174         (field_encode_inflated_field): Removed.
18175         (mono_image_get_inflated_field_token): Removed.
18176         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
18177
18178         * reflection.h (MonoReflectionInflatedField): Removed.
18179
18180 2004-02-12  Martin Baulig  <martin@ximian.com>
18181
18182         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
18183         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
18184
18185         * reflection.c (mono_image_get_methodspec_token): Take a
18186         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
18187         (mono_image_create_token): Check whether we have a
18188         `method->signature->gen_method' and call
18189         mono_image_get_methodspec_token() if appropriate.
18190         (inflated_method_get_object): Removed.
18191         (mono_reflection_bind_generic_method_parameters): Return a
18192         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
18193         (mono_reflection_inflate_method_or_ctor): Likewise.
18194
18195         * reflection.h (MonoReflectionInflatedMethod): Removed.
18196
18197 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
18198
18199         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
18200         for custom valuetype marshalling.
18201
18202         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
18203
18204 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18205
18206         * icall.c: fixed WSAGetLastError_internal name.
18207
18208 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18209
18210         * threads.c (mono_thread_attach): Allow this to be called multiple
18211         times for a thread.
18212         
18213         * threads.c (build_wait_tids): Do not wait for ourselves.
18214
18215         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
18216         appdomain list is empty.
18217
18218         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
18219         memory returned by mono_string_builder_to_utf16, since it points into
18220         managed memory. Thanks to Bernie Solomon for noticing this.
18221
18222         * icall.c: Add AppDomainSetup icalls.
18223
18224         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
18225
18226         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
18227         types.
18228
18229         * reflection.c (reflection_methodbuilder_to_mono_method): Save
18230         custom attributes to the method_aux struct. Also fix array indexes etc.
18231
18232         * loader.c (mono_method_get_param_names): Make dynamic case work again.
18233         
18234 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
18235
18236         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
18237         (both static and runtime) and reduce startup time.
18238
18239 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18240
18241         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
18242         AsAny marshalling conversion instead of crashing.
18243
18244         * marshal.c: Fix warnings.
18245
18246 2004-02-09  Martin Baulig  <martin@ximian.com>
18247
18248         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
18249
18250         * reflection.h (MonoReflectionInflatedMethod): Removed the
18251         `declaring' field, it's now in the unmanaged MonoGenericMethod.
18252
18253         * reflection.c (method_encode_methodspec): Removed the `method'
18254         argument; we get it from `gmethod->declaring'.
18255         (inflated_method_get_object): Removed the `declaring' argument.
18256
18257 2004-02-09  Martin Baulig  <martin@ximian.com>
18258
18259         * class.h (MonoGenericMethod): New type.
18260         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
18261         `generic_method'.
18262
18263         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
18264         a `MonoGenericMethod *gen_method' one.
18265
18266         * class.c (mono_class_inflate_generic_type): Take an additional
18267         `MonoGenericMethod * argument.  This is only non-NULL if we're
18268         inflating types for a generic method.   
18269         (mono_class_inflate_generic_signature): Renamed to
18270         inflate_generic_signature() and made static; take a
18271         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18272         (inflate_generic_header): Take a `MonoGenericMethod *' argument
18273         instead of a `MonoGenericInst *' one.
18274         (mono_class_inflate_generic_method): Likewise.
18275
18276         * reflection.c (encode_generic_method_sig): Take a
18277         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18278         (method_encode_methodspec): Likewise.
18279         (inflated_method_get_object): Likewise. 
18280
18281         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
18282         field with a `MonoGenericMethod *gmethod' one.  
18283
18284 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
18285
18286         * class.h (mono_class_has_parent): add parens to expansion
18287         so you can ! this.
18288
18289 2004-02-08  Martin Baulig  <martin@ximian.com>
18290
18291         * image.h (MonoImage): Removed `generics_cache'.
18292
18293         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
18294         instead of a `MonoType *' argument; removed the `inflate_methods'
18295         argument.  Don't inflate methods here.
18296
18297         * loader.c (find_method): If it's a generic instance, call
18298         mono_class_init() on the `sclass->generic_inst->generic_type'.
18299
18300         * metadata.c (mono_type_size): Make this work on uninitialized
18301         generic instances; call it on the `ginst->generic_type's class.
18302
18303         * reflection.c (mono_reflection_bind_generic_parameters): Call
18304         mono_class_from_generic() to create the `ginst->klass'.
18305
18306 2004-02-08  Martin Baulig  <martin@ximian.com>
18307
18308         * class.h (MonoClass): Changed type of `generic_inst' from
18309         `MonoType *' to `MonoGenericInst *'.
18310
18311 2004-02-08  Martin Baulig  <martin@ximian.com>
18312
18313         * icall.c (ves_icall_Type_BindGenericParameters): Just call
18314         mono_type_get_object(), this is now creating a `MonoGenericInst'
18315         for MONO_TYPE_GENERICINST.
18316         (ves_icall_MonoGenericInst_GetParentType): Likewise.
18317         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
18318
18319         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
18320         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
18321         (inflated_method_get_object): Added `MonoClass *refclass' argument.
18322         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
18323         and reflected type.
18324
18325         * reflection.h (MonoReflectionInflatedMethod): Removed
18326         `declaring_type' and `reflected_type'.
18327
18328 2004-02-08  Martin Baulig  <martin@ximian.com>
18329
18330         * class.h (MonoGenericInst): Added `MonoType *parent' and
18331         `MonoType **ifaces'.
18332
18333         * reflection.h (MonoReflectionGenericInst): Removed `klass',
18334         `parent' and `interfaces'.
18335
18336         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18337         `MonoType *' argument and return a `MonoType *'.
18338
18339         * icall.c
18340         (ves_icall_MonoGenericInst_GetParentType): New interncall.
18341         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
18342
18343 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18344
18345         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
18346         valuetype marshalling.
18347
18348 2004-02-06  Martin Baulig  <martin@ximian.com>
18349
18350         * class.c
18351         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
18352         (my_mono_class_from_generic_parameter): Likewise.
18353
18354 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
18357         contents of the symbol files lazily.
18358
18359         * object.h (MonoThread): Add 'name' and 'name_len' fields.
18360
18361         * threads.h threads.c icall.c: New icalls for getting and setting the
18362         threads name.
18363
18364 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
18367         Raise an exception when the domain is not found.
18368
18369 2004-02-03  Martin Baulig  <martin@ximian.com>
18370
18371         * reflection.c (mono_image_get_methodspec_token): Use the
18372         uninflated signature; fixes gen-33.
18373
18374 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * gc.c threads.c: Make the finalizer thread a normal managed thread so
18377         the finalizer code can use thread functionality.
18378
18379         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
18380         the finalizer thread.
18381
18382         * threads.c: Make some functions more robust.
18383
18384         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
18385
18386         * metadata.h: Add new marshalling conventions.
18387
18388         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
18389         stringbuilder marshalling. Fixes #53700.
18390
18391         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
18392
18393         * reflection.c (mono_image_get_type_info): Save declarative security
18394         info.
18395
18396         * reflection.c (mono_image_get_field_info): Handle uninitialized 
18397         unmanaged fields as well.
18398
18399         * appdomain.c: Bump corlib version.
18400
18401 2004-02-01  Martin Baulig  <martin@ximian.com>
18402
18403         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
18404         method type arguments.  
18405
18406 2004-01-30  Duncan Mak  <duncan@ximian.com>
18407
18408         * marshal.h: Add prototype for
18409         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
18410         and
18411         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
18412         fix the build.
18413
18414 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
18415
18416         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
18417         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
18418
18419 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18420
18421         * marshal.c (mono_marshal_get_native_wrapper): Add support for
18422         custom marshalling of valuetypes.
18423
18424         * marshal.c: Fix some warnings.
18425
18426 2004-01-29  Martin Baulig  <martin@ximian.com>
18427
18428         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
18429         for generic method parameters.
18430
18431         * reflection.c (method_encode_methodspec): Write the uninflated
18432         signature into the methodspec table.
18433         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
18434         is always the uninflated method.
18435         (reflection_methodbuilder_to_mono_method): Copy the generic
18436         parameters from the MethodBuilder into `header->gen_params'.
18437
18438 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * class.c (mono_class_from_generic_parameter): Fix warning.
18441
18442 2004-01-27  Martin Baulig  <martin@ximian.com>
18443
18444         * class.c (mono_class_from_generic_parameter): Don't create
18445         `klass->methods' here.  
18446
18447 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
18450         extension since it does not work with libraries named lib<FOO>.dll.so.
18451
18452 2004-01-25  Martin Baulig  <martin@ximian.com>
18453
18454         * class.c (mono_class_inflate_generic_type): Added support for
18455         MONO_TYPE_GENERICINST.
18456
18457         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
18458         inflate methods on open constructed types.      
18459
18460 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18461
18462         * object.c: fire ProcessExit event in the root AppDomain after running
18463         Main. Fixes bug #53299.
18464
18465 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18466
18467         * socket-io.c: include the new socket-wrappers.h header.
18468         Use the wrappers instead of the unix socket functions to make the code
18469         more clear.
18470
18471 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18472
18473         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
18474
18475         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18476         Fixes #22532.
18477
18478 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * reflection.c (mono_image_create_pefile): Handle the case when the
18481         entry point is not a MethodBuilder.
18482
18483         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18484         field to ReflectionMethod since it is not allways a builder.
18485
18486         * reflection.c (type_get_fully_qualified_name): New helper function to
18487         return the fully qualified name of a type.
18488
18489         * reflection.c (encode_marshal_blob): Always emit the fully qualified
18490         type name for custom marshallers.
18491
18492         * reflection.c (mono_marshal_spec_from_builder): Ditto.
18493
18494         * class.c (mono_class_setup_vtable): If a parent class already 
18495         implements an interface, use the implementing methods from that class.
18496         Fixes #53148.
18497
18498 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18499
18500         * threadpool.c: just return instead of ExitThread to allow for thread
18501         clean up earlier.
18502
18503 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
18506         when closing resource modules.
18507
18508         * reflection.c (mono_image_create_pefile): Handle the case when the
18509         entry point is not a MethodBuilder.
18510
18511         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18512         field to ReflectionMethod since it is not allways a builder.
18513
18514 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18515
18516         * marshal.c (mono_marshal_get_managed_wrapper): 
18517         mono_marshal_alloc takes native int so CONV_I
18518         the arg for 64bits.
18519
18520 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
18521
18522         * reflection.c (fixup_cattrs): New function to fixup the methoddef
18523         tokens in the cattr table. Fixes #53108.
18524
18525 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18526
18527         * loader.c: don't trim ".dll" before looking up in the config file.
18528         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
18529
18530 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18531
18532         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
18533         Return the module which contains the resource as well.
18534         (ves_icall_System_Reflection_Module_Close): New icall.
18535
18536         * appdomain.c: Bump corlib version number.
18537
18538         * image.c (mono_image_addref): New public function.
18539
18540         * assembly.c: Call mono_image_addref.
18541
18542         * reflection.c (mono_module_get_object): Increase reference count of 
18543         the image.
18544
18545         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18546         Fixes #22532.
18547
18548         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
18549         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
18550         proper exceptions on DllImport problems.
18551
18552 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
18553
18554         * class.c, metadata.c: eliminate CSIZE macro.
18555
18556 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
18557
18558         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
18559         * object.h: Added async_callback field in MonoAsyncResult.
18560         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
18561         * verify.c: Added async_callback in MonoAsyncResult layout.
18562
18563 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
18564
18565         * reflection.c (mono_reflection_get_custom_attrs): Add support
18566         for Modules.
18567
18568 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
18571         marshalling.
18572         (mono_marshal_method_from_wrapper): Add null pointer check.
18573
18574 2004-01-16  Martin Baulig  <martin@ximian.com>
18575
18576         * debug-mono-symfile.h: Set version number to 36 and reflect
18577         latest symbol writer changes.
18578
18579 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18580
18581         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
18582         multi-dimensional arrays.
18583         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
18584         (mono_class_from_mono_type): Use bounded_array_class_get.
18585         
18586         * class.c (mono_bounded_array_class_get): New function which takes
18587         a 'bounded' bool argument to distinguish vectors from one dimensional
18588         arrays.
18589
18590         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
18591         bounded_array_class_get if the array has bounds.
18592
18593         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18594         Search modules loaded using AssemblyBuilder:AddModule as well.
18595
18596 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18597
18598         * appdomain.c: increased corlib version.
18599         * filewatcher.c: removed g_print.
18600         * icall.c:
18601         (get_property_info): only allocate what is actually requested.
18602         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
18603
18604 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18605
18606         * Makefile.am: added filewatcher.[ch]
18607         * filewatcher.[ch]: FileSystemWatcher runtime support.
18608         * icall.c: added new FSW icalls.
18609
18610 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18611
18612         * string-icalls.c: fix stringbuilder regression as suggested by
18613         Iain McCoy <iain@mccoy.id.au>.
18614
18615 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18616
18617         * process.c (process_read_stringtable_block): Recognize '007f' as
18618         a language neutral stringtable block.
18619
18620 2004-01-12  Patrik Torstensson
18621
18622         * object.h (MonoStringBuilder) : Changed layout to support our
18623         new stringbuilder class.
18624         * marshal.c: Change marshalling to support the new layout of 
18625         string builder.
18626         * appdomain.c: increased version number because new layout of
18627         string builder.
18628
18629 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
18632         assembly name as an string instead of an AssemblyName, since it is
18633         easier to extract info from it.
18634
18635         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
18636         the culture subdirectories too. Fixes #52231.
18637
18638 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18639
18640         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
18641         It takes 2 new parameters with an optional name for the method to look
18642         for and case ignoring info.
18643
18644         * threadpool.c: removed unused variable.
18645
18646 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18647
18648         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
18649         It takes 2 new parameters with an optional name for the property to look
18650         for and case ignoring info.
18651         Fixes bug #52753.
18652
18653 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
18656         Fix #52451.
18657
18658 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18659
18660         * appdomain.c:
18661         * assembly.c: escape the uri before passing it to g_filename_from_uri.
18662         Fixes bug #52630.
18663
18664 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * reflection.c: Add support for more than one unmanaged resource.
18667
18668         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
18669         in field->def_value, as done in all other cases.
18670
18671         * reflection.c (mono_reflection_get_custom_attrs): Add support for
18672         TypeBuilders.
18673
18674         * reflection.c (mono_reflection_create_runtime_class): Remove 
18675         errorneous assignment to klass->element_class, since it is already
18676         done in mono_reflection_setup_internal_class.
18677
18678 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18679
18680         * gc.c: added missing LeaveCriticalSection.
18681         * icall.c: indented a couple of lines.
18682         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
18683         if we call EndInvoke inside a callback. Fixes bug #52601.
18684
18685 2004-01-07  Martin Baulig  <martin@ximian.com>
18686
18687         * mono-debug-debugger.h
18688         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
18689
18690 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
18691
18692         * appdomain.c: Use messages in NotImplementedException.
18693
18694         * exception.c (mono_get_exception_not_implemented): Now this takes
18695         a message argument.
18696
18697         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
18698         exception instead of g_asserting an aborting when something is not
18699         implemented.
18700
18701         Add some inline docs.
18702
18703 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * reflection.h: Update after changes to object layout.
18706
18707         * reflection.c: Implement saving of unmanaged aka win32 resources.
18708
18709         * appdomain.c: Bump version number.
18710
18711         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
18712         Handle missing domains gracefully.
18713
18714 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
18715
18716         * file-io.c : On Windows, there are much more invalid_path_chars.
18717
18718 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18719
18720         * class.h, object.c: prepare for GetType () speedup.
18721
18722 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
18723
18724         * profiler.c: workaround for --profile null reference exception on
18725           cygwin. Patch by Patrik Torstensson.
18726
18727 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
18728
18729         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
18730         make work for unaligned access.
18731
18732 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
18733
18734         * class.c: small cleanup (class->fields [i] -> field).
18735         * image.c: check address of metadata is valid.
18736
18737 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
18738
18739         * assembly.h assembly.c (mono_assembly_loaded): New public function to
18740         search the list of loaded assemblies.
18741
18742         * reflection.c (mono_reflection_type_from_name): Use 
18743         mono_assembly_loaded instead of mono_image_loaded.
18744
18745         * reflection.c: Fix warnings.
18746
18747 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
18750         is dynamic. This is needed since an assembly can contain both dynamic and
18751         non-dynamic images.
18752
18753         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
18754         assembly->dynamic.
18755
18756         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
18757
18758         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
18759         to store modules loaded using AddModule.
18760
18761         * reflection.c (mono_image_fill_file_table): Generalize this so it works
18762         on Modules.
18763
18764         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
18765
18766         * reflection.c (mono_image_fill_export_table_from_module): New function to
18767         fill out the EXPORTEDTYPES table from a module.
18768
18769         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
18770         into a separate function. Also handle loaded non-dynamic modules.
18771
18772         * reflection.c (mono_image_basic_init): Fix memory allocation.
18773
18774         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18775
18776         * assembly.c (mono_assembly_load_references): Make this public.
18777
18778 2003-12-19  Martin Baulig  <martin@ximian.com>
18779
18780         * class.c (mono_class_initialize_generic): Made this static, take
18781         a `MonoGenericInst *' instead of a `MonoClass *'.
18782         (mono_class_from_generic): Call mono_class_initialize_generic()
18783         unless we're already initialized or being called from
18784         do_mono_metadata_parse_generic_inst().
18785
18786         * class.h (MonoGenericInst): Added `initialized' and
18787         `init_pending' flags.
18788
18789         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
18790         `mono_class_init (gklass)' or mono_class_initialize_generic()
18791         here; set `generic_inst->init_pending' while parsing the
18792         `type_argv'.
18793
18794 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
18795
18796         * locales.c: include string.h for memxxx prototypes
18797
18798 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
18801         constructor when accessing literal fields.
18802
18803 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
18804
18805         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18806
18807         * reflection.c (assembly_add_resource_manifest): New function to fill
18808         the MANIFESTRESOURCE table.
18809
18810         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
18811
18812         * reflection.h: Update to changes in class layout.
18813
18814         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
18815         Reenable call to mono_runtime_is_shutting_down ().
18816
18817         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
18818         determine if the runtime is shutting down.
18819
18820 2003-12-16  Jackson Harper <jackson@ximian.com>
18821
18822         * icall.c: comment out call to mono_runtime_is_shutting_down to
18823         fix build.
18824         
18825 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
18828         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
18829
18830 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
18831
18832         * reflection.c: move definition of swap_with_size
18833         to before its first call
18834
18835 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
18836
18837         * appdomain.c (mono_runtime_is_shutting_down): New public function.
18838
18839         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
18840         icall.
18841
18842         * object.c: Fix warnings.
18843
18844         * icall.c (ves_icall_Type_Get...): Only consider inherited static
18845         members if FlattenHierarchy is set.
18846
18847         * reflection.c (mono_image_add_decl_security): New function to emit
18848         declarative security.
18849
18850         * reflection.h reflection.c: Add support for declarative security.
18851
18852         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18853         
18854 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18855
18856         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18857         
18858         * appdomain.c verify.c: Moved corlib version checking into its own
18859         function in appdomain.c since it needs to create vtables etc.
18860
18861 2003-12-13  Patrik Torstensson <p@rxc.se>
18862
18863         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
18864         instead of unwrapped server.
18865
18866 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * verify.c (check_corlib): Fix field index.
18869
18870 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
18873         GetGacPath icall.
18874
18875 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
18876
18877         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
18878         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
18879         cope with sizeof(size_t) != sizeof(guint32).
18880
18881 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18882
18883         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
18884         in case of failure.
18885
18886 2003-12-10  Mark Crichton <crichton@gimp.org>
18887
18888         * icall.c: removed the GetNonZeroBytes.  We now handle this case
18889         in managed code.
18890
18891         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
18892
18893 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
18894
18895         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
18896         marked as deleted.
18897
18898 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18899
18900         * verify.c (check_corlib): Handle the case when the version field is 
18901         initialized by a static constructor.
18902
18903 2003-12-08  Patrik Torstensson  <p@rxc.se>
18904
18905     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
18906
18907 2003-12-08  Martin Baulig  <martin@ximian.com>
18908
18909         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
18910         a MonoReflectionGenericParameter, also take the parameter index
18911         and name as arguments.
18912         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
18913         (ves_icall_MonoGenericParam_initialize): New interncall.
18914         (ves_icall_Type_make_byref_type): New interncall.
18915
18916         * reflection.h (MonoReflectionGenericParam): Derive from
18917         MonoReflectionType, not just from MonoObject.  Added `refobj' and
18918         `index' fields.
18919
18920         * reflection.c (mono_reflection_define_generic_parameter): Create
18921         and return a new MonoReflectionGenericParam; don't initialize the
18922         constraints here.
18923         (mono_reflection_initialize_generic_parameter): New public method;
18924         initializes the constraints and creates the `param->pklass'.
18925
18926 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * reflection.h reflection.c: Use the new fields 'num_types', 
18929         'num_fields' and 'num_methods' to track the number of types etc.
18930
18931         * verify.c (check_corlib): Check corlib version number.
18932
18933 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
18934
18935         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
18936         function works on all methods.
18937
18938 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18939
18940         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
18941         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
18942         the custom_type_info flag of the transparent proxy.
18943         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
18944         objects that supports IRemotingTypeInfo.
18945         * object.h: Added custom_type_info field in transparent proxy.
18946
18947 2003-12-06  Martin Baulig  <martin@ximian.com>
18948
18949         * class.c (mono_class_create_from_generic): Removed.
18950         (mono_class_from_generic): Check `ginst->klass' before doing
18951         anything else.  This is important to fully support "recursive"
18952         generic types.
18953
18954         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
18955         empty `generic_inst->klass' before doing anything else.
18956
18957 2003-12-06  Dick Porter  <dick@ximian.com>
18958
18959         * verify.c: 
18960         * object.h:
18961         * icall.c:
18962         * locales.c: Use C structs to access class fields.  Don't do a
18963         conversion between MonoString and UChar because both are
18964         platform-endian UTF-16.  Compare now takes startindex and count
18965         parameters.  Add a char overload for IndexOf.  Speed up the
18966         invariant string IndexOf.
18967
18968 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * Makefile.am (monosn_LDADD): Fix parallel build.
18971
18972 2003-12-04  Martin Baulig  <martin@ximian.com>
18973
18974         * icall.c
18975         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18976         (ves_icall_Type_make_array_type): New interncall.       
18977
18978 2003-12-04  Martin Baulig  <martin@ximian.com>
18979
18980         * locales.c: also change it in the !HAVE_ICU case.
18981
18982 2003-12-04  Dick Porter  <dick@ximian.com>
18983
18984         * icall.c:
18985         * locales.c: construct_compareinfo is now in CompareInfo, not
18986         CultureInfo.
18987
18988 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * image.c (mono_image_load_file_for_image): Cache loaded images in the
18991         image->files array.
18992
18993         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
18994         table as well.
18995
18996         * assembly.c (mono_assembly_load_references): Only load references
18997         once.
18998
18999         * class.c (mono_class_from_name): Avoid linear search of the 
19000         EXPORTEDTYPE table.
19001
19002         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
19003
19004 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * image.h (MonoImage): Add 'field_cache' field.
19007
19008         * loader.c (mono_field_from_token): Cache field lookups.
19009         
19010         * reflection.c (mono_module_get_object): Fix name property.
19011
19012         * icall.c (ves_icall_get_enum_info): Update after changes to 
19013         mono_metadata_get_constant_index ().
19014
19015         * icall.c: Get rid of get_type_info icall, use a separate icall for
19016         each type property to avoid needless memory allocations. Fixes #51514.
19017
19018         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
19019         to avoid needless binary searches.
19020
19021         * class.c (class_compute_field_layout): Move the initialization of
19022         field->def_value to mono_class_vtable ().
19023
19024         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
19025         non-corlib types.
19026
19027         * object.c (mono_object_allocate): Make it inline.
19028
19029         * object.c (mono_object_allocate_spec): Make it inline.
19030         
19031 2003-12-02  Dick Porter  <dick@ximian.com>
19032
19033         * locales.c (create_NumberFormat): NumberFormatInfo construction.
19034         Patch by Mohammad DAMT (mdamt@cdl2000.com).
19035
19036 2003-12-01  Dick Porter  <dick@ximian.com>
19037
19038         * threads.c: Fix signature and call in CreateMutex and
19039         CreateEvent.
19040
19041 2003-12-01  Dick Porter  <dick@ximian.com>
19042
19043         * icall.c: 
19044         * locales.c: Implement string compares and searching
19045
19046         * object.h: Add extra Thread field
19047
19048 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * reflection.c (fixup_method): Add support for MonoCMethod.
19051
19052 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
19053
19054         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
19055
19056         * reflection.c (assembly_name_to_aname): Allow extra characters in
19057         assembly names. Fixes #51468.
19058
19059 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * exception.c (mono_exception_from_name_domain): New helper function.
19062
19063         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
19064         exception object in the correct domain.
19065
19066         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
19067         formatting + make a copy a the input data.
19068
19069         * loader.c (mono_get_method_from_token): Methods which contain
19070         native code do not have entries in the ImplMap.
19071
19072         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
19073         Thanks to Gonzalo for spotting this.
19074         
19075         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
19076         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
19077
19078         * assembly.h (mono_assembly_load_from): Split the second part of 
19079         assembly loading into a new public function.
19080
19081         * exception.h (mono_get_exception_bad_image_format): New function.
19082
19083 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19086         Enumerate all modules inside a dynamic assembly. Fixes #51293.
19087         
19088         * icall.c: Add new icall for creating dynamic methods.
19089
19090         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
19091
19092         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
19093
19094         * reflection.c (mono_reflection_create_dynamic_method): New icall to
19095         create a dynamic method.
19096
19097         * reflection.c (resolve_object): New helper function.
19098
19099         * reflection.c: Generalize ReflectionMethodBuilder and the functions
19100         which manipulate it so they can also work on dynamic methods.
19101
19102         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
19103         creating the MonoReflectionMethodAux structure if it is not needed.
19104         
19105         * reflection.h verify.c: Update after changes to object layout.
19106
19107         * reflection.c (method_builder_encode_signature): Fix compilation on
19108         gcc 2.95.x.
19109
19110 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
19111
19112         * appdomain.h: Added support for context static fields. Added static_data
19113           field to MonoAppContext and renamed thread_static_fields to a more
19114           generic special_static_fields in MonoAppDomain, since it can now contain
19115           context static fields.
19116         * domain.c: Updated hashtable name.
19117         * object.c: Replaced field_is_thread_static() for a more generic
19118           field_is_special_static() which also checks for context static attribute.
19119           In mono_class_vtable(), added support for static context fields.
19120         * threads.c: Changed methods that manage thread static fields to more
19121           generic methods so they can be reused both for thread and context static
19122           data.
19123         * threads.h: Declared some new methods.
19124
19125 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * reflection.h: Update after changes to the managed types.
19128
19129         * reflection.c (encode_custom_modifiers): New helper function.
19130
19131         * reflection.c (method_encode_signature): Emit custom modifiers.
19132
19133         * reflection.c (field_encode_signature): Emit custom modifiers.
19134
19135 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19136
19137         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
19138
19139         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
19140         implementation.
19141
19142         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
19143         icall.
19144
19145         * object.c (mono_field_get_value_object): New function.
19146
19147         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
19148         specific.
19149
19150 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19151
19152         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
19153         return a preallocated out-of-memory exception instance.
19154
19155         * object.c (out_of_memory): Use the new function.
19156
19157         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
19158         flag is before the custom modifiers. Fixes #49802.
19159
19160 2003-11-16  Martin Baulig  <martin@ximian.com>
19161
19162         * class.c (mono_class_is_open_constructed_type): Implemented the
19163         MONO_TYPE_GENERICINST case.
19164
19165 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * assembly.c (mono_assembly_fill_assembly_name): New function to
19168         fill out the MonoAssemblyName structure.
19169         (mono_assembly_open): Use the new function.
19170
19171         * icall.c (fill_reflection_assembly_name): New helper function.
19172
19173         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
19174         new function.
19175
19176         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
19177
19178 2003-11-15  Martin Baulig  <martin@ximian.com>
19179
19180         * class.c (mono_class_is_open_constructed_type): New public
19181         function; checks whether a type is an open constructed type,
19182         ie. whether it still contains type parameters.
19183         (mono_class_inflate_generic_type): If we're a type parameter and
19184         the inflated type is also a MONO_TYPE_(M)VAR, return the original
19185         type.
19186
19187         * class.h (MonoGenericInst): Added `guint32 is_open'.
19188
19189         * loader.c (method_from_methodspec): Check whether we're an open
19190         or closed constructed type and set `ginst->is_open'.
19191
19192         * reflection.c (mono_reflection_bind_generic_parameters): Check
19193         whether we're an open or closed constructed type and set
19194         `ginst->is_open'.
19195         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
19196         from open constructed types.
19197
19198 2003-11-15  Martin Baulig  <martin@ximian.com>
19199
19200         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19201         a generic instance (instead of a generic type declaration) with
19202         unbound generic parameters, bind them to our actual types.
19203
19204 2003-11-14  Martin Baulig  <martin@ximian.com>
19205
19206         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
19207
19208         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19209         an interface type, populate `res->interfaces' with instantiated
19210         versions of all the interfaces we inherit.
19211
19212 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
19213
19214         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
19215         when MONO_PATH is set but doesn't contain the install dir.
19216
19217 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19218
19219         * icall.c:
19220         (ves_icall_Type_GetInterfaces): don't return an interface twice when
19221         it's also implemented in base classes. Fixes bug #50927.
19222
19223 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
19224
19225         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
19226         if this method is called from a finalizer. Fixes #50913.
19227
19228 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
19229
19230         * threads.c: Implement VolatileRead/VolatileWrite
19231
19232         * icall.c: Add new icalls for VolatileRead/VolatileWrite
19233
19234 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19235
19236         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
19237         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
19238         2.95.3.
19239
19240         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
19241         from Peter Ross (pro@missioncriticalit.com).
19242         
19243 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
19244
19245         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
19246
19247 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * assembly.c (mono_assembly_load_references): Disable check because it
19250         triggers on older corlibs which lots of people have.
19251
19252 2003-11-12  Jackson Harper  <jackson@ximian.com>
19253
19254         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
19255         load corlib.dll if mscorlib.dll is not found.
19256         * assembly.h: Remove corlib name define.
19257         * class.c:
19258         * domain.c:
19259         * image.c: Change corlib name to mscorlib.
19260         
19261 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
19264
19265 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
19266
19267         * appdomain.h: Added loader_optimization here to sync with the C#
19268         code, and add disallow_binding_redirects field.
19269
19270 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
19273
19274         * reflection.c (mono_image_build_metadata): Fix crash on modules
19275         with no types.
19276
19277         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
19278
19279         * icall.c (ves_icall_get_method_info): Return callingConvention as
19280         well.
19281
19282         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
19283         namespaces from the EXPORTEDTYPE table as well.
19284
19285         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
19286         from all modules inside the assembly.
19287         
19288 2003-11-11  Martin Baulig  <martin@ximian.com>
19289
19290         * reflection.c (mono_reflection_bind_generic_parameters): Make
19291         this work for interfaces.
19292
19293 2003-11-11  Martin Baulig  <martin@ximian.com>
19294
19295         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
19296
19297 2003-11-11  Martin Baulig  <martin@ximian.com>
19298
19299         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
19300         "MonoInflatedMethod" and "MonoInflatedCtor".
19301
19302 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19303
19304         * reflection.c (resolution_scope_from_image): Use the assembly table
19305         from the manifest module, since other modules don't have it.
19306
19307         * debug-helpers.c (mono_type_full_name): New helper function.
19308
19309         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
19310
19311         * image.c (mono_image_load_file_for_image): New public function which
19312         is a replacement for the load_file_for_image in class.c.
19313
19314         * assembly.c (mono_assembly_load_module): A wrapper for the function
19315         above which does assembly association and reference loading too.
19316
19317         * class.c (mono_class_from_name): Call mono_assembly_load_module.
19318
19319 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19320
19321         * appdomain.c: not all of the attributes for the full assembly name
19322         are required and the order doesn't matter. Fixes bug #50787.
19323
19324 2003-11-10  Dick Porter  <dick@ximian.com>
19325
19326         * locales.c: Use platform-endian UTF16
19327
19328 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19331         
19332 2003-11-10  Martin Baulig  <martin@ximian.com>
19333
19334         * metadata.c
19335         (mono_metadata_load_generic_params): Make this actually work.
19336
19337         * reflection.c (mono_reflection_bind_generic_parameters): If our
19338         parent is a generic instance, pass all the `types' to it, no
19339         matter whether it has the same number of type parameters or not.
19340
19341 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19344
19345         * assembly.c (mono_assembly_load_references): Move the image<->assembly
19346         assignment code to this function so it gets called recursively for all
19347         modules.
19348
19349         * image.c (load_modules): Remove the assembly assignment since it is
19350         now done by mono_assembly_load_references.
19351         
19352         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19353         Add 'module' argument.
19354         (mono_module_get_types): New helper function.
19355         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
19356
19357 2003-11-08  Martin Baulig  <martin@ximian.com>
19358
19359         * class.c (mono_class_inflate_generic_method): Interface method
19360         don't have a header.
19361
19362         * reflection.c (mono_image_get_methodspec_token): Take an
19363         additional `MonoGenericInst *' argument instead of reading it from
19364         the header; this is necessary to support interfaces.
19365         (mono_image_create_token): Pass the `MonoGenericInst *' from the
19366         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
19367         (inflated_method_get_object): Take an additional `MonoGenericInst *'
19368         argument.
19369
19370         * reflection.h (MonoReflectionInflatedMethod): Added
19371         `MonoGenericInst *ginst'.
19372
19373 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
19376
19377 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
19378
19379         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
19380
19381 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19382
19383         * reflection.c 
19384         (reflection_methodbuilder_from_method_builder):
19385         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
19386         initialize a ReflectionMethodBuilder structure.
19387         (mono_image_get_methodbuilder_token):
19388         (mono_image_get_ctorbuilder_token): New functions to emit memberref
19389         tokens which point to types in another module inside the same assembly.
19390
19391         * reflection.c: Use the new helper functions.
19392         
19393         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
19394
19395         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
19396         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
19397
19398         * reflection.c (resolution_scope_from_image): Emit a moduleref if
19399         neccesary.
19400
19401         * reflection.c (mono_image_build_metadata): Emit metadata only for the
19402         current module. Emit the manifest only for the main module.
19403
19404         * reflection.c (mono_image_create_token): Add assertion when a 
19405         memberref needs to be created.
19406
19407         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
19408
19409         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
19410         larger buffer for the custom attribute blob. Fixes #50637.
19411         
19412 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19413
19414         * threadpool.c: notify listener on async processing handles after
19415         invoking the async callback. Thanks to Zoltan.
19416
19417 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19418
19419         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
19420         avoid code duplication.
19421
19422         * reflection.h (MonoDynamicImage): New type which is currently unused,
19423         but will be used through the ref.emit code in place of 
19424         MonoDynamicAssembly.
19425
19426         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19427         object layout.
19428
19429         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
19430         a MonoDynamicImage instead of just a MonoImage.
19431         
19432         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
19433         icalls to ModuleBuilder but keep their semantics, so they will work
19434         with moduleb->assemblyb. This will change later.
19435         
19436 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19439         object layout.
19440
19441         * reflection.c (mono_image_build_metadata): Avoid creation of a default
19442         main module, since it is now done by the managed code.
19443
19444 2003-11-03  Martin Baulig  <martin@ximian.com>
19445
19446         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
19447         `ginst->klass' here.
19448         (method_encode_methodspec): Don't use the `ginst->generic_method's
19449         klass if it's a generic instance, use `ginst->klass' in this case.
19450
19451 2003-11-03  Martin Baulig  <martin@ximian.com>
19452
19453         * reflection.c (mono_image_get_generic_method_param_info):
19454         Removed, use mono_image_get_generic_param_info() instead.
19455         (mono_image_get_type_info): Write the GenericParam table before
19456         the Method table.  This is neccessary because in the GenericParam
19457         table, type parameters of the class (ie. '!0' etc.) must come
19458         before the ones from its generic methods (ie. '!!0' etc).
19459
19460 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
19463
19464 2003-11-02  Martin Baulig  <martin@ximian.com>
19465
19466         * reflection.c (create_generic_typespec): Take a
19467         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
19468         the generic parameters from it.
19469
19470 2003-11-02  Martin Baulig  <martin@ximian.com>
19471
19472         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
19473         instead of a `MonoClassField *' since we just need the type.
19474         (create_generic_typespec): New static function.  Creates a
19475         TypeSpec token for a generic type declaration.
19476         (mono_image_get_generic_field_token): New static function.
19477         (mono_image_create_token): If we're a FieldBuilder in a generic
19478         type declaration, call mono_image_get_generic_field_token() to get
19479         the token.
19480
19481 2003-11-02  Martin Baulig  <martin@ximian.com>
19482
19483         * reflection.h
19484         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
19485         `MonoReflectionGenericInst *declaring_type' and
19486         `MonoReflectionGenericInst *reflected_type' fields.
19487
19488         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
19489         `MonoReflectionGenericInst *declaring_type' and a
19490         `MonoReflectionGenericInst *reflected_type' argument instead of a
19491         single `MonoReflectionGenericInst *type' one.  Set
19492         `res->declaring_type' and `res->reflected_type' from them.
19493         (mono_reflection_inflate_field): Likewise.      
19494
19495 2003-11-02  Martin Baulig  <martin@ximian.com>
19496
19497         * class.c (mono_class_setup_vtable): Don't store generic methods
19498         in the vtable.  
19499
19500 2003-11-02  Martin Baulig  <martin@ximian.com>
19501
19502         * reflection.h (MonoReflectionGenericInst): Added
19503         `MonoReflectionType *declaring_type'.
19504
19505         * reflection.c (mono_reflection_bind_generic_parameters): Use
19506         `if (tb->parent)' instead of `klass->parent'.
19507
19508 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
19511         with an empty ASSEMBLY table.
19512
19513         * reflection.c (mono_image_build_metadata): Avoid using the same loop
19514         variable in the inner and outer loops.
19515
19516 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * metadata.h (mono_metadata_make_token): Put parentheses around macro
19519         argument.
19520
19521         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
19522         
19523         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
19524         icalls. Instead, do everything in managed code. This is needed since
19525         it is hard to restore the original domain etc. in unmanaged code in the
19526         presence of undeniable exceptions.
19527
19528         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
19529         New icalls to push and pop appdomain refs.
19530
19531 2003-10-31  Martin Baulig  <martin@ximian.com>
19532
19533         * class.c (inflate_generic_type): Renamed to
19534         mono_class_inflate_generic_type() and made it public.
19535
19536         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
19537         New interncall.
19538
19539         * loader.c (mono_field_from_memberref): Also set the retklass for
19540         typespecs.
19541
19542         * fielder.c (mono_image_get_inflated_field_token): New static
19543         method; creates a metadata token for an inflated field.
19544         (mono_image_create_token, fixup_method): Added support for
19545         "MonoInflatedField".
19546         (fieldbuilder_to_mono_class_field): New static function.
19547         (mono_reflection_inflate_field): New public function.
19548
19549         * reflection.h
19550         (MonoReflectionGenericInst): Added `MonoArray *fields'.
19551         (MonoReflectionInflatedField): New typedef.     
19552
19553 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
19554
19555         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
19556         for Solaris and other platforms without s6_addr16
19557
19558 2003-10-30  Martin Baulig  <martin@ximian.com>
19559
19560         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
19561         argument instead of two.
19562         (mono_class_inflate_generic_signature): Likewise.
19563         (inflate_generic_header): Likewise.
19564         (mono_class_inflate_generic_method): Likewise.  In addition, if
19565         `ginst->klass' is set, it becomes the new `method->klass'.
19566
19567         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
19568         field.
19569
19570         * reflection.c (encode_generic_method_sig): Write a 0xa as the
19571         first byte. [FIXME]
19572         (method_encode_methodspec): If we have generic parameters, create
19573         a MethodSpec instead of a MethodRef.
19574         (fixup_method): Added support for "MonoInflatedMethod" and
19575         "MonoInflatedCtor".
19576         (mono_image_create_token): Added support for "MonoInflatedMethod"
19577         and "MonoInflatedCtor".
19578         (inflated_method_get_object): New static function; returns a
19579         managed "System.Reflection.MonoInflatedMethod" object.
19580         (mono_reflection_bind_generic_method_parameters): Return a
19581         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
19582         (mono_reflection_inflate_method_or_ctor): Likewise.
19583         (mono_image_get_generic_method_param_info): Initialize unused
19584         fields to zero.
19585         (mono_image_get_generic_param_info): Likewise.
19586
19587         * reflection.h (MonoReflectionInflatedMethod): New public
19588         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
19589         "S.R.MonoInflatedCtor" classes.
19590
19591         * loader.c (method_from_memberref): If we're a TypeSpec and it
19592         resolves to a generic instance, inflate the method.
19593
19594 2003-10-28  Dick Porter  <dick@ximian.com>
19595
19596         * object.c (mono_runtime_run_main): Convert command-line arguments
19597         into utf8, falling back to the user's locale encoding to do so.
19598
19599 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19600
19601         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
19602         at this time.
19603
19604         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
19605
19606         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
19607         up icalls at method definition time. Partially fixes #33569.
19608
19609 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
19612         marshalling of arrays. Fixes #50116.
19613
19614         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
19615
19616         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
19617         points to a vtable in the dying appdomain.
19618
19619         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
19620         listeners into unmanaged code inside the lock.
19621
19622         * object.c (mono_class_vtable): Turn off typed allocation in non-root
19623         domains and add some comments.
19624
19625 2003-10-25  Martin Baulig  <martin@ximian.com>
19626
19627         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
19628
19629         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
19630
19631         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
19632         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
19633         currently parsing.  Create the generic class and store it in
19634         `generic_inst->klass' before parsing the type arguments.  This is
19635         required to support "recursive" definitions; see mcs/tests/gen-23.cs
19636         for an example.
19637         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
19638         to support recursive typespec entries.
19639
19640         * class.c (mono_class_setup_parent): If our parent is a generic
19641         instance, we may get called before it has its name set.
19642         (mono_class_from_generic): Splitted into
19643         mono_class_create_from_generic() and mono_class_initialize_generic().
19644
19645 2003-10-25  Martin Baulig  <martin@ximian.com>
19646
19647         * icall.c (ves_icall_Type_BindGenericParameters): Return a
19648         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
19649         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
19650         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
19651
19652         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
19653         (create_typespec): Likewise.
19654         (mono_reflection_bind_generic_parameters): Return a
19655         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
19656         (mono_reflection_inflate_method_or_ctor): New public function.
19657
19658         * reflection.h (MonoReflectionGenericInst): New typedef.        
19659
19660 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19661
19662         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
19663         inside the domain lock. Fixes #49993.
19664         
19665         * object.c (mono_class_vtable): When typed allocation is used, 
19666         allocate vtables in the GC heap instead of in the mempool, since the
19667         vtables contain GC descriptors which are used by the collector even
19668         after the domain owning the mempool is unloaded.
19669
19670         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
19671
19672         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
19673         reflect what it does. Also invalidate mempools instead of freeing
19674         them if a define is set.
19675
19676         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
19677         of the appdomain.
19678         
19679         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
19680         hold the finalizable objects in this domain.
19681
19682         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
19683         appdomain.
19684
19685         * appdomain.c (mono_domain_set): New function to set the current
19686         appdomain, but only if it is not being unloaded.
19687
19688         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
19689         appdomain which is being unloaded.
19690         
19691         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
19692         unloading of the root appdomain.
19693
19694         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
19695         icall to execute a method in another appdomain. Intended as a 
19696         replacement for InternalSetDomain, which can confuse the code 
19697         generation in the JIT.
19698
19699         * appdomain.c (mono_domain_is_unloading): New function to determine
19700         whenever an appdomain is unloading.
19701
19702         * appdomain.c (mono_domain_unload): New function to correctly unload
19703         an appdomain.
19704
19705         * assembly.c (mono_assembly_load_references): Check that an assembly
19706         does not references itself.
19707
19708         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
19709         domain manually, it asks the finalizer thread to do it, then waits for
19710         the result. Also added a timeout.
19711
19712         * icall.c: Register the new icalls.
19713
19714         * threads.h threads.c: Export the mono_gc_stop_world and 
19715         mono_gc_start_world functions.
19716         
19717         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
19718         function to fill out the mempool with 0x2a.
19719
19720 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
19721
19722         * reflection.h (MonoReflectionMethodAux): New structure to store
19723         information which is rarely used, thus is not in the MonoMethod
19724         structure.
19725
19726         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
19727         store the aux info.
19728
19729         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
19730         and marshalling info into the aux structure.
19731
19732         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
19733         from the aux structure.
19734
19735         * loader.c (mono_method_get_param_names): Retrieve the param names from
19736         the aux structure.
19737         
19738 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * exception.h exception.c: Add AppDomainUnloadedException && fix 
19741         warning.
19742
19743 2003-10-21  Dick Porter  <dick@ximian.com>
19744
19745         * socket-io.c
19746         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
19747         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
19748
19749 2003-10-21  Martin Baulig  <martin@ximian.com>
19750
19751         * reflection.c (mono_reflection_bind_generic_parameters):
19752         `klass->parent' is NULL for interfaces.
19753
19754 2003-10-21  Martin Baulig  <martin@ximian.com>
19755
19756         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19757
19758 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
19759
19760         * exception.c (mono_exception_from_name_msg): New helper function for
19761         creating exceptions and initializing their message field.
19762
19763         * exception.c: Simplify functions using the new helper.
19764
19765         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
19766         New function.
19767
19768         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
19769         mono_raise_exception, since otherwise gcc doesn't generate the function
19770         epilog for raise_exception, confusing the stack unwinding in the JIT.
19771         Fixes #45043.
19772
19773         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
19774         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
19775         Fixes #49499.
19776
19777 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19778
19779         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
19780         utf8.
19781
19782 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
19783
19784         * icall.c: Removed GetUninitializedObject method because
19785           AllocateUninitializedClassInstance does the same.
19786
19787 2003-10-18  Martin Baulig  <martin@ximian.com>
19788
19789         * class.c (inflate_generic_signature): Renamed to
19790         mono_class_inflate_generic_signature() and made it public.
19791         (my_mono_class_from_generic_parameter): New static function; if we
19792         don't already have the generic parameter's MonoClass, create a
19793         very simple one which is just used internally in the runtime and
19794         not passed back to managed code.
19795
19796         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
19797
19798         * metadata.h (MonoMethodSignature): Moved the
19799         `MonoGenericParam *gen_params' to the MonoMethodHeader.
19800         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
19801
19802         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
19803         ves_icall_MonoMethod_GetGenericArguments(); this is now an
19804         interncall on the MonoMethod class, not on MethodInfo.
19805         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
19806         calling mono_reflection_bind_generic_method_parameters() directly.
19807
19808         * loader.c (mono_method_get_signature): If this is a MethodSpec;
19809         return the already computed `method->signature'.
19810         (method_from_methodspec): New static function to load a method
19811         from a MethodSpec entry.
19812         (mono_get_method_from_token): Call the new method_from_methodspec()
19813         for MethodSpec tokens.  
19814         (mono_get_method_from_token): If we're a generic method, load the
19815         type parameters.
19816
19817         * reflection.c (mono_image_get_memberref_token): Allow
19818         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
19819         table.
19820         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
19821         (mono_image_create_token): First check whether it's a generic
19822         method (so we'd need to create a MethodSpec), then do the other
19823         two alternatives.
19824         (mono_reflection_bind_generic_method_parameters): Return a
19825         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
19826         called directly from the interncall.
19827
19828 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * reflection.c (load_public_key): Move loading of the public key
19831         into managed code.
19832
19833         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
19834
19835         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
19836         fields.
19837
19838         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
19839         culture, hash_alg and public_key. Fixes #49555.
19840
19841 2003-10-17  Martin Baulig  <martin@ximian.com>
19842
19843         * class.h (MonoGenericInst): Moved this declaration here and added
19844         `MonoMethod *generic_method'.
19845
19846         * icall.c
19847         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
19848         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
19849
19850         * metadata.c (mono_metadata_type_equal): Two types of
19851         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
19852         index; ie. don't compare the address of the `MonoGenericParam'
19853         structure.
19854         (mono_metadata_load_generic_params): Removed the `MonoMethod
19855         *method' argument.
19856
19857         * metadata.h (MonoGenericInst): Moved declaration to class.h.
19858         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
19859
19860         * reflection.c (method_encode_signature): Encode the number of
19861         generic parameters.
19862         (encode_generic_method_sig): New static function.
19863         (method_encode_methodspec): New static function; creates an entry
19864         in the MethodSpec table for a generic method.
19865         (mono_image_get_methodspec_token): New static function.
19866         (mono_image_create_token): Call mono_image_get_methodspec_token()
19867         for generic methods.
19868         (mono_reflection_bind_generic_method_parameters): New public
19869         function.  Instantiates a generic method.
19870
19871 2003-10-16  Martin Baulig  <martin@ximian.com>
19872
19873         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
19874         *gen_params' here from MonoMethodHeader.
19875
19876         * metadata.c (mono_metadata_parse_method_signature): If we have
19877         generic parameters, initialize `method->gen_params' and then set
19878         the correct `type->data.generic_param' in all the parameters.
19879
19880 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19881
19882         * threads.c (mono_threads_get_default_stacksize): New function to 
19883         return the default stacksize.
19884
19885         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
19886         termination of the finalizer thread, since the previous method had
19887         race conditions. Fixes #49628.
19888
19889         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
19890         as for the other managed threads.
19891
19892 2003-10-16  Martin Baulig  <martin@ximian.com>
19893
19894         * class.c (inflate_generic_signature): Copy `generic_param_count'
19895         and `gen_params'.
19896
19897         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
19898         New interncall.
19899
19900         * metadata.c (mono_metadata_parse_method_signature): Actually set
19901         the `method->generic_param_count' here.
19902         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
19903
19904 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * object.h: Add a new field to TypedRef to simplify the implementation
19907         of the REFANY opcodes in the JIT.
19908
19909         * icall.c: Make use of the new field.
19910
19911         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
19912         dynamically.
19913
19914 2003-10-15  Martin Baulig  <martin@ximian.com>
19915
19916         * class.c (mono_class_from_gen_param): Renamed to
19917         mono_class_from_generic_parameter() and moved most of the
19918         functionality from mono_reflection_define_generic_parameter()
19919         here; ie. we create a "real" class here.
19920         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
19921         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
19922         previously been called.
19923
19924         * class.h (MonoGenericParam): Moved the declaration of this struct
19925         here from metadata.h and added `MonoMethod *method'.
19926
19927         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
19928         interncall.
19929
19930         * loader.c (mono_get_method_from_token): If we have any generic
19931         parameters, call mono_metadata_load_generic_params() to read them
19932         from the MONO_TABLE_GENERICPAR.
19933
19934         * metadata.c (mono_metadata_load_generic_params): Added
19935         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
19936
19937         * metadata.h (MonoMethodSignature): Replaced
19938         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
19939         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
19940
19941         * reflection.c (mono_reflection_define_generic_parameter): Moved
19942         most of the functionality into the new
19943         mono_class_from_generic_parameter(); set the `method' field if
19944         we're a method parameter.       
19945
19946 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
19947
19948         * marshal.c (emit_struct_conv): if native size is 0
19949         emit no code.
19950
19951 2003-10-14  Martin Baulig  <martin@ximian.com>
19952
19953         * icall.c: The generics API has changed in the spec since it was
19954         added to System.Type; these modifications make it match the spec
19955         again.
19956         (ves_icall_Type_GetGenericParameters): Renamed to
19957         `ves_icall_Type_GetGenericArguments'.
19958         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
19959         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
19960         `ves_icall_MonoType_get_HasGenericArguments'.
19961         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
19962         `ves_icall_MonoType_get_IsGenericParameter'.
19963         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
19964         this is no interncall anymore.
19965         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
19966         `ves_icall_TypeBuilder_get_IsGenericParameter'.
19967
19968 2003-10-14  Martin Baulig  <martin@ximian.com>
19969
19970         * reflection.c (mono_reflection_bind_generic_parameters): Also
19971         inflate generic methods if we're reading the class from IL.
19972
19973 2003-10-13  Martin Baulig  <martin@ximian.com>
19974
19975         * reflection.c (mono_reflection_define_generic_parameter): This
19976         method isn't called directly from the icall anymore; take a
19977         `MonoReflectionAssemblyBuilder *' so we can use this for type and
19978         method generic parameters.
19979         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
19980         (method_builder_encode_signature): Encode generic parameters.
19981         (mono_image_get_method_info): Write generic params to the
19982         MONO_TABLE_GENERICPARAM table.
19983
19984         * reflection.h (MonoReflectionMethodBuilder): Added
19985         `MonoArray *generic_params'.
19986
19987         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
19988
19989         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
19990         wrapper for mono_reflection_define_generic_parameter().
19991         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
19992
19993 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
19994
19995         * marshal.h: Add missing function to fix build.
19996
19997         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
19998         the SetLastError pinvoke attribute.
19999
20000         * marshal.c (mono_marshal_set_last_error): New helper function called
20001         by the generated code.
20002         
20003         * marshal.c (mono_mb_emit_branch): New helper function.
20004
20005         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
20006
20007         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20008         classes as parameters and return values of delegates. Fixes #29256. 
20009
20010 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
20011
20012         * locales.c: use gint32 in non HAVE_ICU case
20013
20014 2003-10-11  Martin Baulig  <martin@ximian.com>
20015
20016         * mono-debug.c (mono_debug_add_method): Added a workaround for
20017         bug #48591.
20018
20019 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
20022         delegates passed to native code must use the STDCALL calling 
20023         convention. Fixes #35987.
20024
20025 2003-10-10  Martin Baulig  <martin@ximian.com>
20026
20027         * class.c (inflate_generic_type): If we're inflating for a generic
20028         type instance (and not for a generic method), return
20029         MONO_TYPE_MVAR unchanged.
20030
20031 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20032
20033         * string-icalls.c: Join ignores null strings in the source array.
20034         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
20035         * threads.c: GetAvailableTheads is slightly more accurate.
20036
20037 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
20038
20039         * threads.h threads.c : add mono_threads_set_default_stacksize
20040         and pass default to CreateThread calls.
20041
20042 2003-10-09  Dick Porter  <dick@ximian.com>
20043
20044         * icall.c:
20045         * locales.h:
20046         * locales.c: Internal calls for constructing CultureInfo and
20047         related objects from libicu (if its available.)
20048
20049 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20050
20051         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
20052
20053 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20054
20055         * threadpool.c: added an argument to async_invoke_thread that is the
20056         item to process, pass the MonoAsyncResult to the thread start function
20057         when creating a new thread. This way we don't need to acquire any lock
20058         when we're creating a new thread. Readded a semaphore for faster
20059         response times (instead of that Sleep i added).
20060
20061 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
20062
20063         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
20064         get daylight change dates better on Windows, fix handling
20065         of platforms without tm_gmtoff.
20066
20067 2003-10-06  Martin Baulig  <martin@ximian.com>
20068
20069         * class.c (inflate_generic_method): Renamed to
20070         mono_class_inflate_generic_method() and made public.
20071         (mono_class_init): Don't inflate the generic methods here.
20072         (mono_class_from_generic): Added `gboolean inflate_methods'
20073         argument.  Inflate the methods here.
20074
20075         * loader.c (mono_method_get_param_names): Ignore instances of
20076         generic types for the moment.
20077
20078         * reflection.c (fixup_method): Added support for inflated methods.
20079         (mono_image_create_token): Use mono_image_get_methodref_token()
20080         for inflated methods.
20081         (mono_custom_attrs_from_param): Ignore instances of generic types
20082         for the moment.
20083         (mono_reflection_bind_generic_parameters): New public function.
20084         Moved all the functionality from
20085         ves_icall_Type_BindGenericParameters() here and added support for
20086         dynamic types.
20087         (mono_reflection_define_generic_parameter): Initialize
20088         `klass->methods' here.
20089
20090         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
20091         functionality into mono_reflection_define_generic_parameter().
20092         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
20093         TypeBuilder, return that TypeBuilder.
20094
20095 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20096
20097         * appdomain.c: removed mono_delegate_semaphore.
20098
20099         * threadpool.c:
20100         (mono_thread_pool_add): moved hash table creation inside and the thread 
20101         creation outside of the critical region.
20102         (mono_thread_pool_finish): removed obsolete code.
20103         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
20104         continue or exit the thread depending on the queue.
20105
20106 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
20107
20108         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
20109         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
20110         handle more bool marshalling options
20111
20112 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
20115         arrays of structs. Also add a more descriptive error message when
20116         a structure member is marshalled as LPArray.
20117
20118 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20119
20120         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20121         marshalling arrays of complex types. Fixes #29098. Also remove an
20122         usused and incomplete function.
20123
20124 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20125
20126         * gc.c: report heap_size - free_bytes as total memory allocated
20127         (bug#49362).
20128
20129 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
20132         fix timezone handling problems on Windows.
20133         
20134         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
20135         asserts when the year is outside the range handled by ms the functions.
20136
20137         * class.c (setup_interface_offsets): If the class is an interface,
20138         fill out its interface_offsets slot.
20139
20140 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20141
20142         * threadpool.c: mark threadpool threads as background.
20143
20144 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
20145
20146         * decimal.c - define DECINLINE to nothing if not using GCC
20147
20148 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20149
20150         * assembly.c: More refcount fixes.
20151
20152 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20153
20154         * string-icalls.c: if we're not trimming, return the same string.
20155         When not splitting, don't create a new string.
20156
20157 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20158
20159         * image.c:
20160         (mono_image_open): increment the ref_count inside the critical section.
20161
20162 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
20163
20164         * image.c (mono_image_open): Fix reference counting bug.
20165
20166 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
20167
20168         * marshal.c (mono_marshal_type_size) struct alignment changed for 
20169         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
20170         64bits. Avoid leak in mono_marshal_get_native_wrapper when
20171         mono_lookup_pinvoke_call throws.        
20172
20173 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * reflection.c (mono_reflection_parse_type): Fix #49114.
20176
20177         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
20178         temporary workaround for cygwin header problem.
20179
20180         * object.c (mono_object_isinst): Synchronize this with the code
20181         generated by the JIT for casts.
20182
20183 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * reflection.c (encode_type): Fix #38332.
20186
20187 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * marshal.c (mono_marshal_method_from_wrapper): New function to return
20190         the original method from the wrapper method.
20191
20192 2003-09-25  Martin Baulig  <martin@ximian.com>
20193
20194         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
20195         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
20196         (ves_icall_Type_get_IsGenericInstance): New interncall.
20197
20198 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
20199
20200         * object.c: fix cast warning in big endian code.
20201
20202 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
20203
20204         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
20205         
20206 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20207
20208         * assembly.c: don't call check_env from mono_assembly_load. It's
20209         already done once in mono_assemblies_init and may cause headaches when
20210         multiple threads are loading assemblies.
20211
20212 2003-09-19  Martin Baulig  <martin@ximian.com>
20213
20214         * reflection.c (mono_reflection_define_generic_parameter): Don't
20215         allocate `klass->methods', set `klass->flags' to
20216         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
20217
20218 2003-09-18  Martin Baulig  <martin@ximian.com>
20219
20220         * class.c (mono_class_init): Don't create `class->methods' if it's
20221         already initialized.
20222
20223         * metadata.c (mono_metadata_load_generic_params): Make this
20224         actually work.
20225
20226         * reflection.c (mono_reflection_define_generic_parameter): Set
20227         parent class and interfaces from the constraints.
20228
20229         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
20230         to keep this struct in sync with the declaration in TypeBuilder.cs.
20231
20232 2003-09-17  Martin Baulig  <martin@ximian.com>
20233
20234         * metadata.h (MonoType): Replaced the data's `int type_param'
20235         field with `MonoGenericParam *generic_param'.
20236         (MonoGenericParam): Added `MonoClass *klass'.
20237
20238         * class.c (mono_class_from_gen_param): Removed the
20239         `MonoImage *image' and `int type_num' arguments.
20240
20241         * metadata.c (mono_metadata_parse_generic_param): New static
20242         method; creates a MonoGenericParam which just contains the index.
20243         (do_mono_metadata_parse_type): Call
20244         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
20245         MONO_TYPE_MVAR.
20246
20247         * reflection.c (mono_image_typedef_or_ref): Generic type
20248         parameters may be in the same assembly, but never use a typedef
20249         for them.
20250         (mono_reflection_define_generic_parameter): We're now creating a
20251         "real" class for the type parameter; it's now safe to call
20252         mono_class_from_mono_type() on the class'es type, it'll do the
20253         right thing.
20254
20255 2003-09-16  Martin Baulig  <martin@ximian.com>
20256
20257         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
20258         `symfile->range_entry_size' and `symfile->class_entry_size' here;
20259         the `symfile' data structure must be fully initialized before it
20260         gets added to the table.
20261
20262 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20263
20264         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
20265
20266         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
20267         class init trampolines.
20268
20269 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
20272         to the built-in profiler to turn off time and allocation profiling
20273         respectively.
20274
20275 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
20278         g_direct_equal.
20279
20280         * debug-helpers.c (mono_method_full_name): Print the wrapper type
20281         in human readable form.
20282
20283 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20284
20285         * reflection.c icall.c: Fixed warnings.
20286
20287         * image.c (load_class_names): Use a temporary hash table to hold the
20288         namespaces in order to avoid doing many string comparisons.
20289
20290         * image.h: Fix typo.
20291
20292         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
20293         Pass NULL instead of g_direct_equal to the GHashTable constructor 
20294         since the NULL case is short-circuited inside g_hash_table_lookup, 
20295         leading to better performance.  
20296
20297         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
20298         obtain the first custom attribute for a given index. Depends on the
20299         CustomAttribute table being sorted by the parent field.
20300
20301         * reflection.c (mono_custom_attrs_from_index): Use the new function 
20302         for better performance.
20303
20304 2003-09-07  Martin Baulig  <martin@ximian.com>
20305
20306         * class.c (mono_class_init): If we're a generic instance, inflate
20307         all our methods instead of loading them from the image.
20308         (mono_class_from_generic): Set `class->methods = gklass->methods'.
20309
20310 2003-09-07  Martin Baulig  <martin@ximian.com>
20311
20312         * mono-debug-debugger.c: Added support for constructors.
20313
20314 2003-09-06  Martin Baulig  <martin@ximian.com>
20315
20316         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
20317         New interncall.
20318
20319         * reflection.c (mono_reflection_setup_generic_class): Call
20320         ensure_runtime_vtable() to create the vtable.
20321
20322 2003-09-05  Martin Baulig  <martin@ximian.com>
20323
20324         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
20325         MONO_TYPE_MVAR.
20326
20327 2003-09-04  Martin Baulig  <martin@ximian.com>
20328
20329         * reflection.c (mono_reflection_define_generic_parameter): Generic
20330         parameters start with zero.
20331
20332 2003-09-04  Martin Baulig  <martin@ximian.com>
20333
20334         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20335
20336         * reflection.h (MonoReflectionGenericParam): New typedef.
20337         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
20338         the generic parameters from the managed TypeBuilder.
20339
20340         * reflection.c (mono_reflection_define_generic_parameter): New function.
20341         (mono_reflection_create_runtime_class): Encode generic parameters.
20342         (mono_reflection_setup_generic_class): New function; this is
20343         called after adding adding all generic params to the TypeBuilder.
20344         (encode_type): Added MONO_TYPE_VAR.
20345
20346 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * class.h class.c (mono_class_needs_cctor_run): Moved this method
20349         here from the JIT.
20350
20351         * assembly.h assembly.c: Moved the AOT loading code into an assembly
20352         load hook.
20353
20354 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
20355
20356         * reflection.h reflection.c class.h class.c: Delete duplicate 
20357         definition of mono_type_get_name () from reflection.c and export the
20358         one in class.c.
20359
20360         * class.c: Class loading fixes from Bernie Solomon 
20361         (bernard@ugsolutions.com).
20362
20363         * reflection.c: Endianness fixes from Bernie Solomon 
20364         (bernard@ugsolutions.com).
20365         
20366 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * assembly.h assembly.c: Define a file format version for AOT
20369         libraries.
20370         
20371         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
20372
20373         * appdomain.h (MonoJitInfo): New field to determine whenever the
20374         code is domain neutral.
20375         
20376 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
20377
20378         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
20379
20380 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
20383         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
20384         Avoid caching the result since strings must be domain specific. Fixes
20385         #48050.
20386
20387 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * marshal.c (mono_marshal_init): Make this callable multiple times
20390         since it is hard to find a correct place to call it.
20391
20392         * object.c (mono_runtime_class_init): Execute static constructors in
20393         the correct appdomain.
20394
20395         * image.c (build_guid_table): Handle the case when multiple images have
20396         the same GUID.
20397
20398 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20399
20400         * icall.c: added a couple of icalls for System.Web.
20401
20402 2003-08-28  Martin Baulig  <martin@ximian.com>
20403
20404         * icall.c (ves_icall_Type_BindGenericParameters): Use
20405         `klass->generic_inst' instead of `&klass->byval_arg' in the
20406         mono_type_get_object() call.  The returned type must be
20407         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
20408
20409 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * NOTES: New file.
20412
20413         * object.c (mono_class_proxy_vtable): Make it thread safe.
20414
20415         * pedump.c: Fix warning.
20416
20417         * object.c appdomain.h: Get rid of metadata_section. 
20418         It is no longer needed and it was causing deadlocks with domain->lock.
20419
20420         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
20421
20422 2003-08-26  Martin Baulig  <martin@ximian.com>
20423
20424         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
20425
20426 2003-08-26  Martin Baulig  <martin@ximian.com>
20427
20428         * pedump.c (main): Call mono_metadata_init(),
20429         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
20430         and mono_loader_init().
20431
20432 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * loader.h: Add missing include to fix build.
20435
20436         * image.h: mono_image_load_references is no more.
20437
20438         * assembly.c: Reworked assembly loading to make it really thread safe.
20439         After these changes, the assembly returned by mono_assembly_open is
20440         fully initialized, i.e. all its references assemblies are loaded.
20441
20442         * assembly.c (mono_image_load_references): Renamed to 
20443         mono_assembly_load_references, and made private, since clients no
20444         longer need to call it.
20445
20446         * class.c: Removed calls to mono_assembly_load_references, since it was
20447         a source of deadlocks.
20448
20449         * loader.h loader.c class.h class.c: Protect data structures using a 
20450         new lock, the loader lock.
20451
20452         * class.c (mono_class_setup_vtable): Create temporary hash tables and
20453         GPtrArrays only when needed.
20454
20455         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
20456         into empty structures by mcs. Fixes pinvoke7.cs.
20457         
20458         * domain.c (mono_init): Call a new initialization function.
20459
20460         * appdomain.c (mono_runtime_init): Call the new initializer function
20461         of the marshal module.
20462
20463         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
20464         inserted into empty structures by mcs. Fixes pinvoke7.cs.
20465
20466         * marshal.h marshal.c: Added locks around the wrapper caches to make
20467         this module thread safe.
20468
20469         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
20470         this argument. Fixes pinvoke1.exe.
20471
20472 2003-08-25  Lluis Sanchez <lluis@ximian.com>
20473
20474         * object.h: Added call_type field to MonoMethodMessage and the corresponding
20475         enumeration of values. Removed fields to store remote call output values in
20476         MonoAsyncResult. Not needed any more.
20477         * object.c: Initialize call_type and async_result fields in mono_message_init.
20478         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
20479         dispatching the message.
20480         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
20481         async call to finish. To do it use a message with EndInvoke call type.
20482
20483 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * loader.h loader.c (mono_method_hash_marhal_info): New function which
20486         determines whenever a method has marshalling info.
20487
20488 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20489
20490         * assembly.c: fix the build on windows.
20491
20492 2003-08-22 Lluis Sanchez <lluis@ximian.com>
20493
20494         * object.cs: Fixed bug #47785.
20495
20496 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
20497
20498         * string-icalls.c (StringReplace): If their are no occurances of
20499         the old string found return a reference to the supplied
20500         string. This saves some memory and matches MS behavoir.
20501         
20502 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20503
20504         * socket-io.c: fixed compilation for systems that define AF_INET6
20505         and don't define SOL_IP/SOL_IPV6.
20506
20507 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
20508
20509         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
20510         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
20511
20512         * rawbuffer.c rawbuffer.h: Make this module thread safe.
20513
20514         * domain.c: Make this module thread safe.
20515
20516         * domain.c (mono_init): Call new initialization function.
20517
20518         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
20519         reference types too. Fixes #38812.
20520
20521         * image.c (mono_image_init): Fixed warnings.
20522
20523         * class.c (mono_class_from_typeref): Handle assembly load failure
20524         correctly.
20525
20526         * appdomain.c (add_assemblies_to_domain): Handle the case when
20527         the references of an assembly are not yet loaded.
20528
20529         * metadata.c image.c assembly.c: Moved initialization of global
20530         variables to a separate function called at startup since lazy 
20531         initialization of these variables is not thread safe.
20532         
20533         * image.c assembly.c: Made this module thread safe by adding locks in 
20534         the appropriate places.
20535
20536         * domain.c (mono_init): Call the new initialization functions of the
20537         three modules.
20538
20539 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
20540
20541         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
20542           make a direct call. It is proxy's work to make the call asynchronous.
20543           mono_delegate_end_invoke(): If the targe is a proxy, just collect
20544           the return values.
20545         * object.cs: mono_method_call_message_new(): read AsyncResult and
20546           state object from parameters list, if this info is requested.
20547         * object.h: Added fields to store remote call output values in
20548           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
20549
20550 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20551
20552         * object.h: add needed fields to MonoThread.
20553         * threads.c, threads.h: allow registering a function to cleanup data
20554         allocated per thread by the JIT.
20555
20556 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20557
20558         * loader.h: portability fix by Bernie Solomon
20559         * <bernard@ugsolutions.com>.
20560
20561 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
20562
20563         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
20564         return a MonoArray. This simplifies the code and also ensures that
20565         the cache allways contains an object reference as a value.
20566
20567         * icall.c (ves_icall_get_parameter_info): Simplified using the new
20568         function.
20569
20570 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20571
20572         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
20573         fixes a problem with byte ordering when getting the address family for
20574         a socket.
20575
20576 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
20577
20578         * .cvsignore: Added monosn.
20579
20580         * reflection.h reflection.c loader.c: Added support for parameter
20581         marshalling to dynamically created types. Fixes #47295.
20582
20583 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20584
20585         * rand.c: remove useless warnings.
20586
20587 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20588
20589         * class.c: implemented ldtoken for methods and fieldrefs.
20590
20591 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20592
20593         * threadpool.c: when mono_async_invoke was called, no one took care of
20594         monitoring the queue. So if the method invoked took some time and we
20595         got new async invoke requests after 500 ms (the thread created waited
20596         that long in WaitForSingleObject), the new async invoke was not called
20597         until the previous one finished.
20598
20599         This is fixed now. Thanks to Totte for helping with it.
20600
20601 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20602
20603         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
20604
20605 2003-08-11  Martin Baulig  <martin@ximian.com>
20606
20607         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
20608
20609 2003-08-06  Martin Baulig  <martin@ximian.com>
20610
20611         * mono-debug-debugger.c: Added support for static fields,
20612         properties and methods.
20613
20614 2003-08-06  Martin Baulig  <martin@ximian.com>
20615
20616         * mono-debug-debugger.c: Don't store the MonoString's vtable to
20617         make this work for applications with multiple application domains.
20618
20619 2003-08-04  Martin Baulig  <martin@ximian.com>
20620
20621         * mono-debug-debugger.c: Completely reworked the type support; the
20622         most important thing is that we're now just using one single
20623         `MonoType' instance per type.
20624
20625 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
20626
20627         * mono-endian.h, mono-endian.c, icall.c: Added icall
20628         ves_icall_System_Double_AssertEndianity to assert double word endianity
20629         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
20630
20631 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20632
20633         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
20634         support, icalls and fixes.
20635
20636 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
20637
20638         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
20639         classes that are a punctuation character in .NET is not the same a
20640         g_unichar_ispunct.
20641
20642 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20643
20644         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
20645
20646 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
20647
20648         * icall.c: Add new MemCopy internalcall.
20649         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
20650         Simplified code; It is not necessary to handle all the cases here,
20651         as the C# code takes care of it.  Only handle the case of the name
20652         resource embedded into the assembly.
20653
20654         Changed signature to return the data pointer and the size of the
20655         data. 
20656
20657 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
20658
20659         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
20660         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
20661
20662 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20663
20664         * socket-io.c: ignore EINTR error in select.
20665
20666 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
20667
20668         * class.h, class.c: removed unused subclasses field in MonoClass.
20669
20670 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20671
20672         * icall.c: improve fix of get_base_definition(). If the parent class
20673           doesn't have the mehod, look at the parent of the parent.
20674         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
20675           to check if a parameter is an in or out parameter
20676           (PARAM_ATTRIBUTE_IN is not set by default).
20677           mono_method_return_message_restore(): Use mono_class_value_size to
20678           get the size of a value type. mono_type_stack_size (parameterType)
20679           does not return the correct value if parameterType is byRef.
20680           mono_load_remote_field(), mono_load_remote_field_new(),
20681           mono_store_remote_field(), mono_store_remote_field_new():
20682           raise exception if the remote call returns an exception.
20683
20684 2003-07-28  Martin Baulig  <martin@ximian.com>
20685
20686         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
20687         method.  This is a wrapper around mono_runtime_invoke() which
20688         boxes the instance object if neccessary.
20689
20690 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20691
20692         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
20693         metadata.h, row-indexes.h, verify.c: first cut of generics support.
20694
20695 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20696
20697         * icall.c: disable mcs bug workaround.
20698
20699 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20700
20701         * object.c (mono_runtime_class_init): Take the metadata_section
20702         mutex before obtaining the domain mutex.
20703
20704         * appdomain.h: Added definition of metadata_section mutex here. 
20705
20706         * object.c: define metadata_mutex here.
20707
20708 2003-07-24  Ravi Pratap  <ravi@ximian.com>
20709
20710         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
20711         fixed.
20712
20713 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
20714
20715         * reflection.c: Fix bug #46669
20716
20717 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20718
20719         * exception.c:
20720         * exception.h:
20721         * icall.c:
20722         * object.h: fill in the type name for TypeLoadException.
20723
20724 2003-07-23  Ravi Pratap  <ravi@ximian.com>
20725
20726         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
20727         relationship between TypeBuilders while compiling corlib) and bug
20728         45993 (Array types returned from the runtime while compiling
20729         corlib were from the loaded corlib).
20730
20731 2003-07-22  Martin Baulig  <martin@ximian.com>
20732
20733         * mono-debug-debugger.c: Reworked the type support a bit more;
20734         distinguish between types and classes.
20735
20736 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
20737
20738         * icall.c: add IsArrayImpl icall.
20739
20740 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
20741
20742         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
20743         initializing real_size only once. Also fix bug #46602.
20744
20745 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
20746
20747         * object.c: Renamed mono_metadata_section to metadata_section.
20748
20749 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
20750
20751         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
20752           empty array if the type is an array. Fixed.
20753           ves_icall_MonoMethod_get_base_definition: if the base method
20754           is abstract, get the MethodInfo from the list of methods of
20755           the class.
20756         * reflection.c: ParameterInfo.PositionImpl should be zero-based
20757           and it was 1-based. Fixed in mono_param_get_objects.
20758
20759 2003-07-20  Martin Baulig  <martin@ximian.com>
20760
20761         * mono-debug.h: Set version number to 31.
20762         (mono_debug_init): Added `MonoDomain *' argument.
20763
20764         * mono-debug-debugger.c: Reworked the type support; explicitly
20765         tell the debugger about builtin types; pass the `klass' address to
20766         the debugger.
20767
20768 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
20769
20770         * image.c: Allow new metadata tables to be loaded without a
20771         warning. Also update the warning message to give the new constant value.
20772                 
20773 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20774
20775         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
20776         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
20777         array type representation changes.
20778
20779 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20780
20781         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
20782         on Environment.Exit () call.
20783
20784 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20785
20786         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
20787         requires a matching corlib.
20788
20789 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20790
20791         * Changelog: My editor decided to add a CR to each line. Sorry about that.
20792           Committed again without the CRs.
20793         
20794 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20795
20796         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
20797           getting it from the "this" socket instance. Did not work
20798           if the socket is a subclass of Socket.
20799           Also fixed bug #35371.
20800
20801 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20802
20803         * metadata.c: fixed size for TypedByRef.
20804         * loader.c: when searching for a method, consider the vararg amrker.
20805         * unicode.c, decimal.c: constify some arrays.
20806
20807 2003-07-15  Dick Porter  <dick@ximian.com>
20808
20809         * socket-io.c: Fixed compilation for gcc < 3.2.
20810
20811         Fixed compilation for machines that don't have AF_INET6 (thanks to
20812         Bernie Solomon <bernard@ugsolutions.com> for that part.)
20813
20814         Fixed compile warnings.
20815         
20816         Fixed formatting and line endings.
20817
20818 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
20819
20820         * socket-io.h:
20821         * socket-io.c: Added IPv6 support.
20822
20823 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
20824
20825         * class.c (mono_class_is_assignable_from): New function to implement
20826         the is_assignable_from logic. Used by mono_object_isinst, 
20827         Type::IsAssignableFrom () and the interpreter.
20828
20829         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
20830         Object, even interfaces.
20831         
20832         * object.c (mono_object_isinst): Implement in terms of 
20833         is_assignable_from.
20834
20835         * icall.c (ves_icall_type_is_assignable_from): New icall.
20836
20837 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * domain.c (foreach_domain): fix compiler warning.
20840
20841 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
20842
20843         * image.c (load_metadata_ptrs): use g_strndup because strndup is
20844         not available on all plattforms
20845
20846 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
20847
20848         * image.h image.c: Store the metadata version string in MonoImage.
20849         * icall.c: New icall to retrieve the image version.
20850         * reflection.c (create_dynamic_image): Fill in the image version field
20851         * reflection.c (build_compressed_metadata): Use the image version
20852         from the image structure.
20853
20854 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20855
20856         * appdomain.c: modified comment.
20857         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
20858         That will be its last iteration when mono_gc_cleanup is called from
20859         mono_runtime_cleanup and before the domain is unloaded.
20860
20861         Fixes bug #45962.
20862
20863 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
20864
20865         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
20866         attributes.
20867
20868 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20869
20870         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
20871         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
20872         Bernie Solomon <bernard@ugsolutions.com>.
20873
20874 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20875
20876         * object.c, object.h: provide mono_object_new_fast() for faster
20877         allocation in some special cases.
20878
20879 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20880
20881         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
20882         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
20883
20884 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20885
20886         * threadpool.c: fix leaks.
20887
20888 2003-07-01  Dick Porter  <dick@ximian.com>
20889
20890         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
20891         using MonoGHashTables.  Fixes threadpool bug posted to list.
20892
20893 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20894
20895         * image.h, image.c: added support to load an assembly from a byte array.
20896         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
20897         assembly bundle support.
20898
20899 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
20900
20901         * threadpool.c (mono_thread_pool_add): keep a reference to the
20902         AsyncResult to prevent GC
20903
20904 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20905
20906         * class.c: leak fix.
20907
20908 2003-06-25  Dick Porter  <dick@ximian.com>
20909
20910         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
20911         for the async object, the WaitHandle object will close the handle.
20912         Fixes bug 45321.
20913
20914 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20915
20916         * class.c: in mono_array_class_get (), lookup from the hash with the
20917         same type we insert: this works around a bug in
20918         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
20919         lluis. The real fix will have to wait for after the release.
20920
20921 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20922
20923         * icall.c: fix memory leak when getting type members.
20924
20925 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
20926
20927         * reflection.c: added more pubtoken special cases.
20928
20929 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20930
20931         * class.c: handle field offset correctly when class size
20932         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
20933
20934 2003-06-20  Martin Baulig  <martin@ximian.com>
20935
20936         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
20937         *image' field.
20938
20939 2003-06-20  Martin Baulig  <martin@ximian.com>
20940
20941         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
20942
20943 2003-06-20  Martin Baulig  <martin@ximian.com>
20944
20945         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
20946         just distinguish between variables in registers and variables at
20947         an offset relative to a register.
20948
20949 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20950
20951         * icall.c: #ifdef out latest changes until mcs is fixed.
20952
20953 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20954
20955         * icall.c: return members in metadata order.
20956
20957 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20958
20959         * icall.c: avoid infinite loop in GetTimeZoneData.
20960
20961 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20962
20963         * icall.c: added Marshal.Prelink/All icalls.
20964
20965 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
20966
20967         * object.c, object.h: fix warnings and do some overflow checking
20968         when creating arrays.
20969
20970 2003-06-17  Dick Porter  <dick@ximian.com>
20971
20972         * file-io.h:
20973         * file-io.c: File attributes need to be tweaked slightly when
20974         passed from the managed to the w32 world.
20975
20976 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20977         * profiler.h profiler-private.h profiler.c: Rework last patch
20978         based on suggestion by Paolo.
20979         
20980 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
20983         instruction level coverage data collection.
20984         * profiler.h profiler.c (: Added new callback function which can be
20985         used by the profiler to limit which functions should have coverage
20986         instrumentation.
20987         * profiler.c (mono_profiler_load): Call g_module_build_path to
20988         generate the file name of the profiler library.
20989
20990 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20991
20992         * profiler.c, profiler.h, profiler-private.h: added basic block 
20993         coverage profiling API.
20994
20995 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * reflection.c (mono_reflection_create_runtime_class): Add support
20998         for events in dynamically generated code.
20999
21000         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
21001         not allocated.
21002
21003 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21004
21005         * icall.c: when getting timezone info, return reasonable values if we
21006         can't get the actual data.
21007
21008 2003-06-14  Dick Porter  <dick@ximian.com>
21009
21010         * threads.c (start_wrapper): Remove the reference to the thread
21011         object in the TLS data, so the thread object can be finalized.
21012         This won't be reached if the thread threw an uncaught exception,
21013         so those thread handles will stay referenced :-( (This is due to
21014         missing support for scanning thread-specific data in the Boehm GC
21015         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
21016
21017 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
21018
21019         * reflection.c: ensure streams and tables are first allocated with
21020         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
21021
21022 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21023
21024         * icall.c: fixed GetElementType for byrefs (bug# 44792).
21025
21026 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
21027
21028         * reflection.c (mono_reflection_create_runtime_class): Add support for
21029         properties to dynamically created classes.
21030         * reflection.c: Fix a few places where non-MonoObjects were inserted
21031         into the tokens hashtable.
21032
21033 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21034
21035         * object.c: some support to handle out of memory exceptions.
21036
21037 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
21038
21039         * marshal.c (mono_marshal_get_native_wrapper): support reference
21040         return types
21041
21042 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21043
21044         * object.h, object.c: more portability stuff from Bernie Solomon.
21045         Unexport mono_object_allocate(). Added mono_object_unbox ().
21046         Set exitcode when an unhandled exception is thrown.
21047
21048 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
21049
21050         * marshal.c (mono_marshal_get_native_wrapper): use custom
21051         marshaler for return types.
21052
21053 2003-06-10  Dick Porter  <dick@ximian.com>
21054
21055         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
21056         ip_mreq is available
21057
21058 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21059
21060         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
21061         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
21062         by Bernie Solomon <bernard@ugsolutions.com>.
21063
21064 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
21065
21066         * gc.c (mono_gc_init): Avoid error message on shutdown when
21067         GC_DONT_GC=1 is used.
21068
21069         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
21070         New icall to return the GUID of a module.
21071
21072 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21073
21074         * class.c: ensure instance size always includes the parent's size
21075         even whem class size is set explicitly (fixes bug#44294).
21076
21077 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21078
21079         * profiler.h, profiler.c: made the simple profiler thread-safe,
21080         get more accurate timing info. Allow the loading of an
21081         externally-developed profiler module.
21082
21083 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
21084
21085         * marshal.c (mono_marshal_get_native_wrapper): improved
21086         class/byref arguments.
21087         (mono_marshal_get_native_wrapper): better string marshaling support.
21088
21089 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21090
21091         * class.c: ensure .pack and .size are handled correctly and
21092         simplified layout of static fields.
21093
21094 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21095
21096         * appdomain.c
21097         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
21098
21099         * loader.c (mono_lookup_pinvoke_call): look for modules in the
21100         current directory (fix bug 44008)
21101
21102 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
21103
21104         * marshal.c (mono_marshal_get_native_wrapper): started support for
21105         custom marshalers.
21106         (mono_delegate_to_ftnptr): consider marshalling specifications
21107
21108 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21109
21110         * reflection.c, reflection.h: emit custom marshal info.
21111
21112 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21113
21114         * object.c: free the GError.
21115         * icall.c: added CloseEvent_internal.
21116         * threads.[ch]:
21117         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
21118         call.
21119
21120 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
21121
21122         * loader.c (mono_method_get_signature): Add support for dynamic
21123         assemblies.
21124
21125 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21126
21127         * reflection.c: fixed bug #43905.
21128
21129 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21130
21131         * class.c, domain.c, icall.c, metadata.h, object.h: support for
21132         handling TypedReference and ArgIterator.
21133         * loader.c, loader.h: added function to get signature at call site.
21134
21135 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21136
21137         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
21138         data readonly. Buglets and warning fixes. Some MethodSpec support.
21139
21140 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21141
21142         * class.h, class.c, object.c: remove relative numbering support.
21143
21144 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
21145
21146         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
21147         free the string, until we get a chance to fix Gtk#
21148
21149 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21150
21151         * marshal.c: revert last patch.
21152
21153 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21154
21155         * icall.c: updates for new mono_class_vtable() not calling
21156         the type constructor anymore.
21157
21158 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21159
21160         * object.h, object.c: separate vtable creation from type
21161         initialization. Make running the .cctor thread safe.
21162
21163 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21164
21165         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
21166
21167 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21168
21169         * loader.c (mono_get_method): consider calling convention
21170
21171 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
21172
21173         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
21174         to return the invisible global type for a module.
21175
21176         * reflection.c (mono_image_build_metadata): Emit global fields too.
21177
21178 2003-05-20  Peter Williams  <peterw@ximian.com>
21179
21180         * loader.c (mono_lookup_internal_call): Add a few newlines.
21181
21182 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
21183
21184         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
21185         literal strings.
21186
21187         * appdomain.c (set_domain_search_path): Recalculate search path when
21188         AppDomainSetup.PrivateBinPath changes.
21189
21190         * object.c (mono_class_compute_gc_descriptor): It turns out some
21191         parts of the class libs (like System.Thread) holds pointers to
21192         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
21193         to treat native int a pointer type here.
21194         
21195 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
21196
21197         * appdomain.h, domain.c: add hashtable for jump target resolution.
21198
21199 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
21200
21201         * reflection.h reflection.c icall.c: Added new icalls 
21202         GetManifestResourceInfoInternal, GetModulesInternal and support
21203         infrastructure.
21204
21205 2003-05-16  Dick Porter  <dick@ximian.com>
21206
21207         * icall.c:
21208         * file-io.h:
21209         * file-io.c: Implement System.IO.MonoIO::GetTempPath
21210
21211 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
21212
21213         * object.c: mono_store_remote_field: little fix to previous patch.
21214
21215 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21216
21217         * class.c: add constructors to array classes.
21218         * icall.c: special case array construction for InternalInvoke (),
21219
21220 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
21221
21222         * class.h class.c reflection.c object.c: Added support for field
21223         defaults in dynamically generated classes.
21224
21225 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21226
21227         * reflection.c: properly encode charset for ddlimport.
21228
21229 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21230
21231         * threads.c: allow compiling without GC.
21232
21233 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21234
21235         * appdomain.h, object.c, object.h, threads.c, threads.h: added
21236         handling of thread static data.
21237
21238 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21239
21240         * reflection.h, reflection.c: added mono_custom_attrs_free ().
21241
21242 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21243
21244         * class.c (mono_array_class_get): always set the serializable flags
21245         (mono_array_class_get): always set the SEALED attribute for array types
21246
21247 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
21248
21249         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
21250         attributes (fix for bug 42021).
21251
21252 2003-05-12  Dick Porter  <dick@ximian.com>
21253
21254         * gc.c: Don't run finalizers when the finalizer thread is
21255         finishing up, because the default domain has already been
21256         destroyed.
21257
21258 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
21259
21260         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
21261         value is null, we should throw an exception.   This is slightly
21262         different than the other conventions used for the constructor.
21263
21264 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21265
21266         * socket-io.c: fixed windows build.
21267
21268 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21269
21270         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
21271
21272 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * object.c (mono_string_new_wrapper): Compatibility fix for MS
21275         compilers.
21276
21277 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * class.c (mono_class_layout_fields): Add experimental GC aware
21280         auto layout facility. Requires class library changes to work correctly.
21281
21282         (mono_class_setup_vtable): Avoid overriding explicit interface
21283         method implementations. Fixes iface3.exe test.
21284
21285         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
21286         object reference.
21287         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
21288         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
21289
21290         * metadata.h: Add new type classification macro which determines
21291         whenever the type holds an object reference.
21292
21293 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21294
21295         * marshal.c (mono_marshal_get_native_wrapper): cleanups
21296
21297 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
21298
21299         * gc.c (finalizer_thread): Work around a GC bug.
21300
21301 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
21302
21303         * marshal.c (emit_struct_conv): allow unions
21304
21305         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
21306
21307 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
21308
21309         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
21310
21311 2003-05-06  Martin Baulig  <martin@ximian.com>
21312
21313         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
21314
21315 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21316
21317         * socket-io.c:
21318         (Select_internal): allow NULLs, don't create arrays if not needed.
21319         Coupled with Socket.cs changes.
21320
21321         * threadpool.c:
21322         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
21323         register a finalizer for it that will close the semaphore handle. This
21324         fixes the leak and make Lupus' test run with > 4080 loops.
21325
21326 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21327
21328         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
21329         Jerome Laban (bug #42287)
21330
21331 2003-05-02  Martin Baulig  <martin@ximian.com>
21332
21333         * debug-mono-symfile.h
21334         (MonoSymbolFile): Moved declaration into mono-debug.h.
21335         (MonoDebugMethodJitInfo): Likewise.
21336         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
21337         argument.
21338         (_mono_debug_address_from_il_offset): Take a
21339         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
21340
21341         * mono-debug.h
21342         (MonoDebugDomainData): New struct.
21343         (mono_debug_get_domain_data): New function.
21344         (mono_debug_add_method): Take an additional `MonoDomain *'
21345         argument.
21346         (mono_debug_source_location_from_address): Likewise.
21347         (mono_debug_il_offset_from_address): Likewise.
21348         (mono_debug_address_from_il_offset): Likewise.
21349
21350 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
21351
21352         * reflection.c: one more check for null type in custom attrs.
21353
21354 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21355
21356         * reflection.c: avoid warning (comparison is always false due to limited
21357         range of data type).
21358
21359 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21360
21361         * icall.c: throw an exception in Type.GetField if the argument 'name'
21362         is NULL.
21363
21364 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
21365
21366         * reflection.c: fixed handling of enums in named arguments to custom
21367         attributes (bug #42123).
21368
21369 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21370
21371         * reflection.c: use the right array element type and handle
21372         a null for a Type argument, too.
21373
21374 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
21375
21376         * reflection.c: handle arrays as arguments to custom attributes.
21377
21378 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21379
21380         * reflection.c: handle a string value in a custom attr
21381         ctor that takes an object.
21382
21383 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21384
21385         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
21386         (fix bug #42063)
21387
21388 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
21391
21392 2003-04-27  Martin Baulig  <martin@ximian.com>
21393
21394         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
21395         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
21396         MONO_DEBUGGER_EVENT_BREAKPOINT.
21397         (mono_breakpoint_trampoline_code): Removed.
21398         (mono_debugger_event_handler): The last argument is now a
21399         `guint32'.
21400         (mono_debugger_insert_breakpoint_full): Removed the
21401         `use_trampoline' argument.
21402         (mono_debugger_method_has_breakpoint): Likewise.
21403         (mono_debugger_trampoline_breakpoint_callback): Renamed to
21404         mono_debugger_breakpoint_callback(); take the method and
21405         breakpoint number as arguments.
21406
21407 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21408
21409         * metadata.c: fix off by one when loading parameters attributes.
21410
21411 2003-04-24  Martin Baulig  <martin@ximian.com>
21412
21413         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
21414
21415 2003-04-24  Martin Baulig  <martin@ximian.com>
21416
21417         * mono-debug-debugger.c: Moved all code which interacts with the
21418         Mono Debugger here.
21419
21420         * debug-mono-symfile.c: This code now just deals with the symbol
21421         file itself, the debugger code is now in mono-debug-debugger.c.
21422
21423 2003-04-23  Martin Baulig  <martin@ximian.com>
21424
21425         * mono-debug.c (mono_debug_source_location_from_il_offset):
21426         New method; like mono_debug_source_location_from_address(), but
21427         takes an IL offset instead of a machine address.
21428
21429 2003-04-23  Martin Baulig  <martin@ximian.com>
21430
21431         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
21432         `line' field; this is now computed by the debugger.
21433
21434 2003-04-23  Martin Baulig  <martin@ximian.com>
21435
21436         * mono-debug.[ch]: New files.  This is the new debugging interface.
21437
21438         * mono-debug-debugger.[ch]: New files.  Moved all code which
21439         interacts with the Mono Debugger here.
21440
21441 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21442
21443         * domain.c (mono_init): initialize mono_defaults.monitor_class
21444
21445 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
21446
21447         * reflection.c (method_encode_code): Add a spicy exception to help
21448         future compiler authors.
21449
21450 2003-04-21  Martin Baulig  <martin@ximian.com>
21451
21452         * icall.c
21453         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21454         Make this work with relative pathnames; g_filename_to_uri() needs
21455         an absolute filename.
21456
21457 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
21458
21459         * icall.c: Track name changes in Object and ValueType.
21460
21461 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
21462
21463         * metadata.c (mono_type_stack_size): size should be a multiple of
21464         sizeof (gpointer)
21465
21466 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21467
21468         * gc.c:
21469         (internal_domain_finalize): moved into mono_domain_finalize. No need
21470         to create another thread because the finalizers will be run in the
21471         finalizer thread.
21472         
21473         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
21474         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
21475         to be run (MS does this too).
21476
21477 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21478
21479         * object.c (mono_class_compute_gc_descriptor): Update comment.
21480
21481         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
21482
21483         * image.h: Add synchronized wrapper cache.
21484
21485         * image.c (do_mono_image_open): Initialize cache.
21486
21487         * reflection.c (create_dynamic_mono_image): Initialize cache.
21488
21489 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21490
21491         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
21492         ves_icall_System_Buffer_ByteLengthInternal.
21493
21494 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21495
21496         * reflection.c: setup klass->nested_in earlier. Allow
21497         a dash in the assembly name.
21498
21499 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
21500
21501         * metadata.c (mono_type_to_unmanaged): dont access
21502         type->data.klass for MONO_TYPE_OBJECT
21503         (mono_type_to_unmanaged): consider System.Delegate class
21504
21505 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
21506
21507         * class.c: just setup supertypes in the proper place instead of
21508         initializing the full element class for arrays.
21509
21510 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21511
21512         * class.c: ensure the element class of arrays is initialized.
21513         Setup the supertype info for array classes, too.
21514
21515 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
21516
21517         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
21518
21519 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21520
21521         * Makefile.am: re-added -m option when running cygpath. This way,
21522         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
21523         separator.
21524         * mono-config.c: same codepath for locating mono config file for WIN32
21525         and the rest.
21526         * assembly.c: if mono_assembly_setrootdir is called, don't override
21527         the value set.
21528
21529 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21530
21531         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
21532         MONO_ASSEMBLIES variable.
21533
21534 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21535
21536         * icall.c: added Assembly::GetNamespaces() icall.
21537
21538 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21539
21540         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
21541
21542 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
21543
21544         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
21545         * object.c: fixed bug in the construction of vtable for proxies
21546
21547 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * object.c (mono_array_new): Mark mono_array_new as an icall.
21550
21551 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21552
21553         * class.c: fixed test for public method when overriding interfaces.
21554         Closes bug #40970.
21555
21556 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21557
21558         * appdomain.h, domain.c: added mono_domain_foreach() to
21559         be able to access the currently loaded appdomains.
21560         * object.c: make string interning work across sppdomains.
21561         Mark some functions for use as icalls.
21562
21563 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
21566
21567         * reflection.h reflection.c: Allocate long living data using 
21568         GC_MALLOC_ATOMIC so the collector does not need to scan it.
21569
21570         * reflection.c: Double the allocation size in streams instead of
21571         increasing it, to prevent unneccesary copying on large assemblies.
21572         
21573         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
21574         creation if the assembly does not have the Run flag set.
21575
21576 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21577
21578         * class.h: avoid the C++ keywords in header files (Jerome Laban
21579         spotted and fixed this).
21580
21581 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21582
21583         * object.c:
21584         (mono_unhandled_exception): fill in the arguments for the
21585         UnhandledException event. Only trigger that event for the default
21586         domain (as MS does).
21587
21588 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
21589
21590         * object.c: Improve typed allocation stuff based on suggestions from
21591         Paolo. Also turn it on if the GC library supports it.
21592
21593 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21594
21595         * object.c object.h class.h: Added experimental typed allocation
21596         facility using the interfaces in gc_gcj.h.
21597
21598         * os/gc_wrapper.h: Added new include files.
21599         
21600 2003-04-03  Martin Baulig  <martin@ximian.com>
21601
21602         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
21603         which is not yet enabled by default.
21604
21605         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
21606         functions.
21607         (mono_gc_lock, mono_gc_unlock): New static functions.
21608
21609         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
21610         functions; stop/start the world for the garbage collector.  This
21611         is using the windows API; we need to complete the SuspendThread()/
21612         ResumeThread() implementation in the io-layer to make this work on Unix.
21613         (mono_gc_push_all_stacks): New public function; tells the garbage
21614         collector about the stack pointers from all managed threads.
21615
21616 2003-04-03  Martin Baulig  <martin@ximian.com>
21617
21618         * object.h (MonoThread): Added `gpointer stack_ptr'.
21619
21620         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
21621
21622 2003-04-03  Martin Baulig  <martin@ximian.com>
21623
21624         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
21625
21626 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21627
21628         * reflection.c (typebuilder_setup_fields): Initialize field.first and
21629         field.last.
21630
21631 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
21632
21633         * loader.c (mono_lookup_internal_call): Report the corlib that is
21634         out of sync.
21635
21636 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
21637
21638         * icall.c (ves_icall_type_GetTypeCode): fixed check for
21639         System.DBNull (it's class not valuetype).
21640
21641 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21642
21643         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
21644         if the array method was already assigned a token (fixes bug#40646).
21645
21646 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
21647
21648         * reflection.c (mono_reflection_get_type): Attempt type resolve even
21649         if no assembly is given.
21650
21651 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
21652
21653         * metadata.h: Added the new tables.
21654
21655         * row-indexes.h: Added definitions for new tables.
21656
21657         * metadata.c: Add schemas for new tables, and add support for
21658         computing the sizes of them.
21659
21660         * class.c: Update for handling the new type cases.
21661
21662 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
21663
21664         * metadata.h (MONO_TYPE_IS_VOID): new macro
21665
21666 2003-03-31  Martin Baulig  <martin@ximian.com>
21667
21668         * threads.h (MonoThreadCallbacks): Added `thread_created'.
21669
21670         * threads.c (mono_thread_new_init): Call `thread_created' in the
21671         mono_thread_callbacks.
21672
21673 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
21674
21675         * loader.h: added marshalbyrefobject_class to mono_defaults
21676         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
21677         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
21678           generation of output parameters.
21679           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
21680         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
21681           contextbound and the target object belongs to the context of the caller.
21682         * object.h: added context and unwrapped_server variables in MonoRealProxy.
21683         * object.c: Implemented support for interfaces and abstract classes
21684           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
21685           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
21686
21687 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * class.h class.c (mono_class_is_subclass_of): New function.
21690         
21691         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
21692         routines for most common case (calls from ArrayList::ToArray).
21693
21694         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
21695         routine so programs which call Environment::Exit() can be profiled.
21696
21697         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
21698         Added MONO_ARCH_SAVE_REGS.
21699
21700         * icall.c (ves_icall_type_is_subtype_of): Use new function.
21701
21702 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
21703
21704         * blob.h: Add a couple of new MonoType types definitions.
21705
21706         * tabledefs.h: Add a couple of new call convs.
21707
21708 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
21709
21710         * reflection.h (MonoReflectionDynamicAssembly): track changes in
21711         the layout of the class.
21712
21713         * reflection.c (alloc_table): double the size on overflow to avoid
21714         unnecessary copying.
21715
21716         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
21717         avoid filling out metadata tables and blobs. Also set mb->ilgen to
21718         null so it can be garbage collected.
21719         
21720 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
21721
21722         * reflection.c (mono_reflection_get_type): Return the resolved type
21723         only if it is in the assembly we searched.
21724
21725         * reflection.c (ensure_runtime_vtable): Initialize method slots.
21726
21727         * class.c (mono_class_setup_vtable): Set the slot of the overriding
21728         method.
21729
21730 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21731
21732         * appdomain.c:
21733         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
21734         the right one is 'file:///blah', but MS allows it.
21735         * assembly.c:
21736         (mono_assembly_open): allow 'file://blah'
21737
21738         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
21739
21740 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
21741
21742         * socket-io.c: fixes bug #40310.
21743
21744 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * reflection.c (mono_reflection_parse_type): handle deeply nested
21747         types correctly.
21748
21749         * reflection.c (mono_image_create_token): Use unique token values
21750         since they will be put into a hash table.
21751
21752         * class.c (mono_class_setup_vtable): If a method occurs in more than
21753         one place in the vtable, and it gets overriden, then change the
21754         other occurances too.
21755
21756         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
21757         object as return type.
21758
21759 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21760
21761         * icall.c: Deleted "ToString" implementation for double and float
21762         because they are full implemented in managed code.
21763
21764 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21765
21766         * reflection.c, reflection.h: implemented and exported functions
21767         to retrieve info about custom attributes.
21768
21769 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21770
21771         * appdomain.c: moved Uri handling to assembly.c
21772         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
21773         work when using a file Uri in *nix and windows.
21774
21775         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
21776         GetReferencedAssemblies.
21777
21778 2003-03-18  Dick Porter  <dick@ximian.com>
21779
21780         * icall.c: Rename a couple of internal calls
21781
21782         * threads.c: Set the thread state to Stopped when a thread exits.
21783         Fixes bug 39377.
21784
21785 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
21788         New icall.
21789
21790         * object.c (mono_class_vtable): fix warning.
21791
21792 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
21793
21794         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
21795
21796         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
21797         memory.
21798         (method_encode_clauses): Create exception info structures in the right
21799         order.
21800         (mono_reflection_setup_internal_class): Initialize supertypes field.
21801
21802         * class.c object.c: Handle interfaces which implement other interfaces 
21803         correctly.
21804
21805         * class.h class.c: Move the supertypes array initialization code into 
21806         a separate function so it can be used for dynamic types too. Also call
21807         it earlier, in mono_class_init(), since it can be used before the
21808         type is initialized.
21809
21810 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21811
21812         * Makefile.am:
21813         * assembly.c:
21814         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
21815
21816         * appdomain.c:
21817         * appdomain.h:
21818         * marshal.c:
21819         * object.c: remove warnings.
21820
21821 2003-03-13  Martin Baulig  <martin@ximian.com>
21822
21823         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
21824         (MonoDebugLexicalBlockEntry): New types.
21825
21826         * debug-mono-symfile.c
21827         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
21828
21829 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21830
21831         * process.c: ret can be any non-zero value accroding to MS doc.
21832
21833 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
21834
21835         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
21836         fixing a warning for a miss-used prototype, would have cause
21837         random memory corruption.
21838
21839 2003-03-07  Martin Baulig  <martin@ximian.com>
21840
21841         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
21842         getting really annoying ....
21843
21844 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * reflection.c (fixup_method): added support for array methods.
21847
21848 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21849
21850         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
21851         (pointed out by Michael Adams).
21852
21853 2003-03-04  Dick Porter  <dick@ximian.com>
21854
21855         * icall.c: Temporarily reverted the Double and Single ToString()
21856         change, because it broke nunit.
21857
21858 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
21859
21860         * object.h, threads.h: make include files compatible with C++
21861         (patch by Jerome Laban <jlaban@wanadoo.fr>).
21862
21863 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21864
21865         * icall.c: Erased ToString helper functions for Double and Single.
21866         Now, that implementations ar all in managed code (Double and Single
21867         Formatters).
21868
21869 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
21870
21871         * appdomain.c: Added method for initializing the default context of
21872         a domain. Added internal call for getting the default context.
21873         * appdomain.h: Added context variable in MonoDomain struct.
21874         * domain.c: mono_domain_set also sets the default context of the domain
21875         * icall.c: Mapped internal method InternalGetDefaultContext.
21876         * object.c: mono_object_get_virtual_method returns always a remoting
21877         wrapper if the object is a transparent proxy.
21878         mono_runtime_invoke_array: when creating an object by calling the
21879         constructor, if the created object is a proxy, then the constructor should
21880         be called using the a remoting wrapper.
21881
21882 2003-03-03  Dick Porter  <dick@ximian.com>
21883
21884         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
21885         variable so it compiles on solaris.  Problem spotted by
21886         Christopher Taylor <ct@cs.clemson.edu>
21887
21888 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21889
21890         * appdomain.c:
21891         (get_info_from_assembly_name): don't leak value.
21892
21893         * icall.c:
21894         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
21895         result.
21896
21897 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21898
21899         * assembly.c: export mono_image_load_references ().
21900         * class.c: handle function pointers. mono_class_from_name() now
21901         supports nested type names directly.
21902
21903 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * reflection.h reflection.c: Encode already created dynamic methods 
21906         and fields correctly as a DEF instead of a REF.
21907
21908         * reflection.c: Get rid of the force_ref argument to 
21909         mono_image_typedef_or_ref since it was wrong in the first place.
21910
21911         * string-icalls.c: add error checking to string constructors according
21912         to the MSDN docs.
21913
21914         * reflection.c: Emit types in the order their TypeBuilders were 
21915         created. Previously, a new table index was assigned to each type before
21916         the tables were emitted. This was wrong because the signature blob
21917         might already refer to a type by its original table index.
21918
21919 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
21920
21921         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
21922         change.
21923         
21924 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21925
21926         * Makefile.am: make assemblies dir have \ instead of / on windows.
21927
21928 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
21929
21930         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
21931         iterate over the NESTEDCLASS table using a linear search since the
21932         table is not guaranteed to be sorted by the secondary key.
21933
21934         * class.c (mono_class_create_from_typedef): fixed up call to
21935         mono_metadata_nesting_typedef.
21936         
21937 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
21938
21939         * marshal.c (mono_string_to_byvalstr): clear the memory as
21940         suggested by Jerome Laban <jlaban@wanadoo.fr>
21941
21942 2003-02-26  Dick Porter  <dick@ximian.com>
21943
21944         * process.c: Cope with padding in .rsrc blocks
21945
21946 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
21947
21948         * metadata.h: reverted the filter_len change, it breaks reflection
21949         
21950 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
21951
21952         * metadata.h: added a new field to store the filter_len
21953         
21954
21955 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21956
21957         * reflection.c: handle custom attributes for types and members
21958         created with Reflection.Emit (bug#38422).
21959
21960 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
21961
21962         * reflection.c: define RTSpecialName automatically for constructors for
21963         compatibility with MS.NET.
21964
21965         * reflection.c (mono_reflection_create_runtime_class): initialize
21966         nested_in field of dynamically created classes.
21967
21968 2003-02-22  Martin Baulig  <martin@ximian.com>
21969
21970         * debug-mono-symfile.h: Incremented version number.
21971
21972 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
21973
21974         * object.h icall.c process.c: fix warnings.
21975
21976 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
21977
21978         * appdomain.h appdomain.c:
21979         (mono_domain_try_type_resolve): split the 
21980         name_or_tb argument into a name and a tb argument.
21981         (mono_domain_has_type_resolve): new function to check whenever the
21982         application has registered a TypeResolve event handler.
21983         
21984         * icall.c reflection.h reflection.c: move the type resolve logic into
21985         mono_reflection_get_type () so it will be invoked when 
21986         Assembly::GetType () is called.
21987
21988         * reflection.c:
21989         (mono_reflection_get_type): renamed to get_type_internal.
21990         (mono_reflection_get_type): fixed type name generation so it works 
21991         for nested types too.
21992         (mono_reflection_get_type): call has_type_resolve () to avoid the 
21993         costly type name generation if there is no resolve event handler.
21994
21995 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21996
21997         * class.c, image.c: load exported types from file references.
21998
21999 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
22000
22001         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
22002           used to cache the managed methods used to create proxies and make 
22003           remote invocation of methods.
22004         * class.h: Added in MonoVTable a flag to indicate that a class needs 
22005           to be remotely created.
22006         * object.c: Modified the method mono_class_vtable(). It now initializes 
22007           the remote flag of the vtable. Modified mono_object_new_specific(), 
22008           so now it checks the remote flag.
22009         * icall.c: Added a couple of internal methods, one for enabling instance 
22010           creation interception for a type, and one for creating objects bypassing
22011           the remote check.
22012
22013 2003-02-18  Martin Baulig  <martin@ximian.com>
22014
22015         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
22016         New interncall to get a method's metadata token.
22017
22018         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
22019         New interncall for the debugger.
22020
22021 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
22022
22023         * class.c (mono_class_setup_vtable): allocate supertype array
22024
22025 2003-02-18  Martin Baulig  <martin@ximian.com>
22026
22027         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
22028
22029 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22030
22031         * reflection.c:
22032         (assembly_name_to_aname): jump over unknown properties (i've found
22033         something like: 'type, assembly, version=xxx, custom=null, public...',
22034         so now will ignore custom=null and still get the rest of the values).
22035
22036 2003-02-17  Dick Porter  <dick@ximian.com>
22037
22038         * threads.c: Have Thread.Start() wait for a semaphore to signal
22039         that the thread has set up all its local data.  This fixes bug
22040         34323, where Abort() raced the new thread's TLS data.
22041
22042         Also removes the handle_store() call from start_wrapper, because
22043         threads are now always created suspended and there is no longer a
22044         race between the parent and child threads to store the info.
22045
22046 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
22047
22048         * image.c: explain the #- heap issue in a message, hopefully
22049         avoiding FAQs on mono-list.
22050
22051 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22052
22053         * icall.c:
22054         (GetEntryAssembly): if the domain has not invoked
22055         AppDomain.ExecuteAssembly yet, return the assembly of the default
22056         AppDomain.
22057
22058 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * class.c (mono_ldtoken): make it work in dynamic assemblies.
22061
22062 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22063
22064         * metadata.c, reflection.c: simple speedup to type hash
22065         and equals code.
22066
22067 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
22068
22069         * image.c, image.h, class.c, assembly.c: move module loading
22070         to MonoImage. When loading metadata, consider alignemnet from
22071         the start of metadata, not from the metadata address in memory.
22072
22073 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
22076         AssemblyBuilder objects. Factored out custom attribute creation into
22077         a separate function.
22078         (create_custom_attr): new function to create custom attributes.
22079
22080 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
22081
22082         * Makefile.am: Got tired of typing the full pathname to pedump.
22083         Until there is another option, am installing this.
22084
22085 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
22086
22087         * class.c (class_compute_field_layout): always set field->parent 
22088         (mono_ldtoken): use mono_defaults.fieldhandle_class;
22089
22090 2003-02-11  Dick Porter  <dick@ximian.com>
22091
22092         * threads-types.h:
22093         * monitor.c: Rewrote Monitor, making lock much faster and
22094         Pulse/Wait work as specified.  Also uses much fewer handles, and only
22095         creates them as needed.
22096
22097         * exception.c: Added SynchronizationLockException
22098
22099         * threads.c: Deleted old Monitor implementation.  The new one is
22100         in a new file.
22101
22102 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22103
22104         * class.c: handled TypedReference type code. Set the correct size for
22105         class data. Setup interface_offsets for interface classes, too.
22106
22107 2003-02-09  Martin Baulig  <martin@ximian.com>
22108
22109         * debug-mono-symfile.h: Reflect latest symbol writer changes.
22110
22111 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
22112
22113         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
22114         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
22115         * object.c: fixed mono_object_get_virtual_method () for interfaces.
22116         * verify.c: check for code that runs after the end of the method.
22117
22118 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22119
22120         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
22121         "System.Math::Round2".
22122         * sysmath.h: Added Floor, Round and Round2 definitions.
22123         * sysmath.c: Modified certain functions that were not 100% compliant
22124         with MS.NET (math precision) and added the implementation of Floor,
22125         Round and Round2.
22126
22127 2003-02-07  Martin Baulig  <martin@ximian.com>
22128
22129         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
22130
22131 2003-02-07  Martin Baulig  <martin@ximian.com>
22132
22133         * debug-mono-symfile.c: Reflected latest symwriter changes.
22134         (mono_debug_create_mono_symbol_file): Removed.
22135         (mono_debug_open_mono_symbol_file): Take an argument which
22136         specifies whether to create a dynamic symbol file.
22137
22138 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
22139
22140         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
22141
22142 2003-02-05  Martin Baulig  <martin@ximian.com>
22143
22144         * reflection.c (mono_image_build_metadata): Make this public,
22145         protect it against being called multiple times, don't create
22146         resources and don't build the compressed metadata here.
22147         (mono_image_create_pefile): Do this here.
22148
22149         * icall.c
22150         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
22151
22152 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22153
22154         * socket-io.c: fixed bug #36322.
22155
22156 2003-02-06  Piers Haken <piersh@friskit.com>
22157
22158         * appdomain.[ch]:
22159         * class.h:
22160         * debug-mono-symfile.c:
22161         * icall.c:
22162         * loader.c:
22163         * mono-config.c:
22164         * monosn.c:
22165         * reflection.c:
22166         * socket-io.c: warning cleanups
22167
22168 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
22169
22170         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
22171         function. works like remoting invoke, but does a check for the Proxy first.
22172
22173 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
22174
22175         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
22176
22177 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
22178
22179         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
22180         array of pointers.
22181         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
22182         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
22183
22184         * object.c (mono_store_remote_field_new): used by the new jit
22185         instead of mono_store_remote_field
22186         (mono_load_remote_field_new): used by the new jit
22187         instead of mono_load_remote_field
22188
22189 2003-02-05  Patrik Torstensson
22190
22191         * appdomain.c: changed unload to take the domain id instead
22192         of domain
22193         
22194         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
22195
22196
22197 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22198
22199         * appdomain.c: don't look for assemblies in ApplicationBase if
22200         PrivateBinPathProbe is set.
22201
22202 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22203
22204         * object.c: make the first argument in main_args contain the absolute
22205         path to the assembly. Fixes bug #37511.
22206
22207 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22208
22209         * icall.c: get correct UTC offset for countries not using daylight
22210         time saving. Fixes bug #30030.
22211
22212 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22213
22214         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
22215         and 1 are the family).
22216
22217 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
22218
22219         * icall.c (ves_icall_InternalExecute): removed wrong assertion
22220
22221         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
22222
22223 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * reflection.c: added support for SignatureHelper tokens, which is
22226         needed by the Calli opcode.
22227
22228         * reflection.h: track changes to SignatureHelper class.
22229
22230         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
22231
22232 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22233
22234         * appdomain.c: fixed loading assemblies from PrivateBinPath.
22235
22236 2003-02-03  Patrik Torstensson
22237         * appdomain.[c|h], domain.c : 
22238          - Added support for getting a domain via domain id
22239          - Support for setting and getting domain from System.AppDomain 
22240            (used in cross appdomain channel)
22241          - Added support for get/set for a MonoAppContext on a thread 
22242            (Context class in System.Runtime.Remoting.Contexts),
22243          - Removed hack in Get/SetData and ExecuteAssembly.
22244         
22245         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
22246         the managed world to get control when a proxy is created.
22247
22248         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
22249         
22250 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
22251
22252         * icall.c
22253         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22254         Populate the codebase field as well.
22255
22256 2003-02-02  Martin Baulig  <martin@ximian.com>
22257
22258         * debug-mono-symfile.c
22259         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
22260         (mono_debug_symfile_add_method): Allow interncalls.
22261
22262 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22263
22264         * icall.c: throw parse exception if strtod fails or the string is empty.
22265
22266 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
22267
22268         * marshal.c: handle object type separately from defined
22269         class types.
22270
22271 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
22272
22273         * marshal.c: handle NATIVE_LPSTR for strings when it's
22274         explicitly specified.
22275
22276 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
22277
22278         * reflection.c, reflection.h, icall.c: setup the reflection
22279         handle cache for ModuleBuilders and AssemblyBuilders.
22280
22281 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
22282
22283         * reflection.c (reflection_methodbuilder_to_mono_method): set
22284         pinvoke flag
22285
22286 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22287
22288         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
22289
22290 2003-01-29  Dick Porter  <dick@ximian.com>
22291
22292         * threads.c: No need for the fake_thread kludge now that Thread
22293         doesn't run a class constructor
22294         
22295 2003-01-29  Dick Porter  <dick@ximian.com>
22296
22297         * threads.c: Use g_direct_hash instead of the rather bogus
22298         g_int_hash
22299
22300 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
22301
22302         * marshal.c (mono_marshal_get_native_wrapper): add check for null
22303         (fix pinvoke12.exe)
22304         (mono_marshal_get_struct_to_ptr): generate valid IL code
22305         (mono_marshal_get_ptr_to_struct): generate valid IL code
22306         (*): correctly set sig->pinvoke, we need to memdup the signature
22307         to do that
22308
22309 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22310
22311         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
22312         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
22313
22314 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22315
22316         * profiler.c: provide more callers information.
22317
22318 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
22319
22320         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
22321
22322         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
22323
22324         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
22325
22326 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22327
22328         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
22329         exception instead of going into an infinite loop on dates which it 
22330         can't yet handle.
22331
22332         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
22333         out-of-range exception if needed.
22334
22335         * class.c (mono_class_setup_vtable): allow a virtual method to provide
22336         an implementation for an interface method and to override an inherited
22337         method at the same time. 
22338         Imagine a scenario when a virtual method is used to override a
22339         virtual abstract method in a parent class, and this same method 
22340         provides an implementation for an method inherited from an interface. 
22341         In this case, the interface resolution code will set im->slot, which 
22342         means that the virtual method override pass will skip this method 
22343         which means a pointer to the abstract method inherited from the parent
22344         will remain in the vtable of this non-abstract class.
22345
22346         * class.c: (mono_class_setup_vtable): continue search for a real 
22347         method if only an abstract method is found.     
22348
22349 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22350
22351         * reflection.c: add size to encoding for ByValStr and ByValArray
22352         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
22353
22354 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * class.c (mono_class_setup_vtable): pass the override info as an
22357         argument.
22358
22359         * class.c (mono_class_setup_vtable): set the slot of overriding methods
22360         correctly.
22361         
22362         * reflection.c (ensure_runtime_vtable); add support for method 
22363         overrides.
22364         
22365 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * reflection.c (resolution_scope_from_image): Hack to work to work with
22368         dynamic assemblies.
22369
22370         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
22371         added a 'force_ref' argument to force this function to allways return 
22372         a TypeRef. This is needed by mono_image_get_memberref_token ().
22373         
22374 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22375
22376         * reflection.c (mono_image_get_type_info): interfaces really don't have
22377         a parent.
22378
22379         * reflection.c (mono_image_basic_init): fill out missing fields of
22380         image structure.
22381
22382         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
22383         dynamic assemblies. This is required so dynamic assemblies show up in
22384         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
22385         Type::GetType() etc. This is consistent with MS behaviour.
22386
22387         * image.c image.h reflection.c: add newly created classes to the name 
22388         cache so mono_class_get () will find them.      
22389
22390 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         First part of changes to get IKVM.NET running under mono.
22393         
22394         * appdomain.h, appdomain.c: added new function 
22395         mono_domain_try_type_resolve() which will emit TypeResolve events. 
22396         This function will call AppDomain::DoTypeResolve to do the actual work.
22397
22398         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
22399         moved existing code dealing with dynamic tokens to a new function 
22400         called mono_reflection_lookup_dynamic_token (). This function will 
22401         raise TypeResolve events when appropriate. Since reflection.c is not 
22402         part of libmetadata, a new hook function called 
22403         mono_lookup_dynamic_token() is added to class.c which will call this.
22404
22405         * assembly.h assembly.c: make the invoke_load_hook function public,
22406         so it can be called for dynamic assemblies.
22407
22408         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
22409
22410         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
22411         type isn't found.
22412
22413         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
22414         MonoGHashTable, since it contains pointers to objects which the GC 
22415         needs to track.
22416
22417         * assembly.c (search_loaded): remove unused variable.
22418         
22419 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
22420
22421         * object.c: fixed issue exposed by gcc-generated IL programs
22422         that use RVA data for pointers.
22423
22424 2003-01-25  Martin Baulig  <martin@ximian.com>
22425
22426         * threads.c (start_wrapper): Moved the initialization of
22427         `start_func' above the mono_new_thread_init() call to which we
22428         pass it as argument.
22429
22430 2003-01-24  Martin Baulig  <martin@ximian.com>
22431
22432         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
22433         the MonoThread pointer.
22434
22435 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
22436
22437         * icall.c: Rename `PowImpl' to Pow.
22438
22439 2003-01-23  Dick Porter  <dick@ximian.com>
22440
22441         * threads.c (start_wrapper): Create a Thread object if needed, so
22442         the Main() thread can do the class initialisation in a subthread
22443         that has been set up to allow managed code execution.
22444
22445         Pass the thread ID instead of the MonoThread pointer to the thread
22446         start and attach callbacks.  This change is required, because the
22447         jit thread start callback must be called _before_ the Thread
22448         object can be created.
22449         
22450         (mono_thread_init): Removed much object creation code that is no
22451         longer needed.  No managed code is called from here now.
22452
22453         * object.c (mono_runtime_exec_managed_code): Create a subthread
22454         for Main, and call back to the runtime to use it.
22455         Set the exit code when Main exits.
22456
22457         * gc.c: Make sure domain finalisation happens in a subthread.
22458         Re-enable threaded GC, fixing bug 31333 (again).
22459
22460         * environment.c: System.Environment internall calls (so far just
22461         ExitCode is here, the others are still in icall.c)
22462
22463         * appdomain.c (mono_runtime_cleanup): All threads running managed
22464         code should have finished before mono_runtime_cleanup() is
22465         reached, so no need to clean up threads.
22466
22467 2003-01-22  Martin Baulig  <martin@ximian.com>
22468
22469         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
22470         `gpointer func' arguments.      
22471         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
22472         but added `MonoThread *thread' argument.
22473         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
22474
22475         * threads.c (mono_new_thread_init): Added `gpointer func' argument
22476         and pass it to the mono_thread_start_cb callback.
22477         (mono_install_thread_callbacks): New public function to install a
22478         set of callbacks which are set by the debugger.
22479         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
22480
22481 2003-01-22  Martin Baulig  <martin@ximian.com>
22482
22483         * Makefile.am: Install debug-mono-symfile.h.
22484
22485 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
22486
22487         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
22488
22489 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
22490
22491         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
22492         * class.c (mono_ptr_class_get): correctly set access levels of pointers
22493         (mono_array_class_get): correctly set access levels of arrays
22494
22495 2003-01-20      Patrik Torstensson
22496         * image.h (MonoAssemblyName): changed major, minor, build, revision
22497         from signed to unsigned.
22498
22499 2003-01-20  sean kasun <skasun@azstarnet.com>
22500
22501         * reflection.c (load_cattr_value): Now this handles
22502         MONO_TYPE_SZARRAY.  Fixes bug #35629
22503
22504 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
22505
22506         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
22507         integer value
22508
22509 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22510
22511         * decimal.c: fixed bug #26056.
22512
22513 2003-01-17  Martin Baulig  <martin@ximian.com>
22514
22515         * gc.c: Raise an ExecutionEngineException instead of using g_error().
22516
22517 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22518
22519         * exception.[ch]:
22520         (mono_get_exception_type_initialization): new function.
22521
22522         * object.c: throw a TypeInitializationException when an exception is
22523         thrown invoking the class constructor.
22524
22525 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * reflection.c: fixed attribute reading.
22528
22529 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22530
22531         * icall.c:
22532         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
22533         provided, look for the type in the calling assembly and then in
22534         mscorlib; if the assembly name is provided, only try that one.
22535
22536 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22537
22538         * object.c: register the vtable before there is a chance it's
22539         queried again recursively.
22540
22541 2003-01-13  Duncan Mak  <duncan@ximian.com>
22542
22543         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
22544         gc-internal.h. 
22545         
22546 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
22547
22548         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
22549
22550 2003-01-11  Martin Baulig  <martin@ximian.com>
22551
22552         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
22553         this to 20 for the release.
22554
22555 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
22556
22557         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
22558
22559         * loader.c (mono_method_get_marshal_info): bug fix
22560
22561         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
22562         structures with explicit layout
22563
22564 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22565
22566         * profiler.c: made the output more readable (and sorted). 
22567         Added caller information for the allocation profiler.
22568
22569 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
22570
22571         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
22572
22573 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22574
22575         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
22576         to get value types.
22577         
22578 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
22579
22580         * object.c, profiler.h, profiler.c, profiler-private.h:
22581         Added object allocation profiler.
22582
22583 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
22584
22585         * reflection.h, reflection.c: handle global methods.
22586         Compress blob entries.
22587
22588 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
22589
22590         * marshal.c: fix compilation.
22591
22592 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
22593
22594         * loader.c (mono_method_get_marshal_info): impl.
22595
22596         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
22597
22598 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22599
22600         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
22601         for reference types.
22602
22603 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
22604
22605         * loader.c: fixed off by one error in loaded parameter names.
22606
22607 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
22608
22609         * marshal.c (mono_marshal_get_icall_wrapper): like
22610         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
22611         instead of a MonoMethod.
22612
22613 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22614
22615         * decimal.c: fixed bug #36537.
22616
22617 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
22618
22619         * marshal.c: throw a missing method exception if a
22620         P/Invoke method is not found.
22621
22622 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22623
22624         * icall.c: allow a null this for constructors.
22625
22626 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22627
22628         * icall.c: raise the proper exceptions if the arguments to the
22629         internal Invoke are incorrect.
22630
22631 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
22632
22633         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
22634
22635 2003-01-03  Martin Baulig  <martin@ximian.com>
22636
22637         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22638
22639 2002-12-31  Martin Baulig  <martin@ximian.com>
22640
22641         * debug-mono-symfile.c: Completely rewrote the type section.
22642         Instead of using individual malloc()ed fields, we use one big
22643         continuous memory area and offsets into this area.
22644         See the comments in the source code for details.
22645
22646 2002-12-30  Martin Baulig  <martin@ximian.com>
22647
22648         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
22649
22650 2002-12-30  Martin Baulig  <martin@ximian.com>
22651
22652         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
22653         line number table in this data blob instead of using an external
22654         pointer.
22655
22656 2002-12-28  Martin Baulig  <martin@ximian.com>
22657
22658         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22659
22660 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
22661
22662         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
22663         as a boxed return type.
22664
22665 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
22666
22667         * appdomain.c
22668         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
22669         g_build_filename to properly get separators on the filename created.
22670
22671         * object.h: Small change, introduce MonoMarshalByRefObject to
22672         track the layout of that structure in the C# universe as we make
22673         changes there.
22674
22675 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
22676
22677         * object.c: removed assert to allow static fields on interfaces.
22678         * loader.c: a TypeSpec may be used for any type, not just arrays.
22679
22680 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
22681
22682         * class.c, class.h: added mono_class_array_element_size ().
22683         Ignore static methods in interfaces.
22684
22685 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22686
22687         * threads.c: fixed the build under cygwin.
22688
22689 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
22690
22691         * reflection.c: handle nullref constants. Allocate keys for
22692         reflection handles with the GC.
22693
22694 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22695
22696         * threads.c, threads.h: added mono_thread_get_abort_signal()
22697         to get a suitable signal for thread abort.
22698
22699 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22700
22701         * metadata.c: fix handling of ExportedType table.
22702
22703 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22704
22705         * icall.c: added WriteWindowsDebugString internal call.
22706
22707 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22708
22709         * reflection.h: added fields to match C# implementation.
22710
22711 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22712
22713         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
22714
22715 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
22716
22717         * gc.h, gc-internal.h: Rename header for GC internal calls to
22718         gc-internal.h from gc.h as to not clash with Boehm GC having its
22719         header installed as <gc.h> in outside include paths.
22720         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
22721         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
22722
22723 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22724
22725         * icall.c: assign minor, build and revision in FillName.
22726
22727 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
22730         Added support for running code generated by Reflection.Emit.
22731
22732 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22733
22734         * appdomain.c: check for NULL argument in LoadFrom.
22735
22736 2002-12-10  Dick Porter  <dick@ximian.com>
22737
22738         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
22739
22740 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22741
22742         * appdomain.c: fix buglet when building exe file name.  Handle full
22743         assembly name (needed after latest changes to AssemblyName).
22744         * image.c:
22745         (mono_image_close): free some hashtables.
22746
22747 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
22748
22749         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
22750         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
22751         on some systems (redhat 7.3) 
22752
22753 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
22754
22755         * threads.c: delete the critical section of a sync block,
22756         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
22757
22758 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
22759
22760         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
22761
22762 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22763
22764         * appdomain.[ch]: handle the assembly preload event to try loading the
22765         assemblies using the paths we have in the current domain.
22766
22767         * assembly.[ch]: created an assembly preload hook that is called to try
22768         loading the assembly by other means that the ones provided here.
22769
22770         * domain.c: initialize the domain search path.
22771
22772         From now on, assemblies (TODO: except corlib and System) are loaded
22773         according to these rules when using mono_assembly_load ():
22774
22775                 1. It tries to load the assembly from the ApplicationBase
22776                 of the current domain appending .dll and .exe (TODO: have to
22777                 try loading from name/name.dll and name/name.exe).
22778
22779                 2. It tries the search path specified in PrivateBinPath for the
22780                 current domain (if any).
22781
22782                 3. Previous behavior.
22783
22784 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
22785
22786         * icall.c: implemented GetInterfaceMap() related icall.
22787         * domain.c, loader.h: load MethodInfo in mono_defaults.
22788
22789 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
22790
22791         * gc.c: disable the finalizer thread for now, untill all the issues
22792         with it are resolved.
22793
22794 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
22795
22796         * string-icalls.c: handle embedded nulls in string ctor when the
22797         length is specified.
22798
22799 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
22800
22801         * class.c: look for explicit interface implementation in parent
22802         classes, too.
22803
22804 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
22805
22806         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
22807
22808 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
22809
22810         * gc.c: protect handles with a critical section.
22811
22812 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22813
22814         * icall.c:
22815         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
22816         parameters. If no assembly specified, try getting the type from all
22817         the assemblies in the current domain, else, load the assembly and get
22818         the type from it.
22819
22820 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22821
22822         * marshal.c: applied patch from Aleksey Demakov that fixes
22823         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
22824
22825 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22826
22827         * icall.c: fixed get_location.
22828
22829 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
22830
22831         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
22832         declarations to make it work with older gcc. 
22833
22834         * loader.c (mono_get_method): set signature->pinvoke for native calls
22835
22836 2002-11-20  Dick Porter  <dick@ximian.com>
22837
22838         * threads.c (mono_thread_init): Set the main thread's handle
22839
22840 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
22841
22842         * gc.c: allow compilation without GC support. Changed to match the
22843         mono coding style.
22844
22845 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
22846
22847         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
22848
22849 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
22850
22851         * reflection.c: set a public key token on the core assemblies.
22852
22853 2002-11-18  Dick Porter  <dick@ximian.com>
22854
22855         * threads.c: Split out some thread initialisation so that other
22856         files can set the start callback function.
22857
22858         * gc.c: Run finalisers in a separate thread, to avoid stack
22859         overflow.  Fixes bug 31333.
22860
22861         * appdomain.c: Set up GC finalisation thread.
22862
22863         * reflection.c: 
22864         * object.c: 
22865         * domain.c: Use gc.h macros for GC_malloc
22866         
22867 2002-11-15  Dick Porter  <dick@ximian.com>
22868
22869         * threadpool.c: 
22870         * threads.c:
22871         * appdomain.c: Removed mono_runtime_init_with_attach(),
22872         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
22873         merging the extra parameter with the existing function.  Removed
22874         unneeded code in mono_thread_attach().
22875
22876 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
22877
22878         * image.c (mono_image_loaded_by_guid): a method to get loaded
22879         images by guid. 
22880         (load_metadata_ptrs): we store the guid as string.
22881
22882 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
22883
22884         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
22885
22886         * metadata.c (mono_guid_to_string): imported method form Zoltan
22887         Varga (slightly modified)
22888
22889         * assembly.c (mono_assembly_open): load precompiled code
22890
22891         * loader.h (MonoMethod): we store the method token for use in the
22892         aot compiler. 
22893
22894 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22895
22896         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
22897         the hook function called when an assembly is loaded.
22898         
22899         * domain.c: Modified file.
22900         (mono_domain_assembly_load): removed hash table insertion of assemblies.
22901
22902         Fixes bug #33196.
22903
22904 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
22905
22906         * reflection.c: Map PEFileKind to the value expected by the WinNT
22907         image loader. 
22908
22909 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22910
22911         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
22912         Read until the buffer is filled completely.
22913
22914 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22915
22916         * icall.c: implemented MonoType.InternalGetEvent ().
22917
22918 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22919
22920         * appdomain.c: implemented InitAppDomainSetup. Delayed
22921         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
22922         the entry_assembly.
22923
22924         * assembly.c: base_dir is now an absolute path ending with
22925         G_DIR_SEPARATOR.
22926
22927         * icall.c: modified get_location according to the above changes.
22928
22929         * object.c: init AppDomain.SetupInformation for the default domain after
22930         we have the entry assembly.
22931
22932         * domain.c: when unloading a domain, setup = NULL.
22933
22934 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
22935
22936         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
22937
22938 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
22939
22940         * object.h, object.c: introduced mono_object_get_virtual_method ()
22941         to lookup the method invoked on an object when a callvirt is done on
22942         a method.
22943         * icall.c: make MethodInfo::Invoke() always do a virtual call.
22944
22945 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22946
22947         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
22948         current domain when loaded an assembly and failed to load it.
22949
22950         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
22951
22952 2002-10-31  Dick Porter  <dick@ximian.com>
22953
22954         * icall.c: 
22955         * file-io.h: 
22956         * file-io.c: Return the error status in a parameter, as the
22957         GetLastError() value has long since been blown away if we try and
22958         look it up in a subsequent internal call invocation.  Delete the
22959         GetLastError() internal call, because it's useless.
22960
22961 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
22962
22963         * class.[ch]: added cast_class to fix bug 29517
22964
22965 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
22966
22967         * marshal.c: create valid IL code in the filter clause:
22968         the new JIT is less forgiving:-)
22969
22970 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22971
22972         * icall.c: removed get_property internal call.
22973
22974 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
22975
22976         * appdomain.h domain.c: Added an ID to appdomains.
22977         
22978         * threads.c threads.h icall.c: Implement icall
22979         Thread:GetDomainID(), and remove unused icall 
22980         CurrentThreadDomain_internal.
22981
22982 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22983
22984         * icall.c: Don't recurse through the base types in GetConstructor.
22985         Fixes bug #32063. 
22986
22987 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
22988
22989         * mempool.h, mempool.c: added mono_mempool_empty() and
22990         mono_mempool_stats().
22991
22992 2002-10-23  Dick Porter  <dick@ximian.com>
22993
22994         * file-io.c: 
22995         * file-io.h: 
22996         * icall.c: Added MonoIO.GetFileType internal call
22997
22998 2002-10-17  Dick Porter  <dick@ximian.com>
22999
23000         * appdomain.c (mono_runtime_cleanup): Don't signal the async
23001         delegate semaphore before waiting for all threads to finish,
23002         because new threads can also call async delegates.  Fixes bug
23003         32004.
23004
23005         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
23006         of 3 seconds, in case another async job is queued.  (This part is
23007         needed because the bug fix reintroduced the 3s exit lag.)  This
23008         makes the mono_runtime_shutdown flag superfluous.
23009
23010 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23011
23012         * reflection.c: include ehader size in method section headers.
23013         Really check for suplicated modules entries.
23014
23015 2002-10-17  Martin Baulig  <martin@gnome.org>
23016
23017         * debug-mono-symfile.c: Added back support for locals.
23018
23019 2002-10-14  Martin Baulig  <martin@gnome.org>
23020
23021         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
23022         MONO_TYPE_VOID.
23023
23024 2002-10-14  Martin Baulig  <martin@gnome.org>
23025
23026         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
23027         mono_class_get() instead of looking in the class cache. 
23028
23029 2002-10-13  Martin Baulig  <martin@gnome.org>
23030
23031         * debug-mono-symfile.c: Set version number to 28, include the
23032         signature in method names.
23033
23034 2002-10-13  Martin Baulig  <martin@gnome.org>
23035
23036         * debug-mono-symfile.h: Set version number to 27.
23037
23038 2002-10-11  Martin Baulig  <martin@gnome.org>
23039
23040         * gc.c: Don't register/unregister NULL pointers as disappearing links.
23041
23042 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23043
23044         * metadata.c, metadata.h: added helper function to allocate signatures.
23045
23046 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23047
23048         * icall.c: added internal call to get the location of machine.config.
23049
23050 2002-10-08  Martin Baulig  <martin@gnome.org>
23051
23052         * debug-mono-symfile.c: Ignore classes with a pending init for the
23053         moment.
23054
23055 2002-10-03  Dick Porter  <dick@ximian.com>
23056
23057         * threads.c: Freebsd pthread_t is a pointer
23058
23059 2002-10-03  Dick Porter  <dick@ximian.com>
23060
23061         * socket-io.c: Implemented GetHostName_internal
23062
23063 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23064
23065         * mono-config.c:
23066         (mono_config_parse_file): don't leak the text.
23067
23068 2002-10-02  Martin Baulig  <martin@gnome.org>
23069
23070         * debug-mono-symfile.c: Added support for methods.
23071
23072 2002-10-01  Martin Baulig  <martin@gnome.org>
23073
23074         * debug-mono-symfile.c: Don't emit methods and line numbers for
23075         the dynamic symbol file, just write the type table.  We can easily
23076         have an external helper program which creates a symbol file for an
23077         IL file.        
23078
23079 2002-10-01  Dick Porter  <dick@ximian.com>
23080
23081         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
23082         Only add the handle to the cleanup array when we're about to
23083         launch the thread.  Bug 31425 deadlocked when the test was run on
23084         mono under w32.
23085
23086 2002-10-01  Martin Baulig  <martin@gnome.org>
23087
23088         * debug-mono-symfile.c: Added support for properties.
23089
23090 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23091
23092         * reflection.c: unaligned store fix from Mark Crichton
23093         <crichton@gimp.org>.
23094
23095 2002-09-27  Martin Baulig  <martin@gnome.org>
23096
23097         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
23098         New interncall.
23099
23100 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23101
23102         * assembly.h, assembly.c: use a sane API to hook into the assembly
23103         loading process instead of a useless special-purpouse hack
23104         (ngen needs a hook, too, for example).
23105
23106 2002-09-27  Dick Porter  <dick@ximian.com>
23107
23108         * threads.c (mono_thread_init): Call GetCurrentProcess() so
23109         io-layer can set up some process handle info.  Not needed on w32,
23110         but doesn't hurt either.
23111
23112         * process.c: Pass the program name in the second parameter to
23113         CreateProcess, so the path is searched.  Include the working
23114         directory. Implemented process name, process enumeration, and some
23115         process detail internal calls.
23116         
23117         * icall.c: Added internal calls for process lookup, and some
23118         process details
23119
23120 2002-09-26  Martin Baulig  <martin@gnome.org>
23121
23122         * assembly.c (mono_install_open_assembly_hook): New global
23123         function to install a function to be invoked each time a new
23124         assembly is loaded.
23125         (mono_assembly_open): Run this callback function if set.
23126
23127         * debug-mono-symfile.c: Put back line numbers for the dynamic
23128         symbol file and also record the .il file as source file.  This
23129         allows us to install the temporary symbol file as `file.dbg' just
23130         like a compiler-generated one.
23131
23132 2002-09-26  Nick Zigarovich <nick@chemlab.org>
23133
23134         * Corrected typo in gc.c (BOHEM vs BOEHM).
23135
23136 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23137
23138         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
23139         GetProperties. Also avoid calling g_slist_length in GetProperties and
23140         GetMethods.
23141
23142 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23143
23144         * reflection.c: avoid unaligned stores (bug spotted by
23145         Mark Crichton  <crichton@gimp.org>).
23146
23147 2002-09-25  Martin Baulig  <martin@gnome.org>
23148
23149         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
23150         instead of guint64 for addresses and added prologue/epilogue info.
23151
23152 2002-09-25  Martin Baulig  <martin@gnome.org>
23153
23154         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
23155         store line number info.  For the dynamic symbol file, we only need
23156         to provide the JIT generated dynamic line number info for the dynamic
23157         symbol file.
23158
23159 2002-09-25  Martin Baulig  <martin@gnome.org>
23160
23161         * debug-mono-symfile.h: Incremented version number.
23162
23163 2002-09-24  Martin Baulig  <martin@gnome.org>
23164
23165         * class.c (mono_debugger_class_init_func): New global function
23166         pointer variable.
23167         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
23168         call it.
23169
23170         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
23171         function.  This is called via the mono_debugger_class_init_func
23172         hook to add all types to the dynamic type table.
23173         (ves_icall_MonoDebugger_GetType): New interncall to get a class
23174         from its metadata token.
23175
23176         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
23177         New interncall for the debugger.
23178
23179 2002-09-24  Nick Drochak <ndrochak@gol.com>
23180
23181         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
23182         before using it in case it is null.
23183         
23184 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23185
23186         * metadata.c: allow custom modifiers in local var signatures
23187         (bug spotted by Zoltan Varga).
23188
23189 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23190
23191         * class.c: deal with the <Module> class that may have a NULL vtable.
23192         Eliminate warnings.
23193
23194 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23195
23196         * image.c, image.h: more strong name helpers.
23197         * monosn.c: more work: convert pem keys to cryptoapi format.
23198
23199 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23200
23201         * string-icalls.c: speedup IndexOf.
23202
23203 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23204
23205         * icall.c: updates from Zoltan.2.Varga@nokia.com.
23206
23207 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23208
23209         * icall.c: cleanup: use mono_object_domain ().
23210
23211 2002-09-23  Martin Baulig  <martin@gnome.org>
23212
23213         * debug-mono-symfile.c: Improved type support.
23214
23215 2002-09-22  Martin Baulig  <martin@gnome.org>
23216
23217         * debug-mono-symfile.c: Added support for reference types and strings.
23218
23219 2002-09-22  Martin Baulig  <martin@gnome.org>
23220
23221         * debug-mono-symfile.c: Started to work on the type table.
23222
23223 2002-09-21  Martin Baulig  <martin@gnome.org>
23224
23225         * debug-mono-symfile.c: Largely reworked the symbol table format.
23226         The symbol table is now incrementally updated each time a new
23227         method is added.  We're now also using our own magic and version
23228         so that you don't need to recompile all your classes if the
23229         dynamic table changes.
23230         (mono_debug_update_mono_symbol_file): Removed.
23231         (mono_debug_symfile_add_method): New function to add a method.
23232
23233 2002-09-21  Martin Baulig  <martin@gnome.org>
23234
23235         * icall.c
23236         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
23237         New interncall.
23238
23239         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
23240         New interncall to get a method from its metadata token.
23241
23242 2002-09-21  Martin Baulig  <martin@gnome.org>
23243
23244         * debug-mono-symfile.c: Create type table.
23245
23246 2002-09-20  Martin Baulig  <martin@gnome.org>
23247
23248         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
23249
23250 2002-09-20  Martin Baulig  <martin@gnome.org>
23251
23252         * debug-mono-symfile.c: Provide information about params and locals.
23253
23254 2002-09-20  Martin Baulig  <martin@gnome.org>
23255
23256         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
23257         New interncall.
23258
23259         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
23260         interncall to get a method from its metadata token.
23261
23262 2002-09-20  Martin Baulig  <martin@gnome.org>
23263
23264         * debug-mono-symfile.c: Added a few checks for method->header
23265         being non-NULL.  This should never happen, but for the moment
23266         let's use a g_warning() rather than a g_assert().
23267
23268 2002-09-19  Mark Crichton  <crichton@gimp.org>
23269
23270         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
23271         even if support for it isn't present.  Added an #ifdef to fix this.
23272
23273         * socket-io.c: Added checks back for Solaris support.
23274
23275 2002-09-19  Martin Baulig  <martin@gnome.org>
23276
23277         * debug-mono-symfile.c (read_string, write_string): Reflect latest
23278         changes in the symbol file format.
23279
23280 2002-09-18  Martin Baulig  <martin@gnome.org>
23281
23282         * debug-mono-symfile.c: Set version number to 21.
23283
23284 2002-09-18  Dick Porter  <dick@ximian.com>
23285
23286         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
23287         on netbsd.  Fixes bug 30051.
23288
23289 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23290
23291         * reflection.c:
23292         (set_version_from_string): little fix.
23293
23294 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23295
23296         * monosn.c, Makefile.am: added strong name utility.
23297         * reflection.h, reflection.c: implemented delayed signing,
23298         locale, version and hash id assembly attributes.
23299
23300 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23301
23302         * loader.c, metadata.c: load param attributes in signatures.
23303
23304 2002-09-16  Martin Baulig  <martin@gnome.org>
23305
23306         * debug-mono-symfile.c: Added string table with all method names.
23307
23308 2002-09-14  Martin Baulig  <martin@gnome.org>
23309
23310         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
23311         fast method lookup.
23312
23313 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23314
23315         * reflection.c: record the public key token of referenced assemblies.
23316
23317 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23318
23319         * image.c, image.h: added functions to get the strong name and the
23320         public key of an assembly.
23321         * pedump.c: use them.
23322
23323 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
23324
23325         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
23326
23327 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
23328
23329         * marshal.c (mono_marshal_get_managed_wrapper): Added
23330         MONO_TYPE_BOOLEAN 
23331
23332 2002-09-11  Martin Baulig  <martin@gnome.org>
23333
23334         * gc.c: Call GC_unregister_disappearing_link() on all links when
23335         finalizing them, this is necessary to aviod a crash in boehm's
23336         finalize handler.
23337
23338 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23339
23340         * gc.c: handle GetTarget for finalized objects spotted and fixed by
23341         nick@chemlab.org.
23342
23343 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23344
23345         * icall.c: implemented MonoType::Module.
23346         * reflection.c, reflection.h: mono_module_get_object () from
23347         Tomi Pakarinen <tomi.pakarinen@welho.com>.
23348
23349 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23350
23351         * icall.c: ignore overridden methods in GetMethods ().
23352         Fix for FieldInfo::SetValue().
23353         * object.c: handle float/double in runtime invoke.
23354
23355 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23356
23357         * object.c: allow a constructor to be called again on an object.
23358
23359 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23360
23361         * class.h, class.c: move field layout code to it's own function and
23362         export it. Get an interface id earlier. Move fields in MonoClass
23363         so they are more cache friendly and align the bitfields.
23364         * loader.c: temporary handle get_param_names() for a runtime method.
23365         * reflection.c, reflection.h: more code to handle runtime creation of
23366         types.
23367
23368 2002-09-09  Martin Baulig  <martin@gnome.org>
23369
23370         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
23371         signature with the pinvoke field being set for the actual call.
23372
23373 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23374
23375         * icall.c: removed some unused icalls. Start of map of glib charsets
23376         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
23377
23378 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23379
23380         * debug-helpers.c: break infinite loop (found and fixed by
23381         Holger Arnold <harnold@gmx.de>).
23382
23383 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23384
23385         * icall.c: target may be null in create_delegate.
23386
23387 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23388
23389         * marshal.c: handle a boolean return type.
23390
23391 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23392
23393         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
23394
23395 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23396
23397         * gc.c: fix weakreferences.
23398
23399 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23400
23401         * icall.c: added icall to get default codepage.
23402
23403 2002-09-03  Dick Porter  <dick@ximian.com>
23404
23405         * threads.h: 
23406         * threads.c: Use MonoThread instead of MonoObject where
23407         apropriate.
23408
23409         Store running thread objects in a hash table, so that we have all
23410         the info to hand when waiting for them to finish
23411         (means we don't need OpenThread() any more, so mingw builds should
23412         be fully functional again.)
23413
23414         * verify.c:
23415         * object.h: Added thread ID to MonoThread
23416
23417 2002-09-03  Martin Baulig  <martin@gnome.org>
23418
23419         * icall.c (System.Reflection.Assembly::get_location): New interncall.
23420
23421 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23422
23423         * icall.c: fixed leak in get_temp_path. Thanks lupus.
23424
23425 2002-09-03  Martin Baulig  <martin@gnome.org>
23426
23427         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
23428         argument to store the end address of the disassembled instruction.
23429
23430         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
23431         here from debug-symfile.h.
23432         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
23433         JIT into this struct.
23434         (MonoSymbolFile): Added `char *image_file' field.
23435         (MonoDebugGetMethodFunc): Removed.
23436         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
23437         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
23438         (mono_debug_find_method): New method.
23439
23440         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
23441         create a full symbol file.
23442         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
23443         and static symbol files.
23444         (mono_debug_find_method): The symbol file keeps an internal method hash,
23445         call this to get a MonoDebugMethodInfo from a MonoMethod.
23446
23447         * debug-symfile.[ch]: Removed.
23448
23449 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
23450
23451         * image.c (do_mono_image_open): Remove linker version check.
23452
23453 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
23454
23455         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
23456         wrappers for instance methods.
23457         
23458 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23459
23460         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
23461
23462 2002-08-28  Dick Porter  <dick@ximian.com>
23463
23464         * Makefile.am: Export HOST_CC for w32 builds
23465
23466 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23467
23468         * file-io.c process.c: MonoString are null terminated, no
23469         need for mono_string_to_utf16() anymore.
23470
23471 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23472
23473         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
23474
23475 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
23476
23477         * icall.c, reflection.h: speedup System.MonoType.
23478
23479 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23480
23481         * reflection.c: allow null as the value of a string argument in
23482         custom attributes constructors.
23483
23484 2002-08-27  Martin Baulig  <martin@gnome.org>
23485
23486         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
23487         `trampoline_address' field.
23488
23489 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
23490
23491         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
23492         check (fixes bug #29486) 
23493
23494 2002-08-27  Martin Baulig  <martin@gnome.org>
23495
23496         * debug-mono-symfile.c: Changed the file format in a way that allows us
23497         open it read-only and to use a specially malloced area for all the
23498         dynamic data.  We can now also generate a symbol file on-the-fly if we're
23499         debugging IL code and there is no MCS generated symbol file for it.
23500
23501 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23502
23503         * object.c: added a define for a good string and array
23504         creation speedup (not enabled by default because we need to deal with
23505         the synch stuff).
23506
23507 2002-08-26  Martin Baulig  <martin@gnome.org>
23508
23509         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
23510         function to create a dynamic symbol file.  This is used by the
23511         debugger to create a symbol file for IL code on-the-fly.
23512
23513 2002-08-26  Martin Baulig  <martin@gnome.org>
23514
23515         * loader.c (mono_lookup_pinvoke_call): Include the error message
23516         from g_module_error() in the error message.
23517
23518 2002-08-24  Martin Baulig  <martin@gnome.org>
23519
23520         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
23521         function to update the symbol file.  The symbol file is mmap()ed
23522         writable, but private.  This allows us to install the symbol file
23523         together with the assembly.
23524
23525 2002-08-24  Martin Baulig  <martin@gnome.org>
23526
23527         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
23528         but they can read the new symbol file format which mcs is now creating.
23529
23530         * debug-symfile.c (mono_debug_find_source_location): Moved to
23531         debug-mono-symfile.c; this is now operating on the new symbol file.
23532
23533 2002-08-23  Martin Baulig  <martin@gnome.org>
23534
23535         * debug-helpers.c (mono_method_desc_from_method): New function to get
23536         a MonoMethodDesc from a MonoMethod.
23537
23538 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23539
23540         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
23541         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
23542
23543 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
23544
23545         * string-icalls.[ch]: make helper methods static.
23546
23547 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23548
23549         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
23550         types to it and to SetValueInternal.
23551
23552         * object.c: Moved handle_enum label to its proper place. This was the
23553         f... bug! ;-)
23554
23555         This time i compiled mcs and gtk-sharp and they both work.
23556
23557 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23558
23559         * icall.c: reverted partially my previous patch until 
23560         object.c:set_value handles enums correcly.
23561
23562 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23563
23564         * icall.c:
23565         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
23566         (ves_icall_System_Environment_get_MachineName): removed warning when
23567         compiling under cygwin.
23568
23569 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23570
23571         * object.c: fixed field_get_value() for reference types.
23572
23573 2002-08-22  Dick Porter  <dick@ximian.com>
23574
23575         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
23576         Don't free a buffer while it's still needed.  Patch from Jonathan
23577         Liger <Jonathan.liger@wanadoo.fr>
23578
23579 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
23580
23581         * icall.c (ves_icall_System_Environment_get_Platform): Add new
23582         internal call.
23583
23584 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
23585
23586         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
23587         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
23588
23589         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
23590         we call unmanaged code which throws exceptions.
23591
23592 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23593
23594         * appdomain.h: added per-domain entry_assembly.
23595         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
23596         arguments.
23597         * icall.c: Assembly::GetEntryAssembly icall.
23598         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
23599         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
23600
23601 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23602
23603         * appdomain.h, gc.c: added mono_domain_finalize ().
23604
23605 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23606
23607         * object.c:
23608         (mono_print_unhandled_exception): changed g_warning by g_printerr
23609         because g_log has a 1024 characters limit (yeah, i got a big stack
23610         trace). Don't print exception name, that should be in ToString 
23611         returned string.
23612
23613 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23614
23615         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
23616         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
23617
23618 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23619
23620         * object.c:
23621         (mono_print_unhandled_exception): after previous commit, i realized
23622         that MS calls ToString on the exception. I changed this function to
23623         do that. This way we get stack_trace for free.
23624
23625 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23626
23627         * object.c:
23628         (mono_print_unhandled_exception): invoke Message property instead of
23629         getting 'message' field from Exception. Don't allocate memory for
23630         'trace' and 'message' if not needed.
23631
23632 2002-08-18  Dick Porter  <dick@ximian.com>
23633
23634         * unicode.c: Fix asserts to match Encoder.cs checks
23635
23636 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23637
23638         * marshal.c: fix unaligned store issue and a few wrong
23639         opcode argument types.
23640
23641 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23642
23643         * icall.c: added GetUninitializedObjectInternal internal call.
23644
23645 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
23646
23647         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
23648         to the right domain.
23649
23650 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
23651
23652         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
23653
23654         * class.c (class_compute_field_layout): set blittable to false for Strings
23655
23656         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
23657
23658 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23659
23660         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
23661         first chunk of code to create types at runtime. Code to
23662         handle ReflectedType/DeclaringType. Make reflection handles
23663         domain specific.
23664
23665 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
23666
23667         * class.c: set correct name in arrays.
23668
23669 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
23670
23671         * appdomain.c (mono_domain_transfer_object): make it work with
23672         valuetypes. bug fixes.
23673
23674 2002-08-12  Dick Porter  <dick@ximian.com>
23675
23676         * object.h: Rename some parameters to avoid c++ keywords (Patch
23677         from Joseph Wenninger <kde@jowenn.at>)
23678
23679 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
23680
23681         * icall.c: added icall to implement Assembly.GetFile*.
23682
23683 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23684
23685         * reflection.h, reflection.c: code to embed managed resources.
23686
23687 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23688
23689         * class.c: move all the type size stuff into
23690         class_compute_field_layout().
23691
23692 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23693
23694         * class.c: ensure enums have always the correct instance size.
23695         * unicode.c: remove wrong assert.
23696
23697 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23698
23699         * assembly.c: fix mem corruption issue.
23700         * image.h, image.c: added mono_image_get_resource () to access
23701         managed resources.
23702         * icall.c: implemented Assembly.EntryPoint property and some
23703         Managed Resources related internalcalls.
23704
23705
23706 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23707
23708         * image.c, image.h: impemented mono_image_get_entry_point ().
23709         * appdomain.c: use mono_image_get_entry_point.
23710
23711 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23712
23713         * reflection.c: support the object type argument when loading
23714         custom attributes.
23715
23716 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
23717
23718         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
23719         String as return type.
23720
23721 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
23722
23723         * reflection.c: fix encoding of named args for custom attrs to match
23724         the ms implementation. Read them back when instantiating custom
23725         attributes.
23726
23727 2002-08-02  Radek Doulik  <rodo@ximian.com>
23728
23729         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
23730         by Dietmar as quick fix
23731         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
23732         16 as stack size, used on more places as quick fix before Dietmar
23733         will fix it properly
23734
23735 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23736
23737         * object.h, object.c: added accessors for fields and properties.
23738
23739 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23740
23741         * class.c, class.h: made mono_class_get_field_from_name ()
23742         loop on parent types.
23743         Added mono_class_get_property_from_name ().
23744
23745 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23746
23747         * class.c, class.h: move the code to setup the type vtable in its own
23748         function so that it can be reused also for types created at runtime.
23749         Eliminate the "class" identifier from the header file.
23750         * reflection.c: setup the vtable for enums so that we can create
23751         objects for use in SetConstant ().
23752
23753 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
23754
23755         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
23756         instead of the delegate itself as this pointer (bug #28383)
23757
23758 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
23759
23760         * marshal.c (mono_marshal_get_managed_wrapper): added return type
23761         conversions.
23762
23763 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23764
23765         * loader.c: don't set the pinvoke bit on icalls.
23766
23767 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
23768
23769         * debug-helpers.c (mono_method_full_name): only print a number to
23770         indicate wrapper type (so that the output is more readable in traces).
23771
23772 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
23773
23774         * class.c (mono_class_init): include method override patch from Paolo
23775
23776 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
23777
23778         * icall.c: fixed GetTypeCode().
23779
23780 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
23781
23782         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
23783         use real delegate invoke function to make it work with multicast
23784         delegates (fix bug# 28291).
23785
23786 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23787
23788         * object.c: load constant strings.
23789
23790 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23791
23792         * reflection.c: no magic numbers.
23793         * tabledefs.h: security action enum.
23794
23795 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23796
23797         * assembly.c: fix possible memory corruption.
23798
23799 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23800
23801         * reflection.h, reflection.c: added support for linking resources.
23802         * verify.c: check we have an updated corlib.
23803
23804 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
23805
23806         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
23807         string arrays.
23808         (mono_marshal_string_array): null terminate unmanaged string arrays.
23809         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
23810
23811 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23812
23813         * icall.c: Type.GetType () can now return also types from the
23814         calling assembly.
23815
23816 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23817
23818         * loader.h, loader.c: stack walking support.
23819         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
23820         GetCallingAssembly.
23821
23822 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
23823
23824         * marshal.c: added optimisations for blittable types 
23825
23826         * class.c (mono_array_class_get): do not set blittable attribute on arrays
23827         (mono_class_setup_mono_type): set blittable attribute for single
23828         and double.
23829
23830         * marshal.c (mono_string_utf8_to_builder): impl.
23831         (mono_string_builder_to_utf8): impl.
23832         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
23833
23834 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
23835
23836         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
23837         (mono_marshal_get_managed_wrapper): impl. byref types
23838
23839 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23840
23841         * icall.c:
23842         (search_method): don't display debug message. 
23843
23844 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23845
23846         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
23847
23848 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23849
23850         * appdomain.c: set the missing filename when throwing exception.
23851
23852 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23853
23854         * metadata.c (mono_type_size): code cleanup
23855         (mono_type_stack_size): removed some test code
23856
23857 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
23858
23859         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
23860         mono_get_exception_file_not_found now.
23861
23862         * exception.c (mono_exception_from_name_two_strings): New version
23863         that will call a constructor with two string arguments. 
23864         (mono_get_exception_file_not_found): New helper routine, used to
23865         report file-not-found errors.
23866
23867 2002-07-20  Dick Porter  <dick@ximian.com>
23868
23869         * process.h:
23870         * process.c: Pass file handles to CreateProcess
23871         
23872         * icall.c:
23873         * file-io.h:
23874         * file-io.c: Implemented CreatePipe
23875
23876 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23877
23878         * metadata.c (mono_get_param_info): set alignment for value types
23879
23880 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23881
23882         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
23883         Constify mono_domain_assembly_open().
23884         * loader.c: handle null namespace in icalls.
23885
23886 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23887
23888         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
23889         (emit_str_to_ptr_conv): marshal object as structs
23890
23891         * metadata.c (mono_type_to_unmanaged): marshal object as structs
23892
23893         * marshal.c (mono_marshal_get_runtime_invoke): support value types
23894
23895 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
23896
23897         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
23898         (mono_marshal_get_native_wrapper): we an now return value types
23899
23900 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23901
23902         * verify.c: more checks implemented.
23903
23904 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
23905
23906         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
23907         (fix bug #27695)
23908         (mono_marshal_get_native_wrapper): allow byref arguments
23909         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
23910         impl. PtrToStringXXX methods
23911         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
23912         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
23913         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
23914         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
23915         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
23916
23917 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23918
23919         * reflection.c: fix buglet in parsing an assembly name.
23920
23921 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
23922
23923         * marshal.c (emit_ptr_to_str_conv): first impl.
23924
23925 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23926
23927         * object.c, class.h: cache the vtable in the class as suggested by
23928         vargaz@freemail.hu (Zoltan Varga).
23929
23930 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23931
23932         * class.h, loader.c: added mono_field_from_token().
23933         * verify.c: first cut of type checking code.
23934
23935 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
23936
23937         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
23938
23939 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
23940
23941         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
23942         (fix bug #27782)
23943         (mono_marshal_get_remoting_invoke): impl.
23944         (mono_delegate_begin_invoke): impl.
23945         (mono_mb_emit_save_args): impl.
23946         (mono_delegate_end_invoke): impl.
23947         (mono_marshal_get_delegate_begin_invoke):
23948         (mono_marshal_get_delegate_end_invoke):
23949         (mono_marshal_get_delegate_invoke): generate a special name for
23950         those methods (including the signature) and associate them whith
23951         the delegate class. 
23952
23953 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
23954
23955         * reflection.[ch]: 
23956         (mono_reflection_type_from_name): now it has a MonoImage parameter
23957         which is used as the default image to search the type in. If the image
23958         is NULL or getting the type from it fails, it defaults to corlib.
23959
23960         * icall.c: changed 1 call to mono_reflection_type_from_name to match
23961         new parameter.
23962
23963 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23964
23965         * reflection.c: update the parameter table index.
23966
23967 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23968
23969         * domain.c: don't include the mark byte in the string hash.
23970
23971 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23972
23973         * icall.cs: icall for Type.GetTypeCode ().
23974         * verify: a couple of fixes and disabled local initialization checks.
23975
23976 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
23977
23978         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
23979
23980         * debug-helpers.c (mono_method_full_name): print the type of the
23981         runtime wrapper
23982
23983         * metadata.c (mono_signature_hash): a hash function for signatures
23984         (mono_signature_hash): better hash algorithm
23985
23986         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
23987
23988         * debug-helpers.c (mono_method_full_name): this can now generate
23989         method names with signatures
23990
23991         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
23992         method dont have this pointers.
23993
23994 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23995
23996         * reflection.c: fixup typebuilder tokens.
23997         * image.c: fix buglet.
23998         * marshal.h: remove whitespace.
23999         * metadata.h, metadata.c: reinstate code that was removed.
24000         * verify.c: handle catch directives and fix another couple of bugs.
24001
24002 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
24003
24004         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
24005         (mono_marshal_get_native_wrapper): make it comp. with the old code
24006         (mono_marshal_get_native_wrapper): support boolean
24007         (mono_marshal_get_managed_wrapper): support more types
24008
24009 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
24010
24011         * class.c (class_compute_field_layout): compute class->blittable attribute.
24012
24013 2002-07-09  Dick Porter  <dick@ximian.com>
24014
24015         * threads.c: Make the thread cleaning up cope with threads that
24016         call ExitThread()
24017
24018 2002-07-08  Radek Doulik  <rodo@ximian.com>
24019
24020         * reflection.c (method_encode_code): use non-translated values to
24021         compute finally_start, this fixes exception handling on ppc, yay!
24022
24023         * decimal.h (struct signscale): fix endianess
24024
24025 2002-07-07  Radek Doulik  <rodo@ximian.com>
24026
24027         * reflection.c: swap box_val and not val
24028
24029 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24030
24031         * reflection.c, reflection.h: handle full assembly info in type name.
24032         Handle Type arguments when loading custom attributes.
24033         * icall.c: updated to use new mono_reflection_type_from_name () method.
24034
24035 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24036
24037         * loader.c:
24038         (method_from_memberref): also print assembly name when method not found.
24039
24040 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24041
24042         * icall.c:
24043         (ves_icall_TypeGetProperties): fixed bug #27473. 
24044
24045 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24046
24047         * reflection.c: display image name and token when cannot find the
24048         .ctor for an attribute.
24049
24050 2002-07-05  Martin Baulig  <martin@gnome.org>
24051
24052         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24053
24054 2002-07-04  Dick Porter  <dick@ximian.com>
24055
24056         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
24057         compile on mingw.  This will cause mingw builds to not wait for
24058         subthreads to terminate after the main thread does.  I've lodged a
24059         bug with the mingw developers for them to wrap OpenThread().
24060
24061 2002-07-03  Dick Porter  <dick@ximian.com>
24062
24063         * threads.c: Store thread IDs instead of handles, because
24064         GetCurrentThread() returns a pseudohandle and therefore stores
24065         useless values.  mono_thread_cleanup() continues checking the
24066         array of threads until it is empty, to cope with subthreads
24067         spawning new threads after the main thread has finished.
24068
24069         * profiler.h:
24070         * profiler.c:
24071         * profiler-private.h: Pass the thread ID to thread profiler
24072         functions, instead of a handle
24073
24074 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24075
24076         * verify.c: fixes to make it more usable.
24077         * pedump.c: added --verify code to verify IL code in an assembly.
24078
24079 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24080
24081         * reflection.c: turn errors into warnings to allow compiling corlib.
24082
24083 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24084
24085         * reflection.c: add special cases to compile corlib.
24086
24087 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24088
24089         * reflection.c: handle properties with only a set method.
24090
24091 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24092
24093         * opcodes.h: add enum with opcodes in opval order.
24094
24095 2002-07-01  Dick Porter  <dick@ximian.com>
24096         
24097         * object.h:
24098         * object.c (mono_runtime_run_main): Removed unneeded argument
24099
24100 2002-06-28  Martin Baulig  <martin@gnome.org>
24101
24102         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24103
24104 2002-06-27  Dick Porter  <dick@ximian.com>
24105
24106         * threads.c: Store the handle in both the parent thread and in the
24107         subthread, to minimise the time between starting a new thread and
24108         storing its ID.
24109
24110 2002-06-26  Dick Porter  <dick@ximian.com>
24111
24112         * appdomain.c (mono_runtime_cleanup): Close the socket library
24113         after all the threads have finished, not before
24114
24115 2002-06-26  Martin Baulig  <martin@gnome.org>
24116
24117         * debug-symfile.c (mono_debug_find_source_location): Added
24118         `guint32 *line_number' argument.  If it's not NULL, store the line number
24119         there and return the file name without the line number.
24120
24121 2002-06-25  Dick Porter  <dick@ximian.com>
24122
24123         * icall.c:
24124         * process.h:
24125         * process.c: Process forking and other support functions
24126
24127 2002-06-25  Dick Porter  <dick@ximian.com>
24128
24129         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
24130         things dont happen when the image is closed.
24131         (mono_image_lookup_resource): Walk the resource section looking
24132         for a particular entry
24133
24134         * cil-coff.h: PE resource section decoding
24135
24136 2002-06-25  Dick Porter  <dick@ximian.com>
24137         
24138         * assembly.h:
24139         * assembly.c: 
24140         (mono_assembly_foreach): Accessor functions to walk the list of
24141         loaded assemblies
24142         (mono_assembly_set_main):
24143         (mono_assembly_get_main): Process methods need to know which
24144         assembly is the "main" one
24145
24146         * object.c (mono_runtime_run_main): Record the main assembly
24147
24148         * debug-helpers.c: Fix typo
24149
24150 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
24151
24152         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
24153         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
24154
24155 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24156
24157         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
24158
24159 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
24160
24161         * image.c (do_mono_image_open): Initialize reference count,
24162         otherwise we leak the MonoImage.
24163
24164 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24165
24166         * reflection.c: small tweak to handle self-hosting.
24167
24168 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24169
24170         * reflection.c: fix type name parse code.
24171
24172 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24173
24174         * reflection.c: break out of the loop.
24175         * image.c: special case corlib.
24176
24177 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24178
24179         * reflection.c: add all the custom attrs at the end to ensure the
24180         ctors have been properly initialized when the attributes are defined
24181         in the current assembly.
24182
24183 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24184
24185         * reflection.c: handle correctly multiple-nested types.
24186
24187 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24188
24189         * row-indexes.h: fix typos.
24190         * reflection.c: adjust for typos and fix method_def_or_ref
24191         encoding in MethodImpl table.
24192
24193 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24194
24195         * reflection.c: fix entry point patching (thanks Serge!).
24196
24197 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
24198
24199         * verify.c: add check for System.Exception
24200
24201 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24202
24203         * image.c, class.c: minifix for code just c&p'ed.
24204         * reflection.c: warning fix.
24205         * object.h, loader.h, domain.c: load also StringBuilder.
24206
24207 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24208
24209         * marshal.h, marshal.c: some support code to handle complex marshaling.
24210
24211 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24212
24213         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
24214         Better signatures with vtable error dump.
24215
24216 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
24217
24218         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
24219
24220 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
24221
24222         * icall.c (ves_icall_Type_GetField): impl.
24223
24224 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24225
24226         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
24227         to retrieve a marshal description blob for a field or param.
24228
24229 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24230
24231         * reflection.h, reflection.c: change order of nested type emission
24232         to avoid table corruption. The NestedTypes table is sorted.
24233         * icall.c: change order of GetConstructor results to workaround mcs bug.
24234
24235 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24236
24237         * reflection.h, reflection.c: handle field and param marshal
24238         information.
24239
24240 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24241
24242         * icall.c, marshal.c marshal.h: more Marshal class implementation.
24243
24244 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24245
24246         * reflection.c: fix call convention.
24247
24248 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24249
24250         * reflection.h, reflection.c: mono_image_get_memberref_token()
24251         takes a type instead of a class, now. Added
24252         mono_image_get_array_token() to create tokens for the special
24253         multi-dim array methods.
24254
24255 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24256
24257         * assembly.c: handle modules (no assembly table). Split
24258         loading references in its own function.
24259         * class.c: handle moduleref resolution scope.
24260         * image.c, image.h: cache module name in image.
24261
24262 2002-06-07  Martin Baulig  <martin@gnome.org>
24263
24264         * reflection.c (mono_image_get_type_info): Only add a class layout entry
24265         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
24266
24267 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24268
24269         * icall.c: more signature fixes that used uint instead of int.
24270
24271 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24272
24273         * reflection.c: fixed signature of field refs.
24274
24275 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24276
24277         * class.c, reflection.c: handle typerefs of nested types
24278         (both on read and when writing files).
24279
24280 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24281
24282         * icall.c: fix method signatures that tried to workaround the previous
24283         typo, d'oh!
24284
24285 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24286
24287         * debug-helpers.c: fix typo.
24288
24289 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24290
24291         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
24292         rewrote the PE/COFF writing code (our programs are understood by the
24293         ms runtime, now).
24294
24295 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24296
24297         * gc.c, gc.h, icall.c: weakreference support.
24298
24299 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24300
24301         * Makefile.am, mono-config.c: use $(sysconfdir).
24302
24303 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24304
24305         * icall.c: changed default precision of Double.ToString() to 15.
24306         Fixed memory leak. Unified with Single.ToString.
24307
24308 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24309
24310         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
24311
24312 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24313
24314         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
24315         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
24316         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
24317         and myself.
24318
24319 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24320
24321         * debug-symfile.c, sysmath.c: yet more compilation fixes.
24322
24323 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24324
24325         * reflection.c, socket-io.c: more compilation fixes.
24326
24327 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24328
24329         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
24330         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
24331         unicode.c: warning and compiler compatibility fixes.
24332
24333 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24334
24335         * class.h, metadata.c: fixed warnings/compilation errors.
24336
24337 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24338
24339         * Makefile.am, mono-config.c, mono-config.h: configuration file
24340         support routines.
24341         * loader.c, loader.h: make Dll mapping configurable at runtime in the
24342         config file. Export methods to insert and lookup mappings.
24343
24344 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24345
24346         * reflection.c: handle types and boxed objects in custom attr
24347         constructors.
24348
24349 2002-05-30  Martin Baulig  <martin@gnome.org>
24350
24351         * debug-symfile.c
24352         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
24353
24354 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
24355
24356         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
24357         to lookup the implmap row for a P/Invoke method.
24358         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
24359         P/Invoke method from the runtime on an as needed basis.
24360
24361 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
24362
24363         * metadata.c (mono_metadata_parse_signature): impl.
24364
24365 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24366
24367         * class.c: handle .pack directive.
24368
24369 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24370
24371         * object.c: initialize static fields with RVA data.
24372
24373 2002-05-25  Martin Baulig  <martin@gnome.org>
24374
24375         * debug-symfile.c
24376         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
24377
24378 2002-05-24  Martin Baulig  <martin@gnome.org>
24379
24380         * debug-symfile.c
24381         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
24382         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
24383         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
24384
24385 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24386
24387         * object.c: special case string ctros in invoke.
24388         * gc.c: silly whitespace changes.
24389
24390 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
24391
24392         * threadpool.[ch]: impl. a threadpool that can
24393         be used by mint and mono.
24394
24395 2002-05-22  Martin Baulig  <martin@gnome.org>
24396
24397         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
24398         The first argument is now a `MonoReflectionModuleBuilder *', the return
24399         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
24400         `methods' field to get the method builder.  The `token' argument is the
24401         unfixed token.
24402
24403         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
24404         invalid characters instead of g_assert_not_reached()ing.  This seems
24405         to be the behaviour of mscorlib.
24406
24407 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
24408
24409         * object.c (mono_runtime_invoke_array): applied patch from Rachel
24410         Hestilow to fix bug #25104
24411
24412 2002-05-21  Martin Baulig  <martin@gnome.org>
24413
24414         * debug-symfile.c (mono_debug_find_source_location): New function.
24415         Looks up an IL offset in the line number table and returns the source
24416         location as a string.
24417
24418 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24419
24420         * icall.c:
24421         (mono_double_ToStringImpl): changed %f by %g until we have something
24422         better.
24423
24424 2002-05-21  Nick Drochak  <ndrochak@gol.com>
24425
24426         * icall.c : Use different name for Math.Pow's icall.  Needed to check
24427         parameters first in C#.
24428
24429 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24430
24431         * icall.c, reflection.h: added icall to get info about an event.
24432
24433 2002-05-20  Radek Doulik  <rodo@ximian.com>
24434
24435         * object.c (mono_value_box): don't use memcpy for boxing on BIG
24436         endian
24437         (mono_value_box): don't use memcpy for small sizes on
24438         architectures with unaligned access
24439
24440 2002-05-20  Martin Baulig  <martin@gnome.org>
24441
24442         * reflection.c (mono_reflection_setup_internal_class): Don't crash
24443         if `tb->parent == NULL'.
24444         (mono_reflection_create_internal_class): New function.  This is
24445         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
24446         for enum types.
24447
24448         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
24449         New interncall.
24450
24451 2002-05-19  Martin Baulig  <martin@gnome.org>
24452
24453         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
24454         argument to get the length, don't default to the array length.
24455
24456 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
24457
24458         * assembly.c (mono_assembly_setrootdir): New function used to
24459         override the MONO_ASSEMBLIES directory.
24460
24461 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24462
24463         * icall.c: ValueType_GetHashCode() initialize local var.
24464
24465 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24466
24467         * reflection.c: sort custom attributes table.
24468
24469 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24470
24471         * reflection.c: support named args in custom attributes (write support).
24472
24473 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24474
24475         * reflection.c: fix finally position calculation.
24476
24477 2002-05-15  Radek Doulik  <rodo@ximian.com>
24478
24479         * reflection.c: fixed endianess at many places
24480
24481         * icall.c (ves_icall_InitializeArray): comment out debug msg
24482
24483 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
24484
24485         * object.c (mono_unhandled_exception): new function to handle
24486         unhandled exceptions.
24487         (mono_unhandled_exception): call the UnhandledException event.
24488         (mono_runtime_delegate_invoke): impl.
24489
24490 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
24491
24492         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
24493         returns the RVA, not the direct pointer to the data. Handle the case
24494         when the class size is fixed.
24495
24496 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24497
24498         * reflection.c: fix some endianess issues.
24499
24500 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
24501
24502         * object.c (mono_runtime_invoke): is now able to catch exceptions.
24503
24504         * threads.c (mono_thread_init): added a callback which is invoked
24505         at thread start.
24506
24507 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24508         
24509         * icall.c: make GetHashCode return non-negative values.
24510
24511 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24512
24513         * object.c, icall.c, gc.c: revert to address-based hashcode.
24514
24515 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
24516
24517         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
24518
24519 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24520
24521         * icall.c, class.c: special case <Module>.
24522
24523 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
24524
24525         * icall.c: fix bug in GetNow().
24526
24527 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
24528
24529         * object.c (mono_runtime_class_init): make sure that we call all
24530         static class constructors.
24531
24532 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24533
24534         * reflection.c: sort methodsemantics table.
24535
24536 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24537
24538         * reflection.h, reflection.c: honour init locals setting.
24539
24540 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
24541
24542         * icall.c: copied Double ToStringImpl for Single ToStringImpl
24543
24544 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24545
24546         * reflection.c: support ContructorBuilders in attribute blob creation.
24547
24548 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24549
24550         * reflection.c: some changes to build a binary that can be run
24551         directly in windows.
24552
24553 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24554
24555         * loader.c: print a big message when an icall can't be found.
24556
24557 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24558
24559         * string-icalls.c: fix bug 24248.
24560
24561 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24562
24563         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
24564         icall.c, reflection.h: separate assembly loading by pathname and by
24565         assembly name. Use the MONO_PATH env var to search for assemblies.
24566
24567 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24568
24569         * assembly.c, image.h: add some support for assemblies
24570         with multiple modules.
24571         * class.c, class.h: export mono_class_from_typeref().
24572         * loader.c: remove duplicated code and use mono_class_from_typeref(),
24573         instead.
24574
24575 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24576
24577         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
24578         documentation says (the ECMA one is correct).
24579
24580 2002-05-02  Dick Porter  <dick@ximian.com>
24581
24582         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
24583         Don't name the synchronisation mutex.
24584
24585 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
24586
24587         * rand.c
24588         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
24589         Make the prototypes match.
24590         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
24591         Same.
24592
24593         * icall.c
24594         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
24595         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
24596         all systems have tm.tm_zone, so use strftime() with %Z to print
24597         the timezone abreviation into a temp string.
24598
24599         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
24600         rather than mono_array_addr() on a MonoString on Big Endian
24601         machines.
24602
24603 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
24604
24605         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
24606         fix bug 24041
24607
24608 2002-04-30  Dick Porter  <dick@ximian.com>
24609
24610         * socket-io.c: Cope with SOCKET being an integer rather than a
24611         pointer now.
24612
24613         * threads.c: Added Thread_free_internal, to deal with thread
24614         handle cleanup.  Moved calls to handle_store() and handle_remove()
24615         to start_wrapper(), so each can only be called once.  Allocate
24616         synchronisation blocks with GC_malloc(), and use GC finalisation
24617         to close the handles.
24618
24619         * icall.c: added System.Threading.Thread::Thread_free_internal
24620
24621 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24622
24623         * icall.c: support Environment.Exit, CommandLineArgs().
24624
24625 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24626
24627         * object.c, object.h: added mono_runtime_run_main () and
24628         mono_runtime_get_main_args () for use in System.Environment.
24629
24630 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24631
24632         * gc.c: fix thinko, enable actual finalization since the jit is now
24633         fixed.
24634
24635 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24636
24637         * gc.c, object.c: take into account that an object may be offset wrt the address
24638         returned by GC_malloc().
24639
24640 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
24641
24642         * image.c: handle files without entries in the assembly table (modules).
24643
24644 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
24645
24646         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
24647         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
24648         allowed to be null when it's System.Object class setup.
24649
24650 2002-04-27  Martin Baulig  <martin@gnome.org>
24651
24652         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
24653         if `tb->parent == NULL' rather than crashing.
24654
24655 2002-04-28  Nick Drochak  <ndrochak@gol.com>
24656
24657         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
24658         calling acos() where asin() should have been called.
24659
24660 2002-04-26  Martin Baulig  <martin@gnome.org>
24661
24662         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
24663         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
24664         there's a subdirectory called `System', but we don't want to read that
24665         subdirectory as an assembly.
24666
24667 2002-04-25  Martin Baulig  <martin@gnome.org>
24668
24669         * debug-symfile.c: Reflect latest MonoString changes.
24670
24671 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24672
24673         * rand.c, rand.h: instance method icalls need to have an explicit
24674         this pointer as first argument in the C implementation.
24675
24676 2002-04-25  Nick Drochak <ndrochak@gol.com>
24677
24678         * icall.c: Fix typo in map for GetNonZeroBytes
24679
24680 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24681
24682         * string-icalls.c : String does now passes unit tests without any 
24683         errors, the following changes has been made:
24684         
24685         Implemented replace methods.
24686         Renaming of methods to (try) follow the standard.
24687         Fixed compare ordinal
24688         Made all memory allocated directly to function instead of via icall function.
24689         Small performance fix in is_in_array function
24690                         
24691  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
24692
24693         c (mono_string_Internal_ctor_charp_int_int):
24694         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
24695         sindex < 0, throw ArgumentOutOfRangeException instead of
24696         ArgumentNullException.
24697
24698         Added new check for length == 0, however
24699         I need to make it return String.Empty from the C code.
24700         
24701         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
24702         that calculate the length for us here.
24703         
24704         (mono_string_Internal_ctor_sbytep_int_int): Replaced
24705         mono_string_new_utf16 with mono_string_new, since value is utf8.
24706
24707 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24708
24709         * object.c: register the object for finalization if needed.
24710         Allocate one more char in the string for the terminating 0 char.
24711
24712 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24713
24714         * class.c, class.h, image.c: check if a type implemenst a destructor.
24715         Use the proper key for array class lookups.
24716         * icall.c: register the icalls in the System.GC class.
24717         * gc.c, gc.h: GC-related functions and icalls.
24718
24719 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24720
24721         * icall.c:
24722         * socket-io.c:
24723         * unicode.c: free some strings gotten from mono_string_to_utf8 and
24724         changed a couple of free () by g_free ().
24725
24726         * decimal.c: one-liner in the comments for decimal2string ().
24727
24728 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24729
24730         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
24731
24732 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24733
24734         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
24735         * object.c (mono_runtime_invoke_array) : handle null in params
24736
24737 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24738
24739         * string-icalls.c: fixed bug in split (one off bug)
24740
24741 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24742
24743         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
24744         * icalls.c: added String::Equals as internal method
24745
24746 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24747
24748         * threads.c: fixed bug in the double interlocked functions
24749
24750 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
24751
24752         * threads.c: implemented all of the new interlocked icalls.
24753         * string-icalls.c: fix a bug in insert.
24754         * icalls.c: added the icalls for interlocked, removed old string functions.
24755         
24756 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24757
24758         * loader.c: fix off-by-one error when reading argument names.
24759
24760 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24761
24762         * profiler.c: win32 counter implementation (untested).
24763         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
24764         (the latter needs testing and more complete impl. from win32 folks).
24765
24766 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
24767
24768         * object.c: mono_array_new_full workaround mono_array_class_get
24769         problem.
24770
24771 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24772
24773         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
24774         * object.h (mono_string_chars): Changed casting type.
24775
24776 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24777
24778         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
24779                            method signatures to use gunichar2 instead of gint16.
24780
24781 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
24782
24783         * object.h, object.c: domain-specific versions of mono_object_new and
24784         mono_array_new.
24785
24786 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
24787
24788         * object.c: changed String layout
24789
24790         * string-icalls.c (mono_string_Internal_ctor_chara): added
24791         internal string constructors.
24792
24793 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
24794
24795         * threads.c: pass 'this' to the thread start routine.
24796
24797 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24798
24799         * string-icalls.c: fix IndexOf and LastIndexOf. Now
24800         InternalCompareStr don't call twice mono_string_cmp_char for the last
24801         character. Improved performance in mono_string_cmp_char.
24802
24803 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24804
24805         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
24806         code into its own library: libmonoruntime.
24807
24808 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
24809
24810         * object.h, object.c: changed array format so that szarrays do not
24811         require a bounds structure.
24812         * icall.c, appdomain.c: support for new szarray format.
24813
24814 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24815
24816         * metadata.c: compare also the retuns type when comparing signatures:
24817         we didn't do this as an optimization since really overloaded methods
24818         must differ also in the arguments, but this doesn't work with
24819         low-level IL code (or when using explicit conversion operators: see
24820         bug#23498 for an example).
24821
24822 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24823
24824         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
24825
24826 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24827
24828         * icall.c: make MonoType::GetElementType its own icall.
24829
24830 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24831
24832         * icall.c: remove MonoMethod_get_Name().
24833         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
24834         object.
24835
24836 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24837
24838         * string-icalls.c: optimized a few methods.
24839
24840 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24841
24842         * icall.c: added all new string internal calls
24843         * string-icalls.c: added, new string internal call implementation.
24844         * object.c: added mono_string_new_size for allocating a string a size
24845
24846 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
24847
24848         * object.c (mono_object_isinst): use the same code as in the
24849         optimized x86 version.
24850
24851 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24852
24853         * profiler.c: TSC-based timer code (faster and more accurate).
24854         Not hooked up in configure, yet (set USE_X86TSC to 1).
24855
24856 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
24857
24858         * profiler.c, profiler.h: track time spent compiling methods.
24859         * threads.c: track thread creation/destruction.
24860
24861 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
24862
24863         * profiler.c, profiler.h, profiler-private.h: profiling interface
24864         and sample implementation. Moved here so that it can be used also by
24865         the jit.
24866
24867 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
24868
24869         * reflection.c, reflection.h: keep types and other handles separate in
24870         the hash tables for referred tokens. Add guid for modules.
24871
24872 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24873
24874         * assembly.c: fix bugs found with valgrind.
24875         * metadata.h, metadata.c: added mono_metadata_guid_heap().
24876
24877 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
24878
24879         * threads: added icall support for getting current domain for
24880                    the thread.
24881  
24882 2002-04-13  Martin Baulig  <martin@gnome.org>
24883
24884         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
24885         (MonoDebugVarInfo): Added `index' field for register based addresses.
24886         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
24887         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
24888         `MonoDebugVarInfo *params' and `guint32 this_offset' with
24889         `MonoDebugVarInfo *this_var'.
24890
24891         * debug-symfile.c (relocate_variable): New static function to write
24892         a location description for a local variable or method parameter.
24893
24894 2002-04-12  Martin Baulig  <martin@gnome.org>
24895
24896         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
24897         stack offset and begin/end scope address of a local variable.
24898         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
24899         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
24900         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
24901
24902         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
24903         Added new relocation types for start/end scope of a local variable.
24904
24905 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24906
24907         * object.h: add mono_object_domain() macro.
24908         * reflection.c: handle typespecs.
24909         * icall.c: MonoMethod::get_Name() implementation.
24910
24911 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24912
24913         * icall.c: String::GetHashCode() icall implementation.
24914
24915 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24916
24917         * icall.c: String::IndexOfAny icall.
24918         * object.c, object.h: make array->max_length more useful.
24919         Intrduced mono_object_class() and mono_string_length() macros.
24920
24921 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24922
24923         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
24924         instead of g_unichar_isdigit.
24925
24926 2002-04-11  Nick Drochak  <ndrochak@gol.com>
24927
24928         * icall.c: Implement a simple Double.ToString().
24929
24930 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24931
24932         * appdomain.h: only io-layer.h is supposed to be included.
24933         * icall.c: explicitly import environ. Fix warning.
24934
24935 2002-04-10  Nick Drochak  <ndrochak@gol.com>
24936
24937         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
24938                 return true even if it's not Daylight Savings time.
24939                 Only return false for the case where the function isn't
24940                 implemented for a plaform (read Windows).
24941
24942 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24943
24944         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
24945         data with a mutex.
24946
24947 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
24948
24949         * mempool.c (mono_mempool_alloc): only use g_malloc when
24950         absolutely necessary.
24951
24952 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
24953
24954         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
24955
24956         * class.c (mono_class_vtable): use domain mempool to allocate vtable
24957         (mono_class_proxy_vtable): use domain mempool
24958
24959 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24960
24961         * appdomain.h, appdomain.c: split initialization that requires the
24962         execution engine support into mono_runtime_init().
24963
24964 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
24965
24966         * class.c (mono_class_init): don't include vtable inside MonoClass
24967         to save some memory, gather some statistics.
24968         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
24969
24970 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24971
24972         * icall.c: internalcall implementation for ValueType.Equals().
24973
24974 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
24975
24976         * object.c (mono_message_init): moved 
24977         (mono_runtime_exec_main): new arch. independent impl.
24978         (mono_runtime_invoke_array): new method - like
24979         mono_runtime_invoke, but you can pass an array of objects.
24980         (mono_remoting_invoke): new arch. independent impl.
24981         (mono_message_invoke): new arch. independent impl.
24982         (mono_runtime_class_init): new arch. independent impl.
24983         (mono_runtime_object_init): new arch. independent impl.
24984
24985 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24986
24987         * metadata.c, object.c, reflection.c: documented the exported
24988         functions.
24989
24990 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
24991
24992         * icall.c: simpler code to pass the assembly builder data to corlib.
24993         Implement GetNestedTypes() internalcall.
24994
24995 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24996
24997         * class.c: warn if a type can't be loaded.
24998
24999 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
25000
25001         * image.h: typedef MonoImageOpenStatus
25002         * types.h: removed unused file
25003         
25004 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
25005
25006         * icall.c: Enum_ToObject accepts enum value arguments.
25007
25008 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25009
25010         * class.c: move initialization of properties, events and nested
25011         classes, so that they happen for interfaces, too.
25012
25013 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25014
25015         * icall.c: cleanup some ugly casts in Array_SetValue*.
25016
25017 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25018
25019         * icall.c: the values array fro enums is of the correct type, now.
25020         Implement (correctly) getFullName instead of assQualifiedName for
25021         MonoType.
25022         * reflection.h, reflection.c: added mono_type_get_name ().
25023
25024 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25025
25026         * assembly.c, image.h: for each MonoImage, record from wich assembly
25027         it was loaded.
25028         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
25029         Make Type.Assembly work.
25030
25031 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
25032
25033         * debug-symfile.h: use char* instead of gpointer to avoid
25034         unnecessary casts.
25035
25036         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
25037
25038         * icall.c (ves_icall_InternalExecute): impl. FielSetter
25039         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
25040
25041 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
25042
25043         * icall.c (mono_message_init): impl. (code cleanup)
25044         (ves_icall_InternalExecute): impl. FieldGetter
25045
25046         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
25047         defined we call all (non-static)methods through the vtable. 
25048
25049 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
25050
25051         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
25052         finalizer even though the memory is still referenced (and the chunk of
25053         memory is not freed).
25054
25055 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25056
25057         * assembly.c: fix brokeness.
25058
25059 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
25060
25061         * class.c: kill some warnings. Check explicit interface method
25062         implementation also without considering the namespace.
25063         Load also literal strings in static class data.
25064
25065 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
25066
25067         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
25068         (default_assembly_name_resolver): Make the resolver take the
25069         "base" directory where the assembly was originally defined, so we
25070         can load DLLs that are in the same directory as the assembly that
25071         is being referenced.
25072
25073 2002-03-28  Dick Porter  <dick@ximian.com>
25074
25075         * file-io.h: 
25076         * file-io.c:
25077         * socket-io.c: 
25078         * unicode.h: 
25079         * unicode.c: Warning cleanups
25080
25081 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
25082
25083         * object.h, reflection.h: use the correct type instead of MonoObject.
25084
25085 2002-03-28  Martin Baulig  <martin@gnome.org>
25086
25087         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
25088         (mono_debug_update_symbol_file): Initialize classes if necessary.
25089
25090 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25091
25092         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
25093         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
25094
25095 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
25096
25097         * assembly.h: fix function prototype.
25098         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
25099         * mono-endian.h: use const cast.
25100
25101 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25102
25103         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
25104
25105 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25106
25107         * loader.c: don't assert when a typeref can't be loaded, give
25108         a chance to the runtime to trow an exception instead.
25109         * loader.h: fix warning.
25110
25111 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25112
25113         * class.c (mono_class_proxy_vtable): added proxy support
25114
25115 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
25116
25117         * icall.c: removed last of PAL calls, added System.Environment
25118         * file-io.h, file-io.c: MonoIO implementation
25119         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
25120
25121 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25122
25123         * appdomain.c: do not use the byte marker in ldstr table lookup.
25124         * debug-helpers.c: allow two ':' to separate class and method name.
25125         * object.c: allocate arrays bounds with the GC, too.
25126         * verify: add a few more checks.
25127
25128 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
25129
25130         * reflection.c: output also literal strings. Allocate parameter data
25131         with GC_malloc() (thanks, Martin, for catching this!).
25132
25133 2002-03-26  Martin Baulig  <martin@gnome.org>
25134
25135         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
25136         include the `this' offset in the `param_offsets'.
25137
25138 2002-03-25  Martin Baulig  <martin@gnome.org>
25139
25140         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
25141         mono_debug_get_class() function to get the classes. Added new
25142         relocation types for arrays and strings.
25143         (mono_debug_get_class): New static function to search in all
25144         referenced assemblies for a metadata token.
25145
25146         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
25147
25148 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25149
25150         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
25151         hold gc-allocated objects. Make the string heap a stream like the
25152         others. Removed duplicated code when writing stream info.
25153         Added asserts to catch possible buffer overflows. Set the sorted map
25154         for tables that need sorting. Added some documentation.
25155
25156 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
25157
25158         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
25159         for interned strings and vtables.
25160
25161 2002-03-24  Martin Baulig  <martin@gnome.org>
25162
25163         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
25164         it in the array since it was created with g_slist_prepend().
25165
25166 2002-03-24  Martin Baulig  <martin@gnome.org>
25167
25168         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
25169         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
25170         (mono_debug_method_from_token): Renamed to
25171         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
25172         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
25173
25174         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
25175         relocation types.
25176
25177         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
25178
25179 2002-03-24  Martin Baulig  <martin@gnome.org>
25180
25181         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
25182         (mono_debug_method_from_token): New func.
25183
25184         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
25185         New interncall, calls mono_debug_local_type_from_signature().
25186         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
25187         calls mono_debug_method_from_token().
25188
25189 2002-03-23  Martin Baulig  <martin@gnome.org>
25190
25191         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
25192         specifies the number of bytes to be converted, not the array size.
25193         Return the number of chars, not the number of bytes.
25194         (ves_icall_iconv_get_chars): The `byteCount' argument
25195         specifies the number of bytes to be converted, not the array size.
25196
25197 2002-03-23  Martin Baulig  <martin@gnome.org>
25198
25199         * reflection.h (MonoReflectionSigHelper): New type.
25200
25201         * reflection.c (mono_reflection_sighelper_get_signature_local),
25202         (mono_reflection_sighelper_get_signature_local): New functions.
25203
25204         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
25205         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
25206         interncalls.
25207
25208 2002-03-23  Martin Baulig  <martin@gnome.org>
25209
25210         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
25211         is_writeable is set.
25212         (mono_raw_buffer_update): New function to write the modified map
25213         back to disk.
25214
25215         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
25216
25217         * debug-symfile.c (mono_debug_update_symbol_file): Call
25218         mono_raw_buffer_update() when done writing.
25219
25220 2002-03-23  Martin Baulig  <martin@gnome.org>
25221
25222         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
25223
25224         * debug-symfile.c: Added support for arguments and local variables.
25225
25226 2002-03-23  Dick Porter  <dick@ximian.com>
25227
25228         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
25229         protected by ifdefs, hence breaking the w32 build.
25230
25231 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25232
25233         * object.c: implement is_interned() the right way.
25234
25235 2002-03-21  Martin Baulig  <martin@gnome.org>
25236
25237         * debug-symfile.[ch]: New files to handle debugging information
25238         files. There's also support to dynamically update these symbol
25239         files to include machine dependent information.
25240
25241 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
25242
25243         * threads.c (mono_thread_create): new function to create thread
25244         from C
25245
25246 2002-03-20  Martin Baulig  <martin@gnome.org>
25247
25248         * icall.c (ves_icall_InternalInvoke): Create a new object if the
25249         method is a constructor.
25250         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
25251         points to ves_icall_InternalInvoke().
25252
25253 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
25254
25255         * file-io.c: Flush shouldn't throw exceptions.
25256
25257 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
25258
25259         * file-io.c: FileStream flush support; FileSetLength now
25260         restores file pointer.
25261
25262 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25263
25264         * class.c: set image for pointer classes.
25265
25266 2002/03/19  Nick Drochak <ndrochak@gol.com>
25267
25268         * sysmath.c: Forgot one.
25269
25270 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
25271
25272         * sysmath.c: Avoid redefining existing names.
25273
25274 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
25275
25276         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
25277         handled by runtime as icall rather than dllimport from libm.so
25278         * file-io.c, file-io.h: fixed handle argument type.
25279
25280 2002-03-18  Dick Porter  <dick@ximian.com>
25281
25282         * reflection.c (mono_image_get_type_info): rename interface to
25283         iface, because of "#define interface struct" on windows.
25284
25285 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
25286
25287         * class.c, class.h: rename and export mono_ptr_class_get().
25288         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
25289         * reflection.c, reflection.h, icall.c: better/saner type name
25290         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
25291         method signatures.
25292
25293 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
25294
25295         * class.c (mono_class_init): removed hardcoded GHC_SLOT
25296
25297         * icall.c (ves_icall_InternalInvoke): impl.
25298
25299 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25300
25301         * reflection.c: output the interface map table, too.
25302
25303 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25304
25305         * class.c (class_compute_field_layout): separate computation of 
25306         static field layout
25307
25308 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
25309
25310         * icall.c: added System.Buffer support.
25311         * file-io.c: moved file icalls from PAL to FileStream.
25312
25313 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25314
25315         * icall.c (ves_icall_System_Object_GetHashCode): impl.
25316
25317 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
25318
25319         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
25320
25321 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25322
25323         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
25324
25325 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25326
25327         * debug-helpers.{c,h}: moved here from monograph some useful functions
25328         to locate a method by name/signature in a class or image. Included
25329         also a small and flexible IL disassembler.
25330
25331 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25332
25333         * reflection.c: fixup tokens in methods with small header size, too.
25334
25335 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
25336
25337         * object.c (mono_string_to_utf8): remove assert(!error), instead
25338         print a warning. 
25339
25340 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
25341
25342         * icall.c: update to the new mono_Array_class_get interface.
25343
25344 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25345
25346         * appdomain.c, object.c: Boehm-GC enable.
25347         * icall.c: make get_data_chunk() support split data requests.
25348         Ensure a class is initialized in more cases. Return only the first
25349         property found in GetProperties() or the compiler gets confused. 
25350         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
25351         * reflection.h, reflection.c: add fixup mechanism for field and method
25352         tokens. Initialize assembly->typeref in a single place. Output
25353         properties after events. Support custom attributes for events, too.
25354         Typo fix for paramter custom attrs.
25355
25356 2002-03-07  Martin Baulig  <martin@gnome.org>
25357
25358         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
25359
25360 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
25361
25362         * class.c (mono_array_class_get): fix. for multi. dim. arrays
25363
25364 2002-03-06  Martin Baulig  <martin@gnome.org>
25365
25366         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
25367         non-zero lower bounds. See testcases #F10-#F13.
25368
25369 2002-03-05  Martin Baulig  <martin@gnome.org>
25370
25371         * exception.c (mono_get_exception_argument_out_of_range): New exception.
25372
25373         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
25374         ves_icall_System_Array_GetValue(), only calculate the absolute array position
25375         here.
25376         (ves_icall_System_Array_SetValue): Likewise.
25377         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
25378         as argument and does the actual work. This function is used when copying a
25379         multi-dimensional array.
25380         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
25381         now do all the widening conversions of value types.
25382         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
25383
25384 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25385
25386         * class.c: remove some magic numbers and use the smbolic names,
25387         instead. Added init_events() to load event info at class init time.
25388         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
25389         and mono_metadata_methods_from_event().
25390         * reflection.h, reflection.c: added support for writing out the evnets
25391         related information.
25392
25393 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25394
25395         * reflection.h, icall.c: use a different method (GetInterfaces)
25396         to gather interface info and add isbyref, isprimitive and
25397         ispointer to the ves_icall_get_type_info() return value.
25398
25399 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25400
25401         * class.h: stared adding support for events.
25402         * icall.c: split find_members implementation. Added debug icall to get
25403         the address of an object.
25404         * reflection.c: handle TypeBuilders in mono_type_get_object().
25405
25406 2002-03-01  Martin Baulig  <martin@gnome.org>
25407
25408         * icall.c (ves_icall_System_Array_GetLength): This must throw an
25409         ArgumentOutOfRangeException(), not an ArgumentException().
25410         (ves_icall_System_Array_GetLowerBound): Likewise.
25411         (ves_icall_System_Array_GetValue): Improved argument checking.
25412         (ves_icall_System_Array_SetValue): Improved argument checking.
25413
25414 2002-03-01  Martin Baulig  <martin@gnome.org>
25415
25416         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
25417         called with invalid arguments rather than just dying with g_assert().
25418         (ves_icall_System_Array_SetValue): Likewise.
25419         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
25420         raise a NotImplementedException instead.
25421         (ves_icall_System_Array_GetLength): Added argument checking.
25422         (ves_icall_System_Array_GetLowerBound): Added argument checking.
25423
25424 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
25425
25426         * object.h (mono_assert): new macros mono_assert and
25427         mono_assert_not_reached
25428
25429 2002-02-28  Martin Baulig  <martin@gnome.org>
25430
25431         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
25432         and "System::String::IsInterned" to "System::String::_IsInterned".
25433
25434 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
25435
25436         * icall.c: remove hacks for typebuilder. Added icall to create a
25437         modified type from a tybebuilder.
25438         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
25439         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
25440         to create a backing MonoClass for a TypeBuilder.
25441
25442 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25443
25444         * class.c, class.h: more refactoring of class init.
25445         Export mono_class_setup_mono_type() and mono_class_setup_parent().
25446
25447 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
25448
25449         * marshal.c, marshal.h: start of marshaling interface.
25450
25451 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25452
25453         * icall.c: fix order in assembly qualified name icall.
25454
25455 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25456
25457         * class.c: do not free str, since we store it in the hash table.
25458         * reflection.h: add label field to MonoILExceptionInfo.
25459         * reflection.c: handle references to more than one assembly. Handle
25460         case when there isn't a module created in the assembly.
25461
25462 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25463
25464         * class.c: Fix typo. Start refactoring of class init code.
25465
25466 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25467
25468         * appdomain.c: exit with 1 on error.
25469         * class.c: we already have the name in MonoClassField.
25470         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
25471         MonoStreamHeader instead of an offset of image->raw_metadata.
25472
25473 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
25474
25475         * appdomain.c (mono_init): Be even more descriptive about the error.
25476
25477 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
25478
25479         * appdomain.c: give the user an informative message when corlib can't
25480         be loaded.
25481
25482 2002-02-26  Martin Baulig  <martin@gnome.org>
25483
25484         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25485         New icall to get the time zone data.
25486
25487 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25488
25489         * reflection.c: set virtual and raw size of section correctly.
25490         * threads.c: transfer domain information to newly created threads.
25491
25492 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25493
25494         * class.c: when instancing a class in a domain, load the default
25495         vaules for static fields from the constant table. Fix System.Enum to
25496         not be an enum.
25497         * icall.c: implement Object::GetType() internalcall. Implemented
25498         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
25499         Fixed checking of binding flags in find_members().
25500         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
25501         * reflection.c: handle enumerations when writing to the constant
25502         table. Use a different object cache for types.
25503
25504
25505 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
25506
25507         * object.c (mono_object_isinst): fix for arrays
25508
25509         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
25510
25511 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25512
25513         * object.c: don't use mprotect ()  and fix intern pool hash table
25514         lookup for big endian systems.
25515
25516 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25517
25518         * icall.c: change type_is_subtype_of () signature.
25519
25520 2002-02-21  Mark Crichton  <crichton@gimp.org>
25521
25522         * rand.c, rand.h: Added random number generator for
25523         System.Security.Cryptography classes.
25524
25525         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
25526
25527         * icall.c: Added System.Security.Cryptography calls.
25528
25529 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
25530
25531         * class.c, icall.c, metadata.c: better support for pointer types.
25532         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
25533         * reflection.c: Add support for getting custom attrs for properties
25534         and simplify some code.
25535
25536 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25537
25538         * icall.c: change getToken () and add custom attribute GetBlob()helper
25539         method.
25540         * reflection.h: add custom attrs array to the reflection builder structures.
25541         * reflection.c: encode and emit custom attributes for all the relevant
25542         reflection objects. Cache fieldref and methodref tokens. Change
25543         mono_image_create_token() interface to take a MonoDynamicAssembly.
25544         More complete custom attributes decoder. Load custom attributes for
25545         Assembly, Field, Method and Constructor objects, too. Make the
25546         returned array an Attribute[] one, not object[]. Added
25547         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
25548         custom attribute constructor.
25549
25550 2002-02-20  Dick Porter  <dick@ximian.com>
25551
25552         * icall.c:
25553         * rawbuffer.c:
25554         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
25555         problem code out for now).
25556
25557 2002-02-19  Radek Doulik  <rodo@ximian.com>
25558
25559         * object.c (mono_ldstr): use hash table to avoid multiple swapping
25560
25561 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
25562
25563         * icall.c: register the GetCustomAttributes method.
25564         * object.c, object.h: add mono_string_new_len ().
25565         * reflection.h, reflection.c: added mono_runtime_invoke(),
25566         mono_install_runtime_invoke(). Added
25567         mono_reflection_get_custom_attrs () to load custom attributes and
25568         create the attribute objects.
25569
25570 2002-02-19  Dick Porter  <dick@ximian.com>
25571         * threads-dummy-types.c:
25572         * threads-dummy-types.h:
25573         * threads-dummy.c:
25574         * threads-dummy.h:
25575         * threads-pthread-types.c:
25576         * threads-pthread-types.h:
25577         * threads-pthread.c:
25578         * threads-pthread.h:  Deleted obsolete files
25579
25580 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
25581
25582         * class.c (mono_class_vtable): runtime init the class when we
25583         allocate static class data.
25584
25585         * icall.c (ves_icall_System_Array_SetValue): check for null values.
25586
25587         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
25588         and String - but we will need generic marshalling support in the
25589         future. 
25590         (mono_init): set the domain name in a ms compatible way
25591
25592         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
25593         String[].
25594
25595 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
25596
25597         * object.c (mono_array_clone): use alloca() instead of g_malloc  
25598         for sizes
25599
25600         * appdomain.c (mono_domain_unload): impl.
25601
25602 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25603
25604         * appdomain.c, object.c: fix intern pool implementation.
25605         * class.c: fix alignment code.
25606
25607 2002-02-16  Radek Doulik  <rodo@ximian.com>
25608
25609         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
25610         and s2 > s1, just copy lower bytes to be compatible with little
25611         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
25612         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
25613
25614         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
25615         force big_endian to be 1 for big endian machines 
25616         (ves_icall_iconv_new_decoder): ditto
25617
25618 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
25619
25620         * socket-io.c (convert_sockopt_level_and_name): If the system
25621         doesn't define SOL_IP or SOL_TCP, get them by hand using
25622         getprotobyname() and caching the values (because this could be a
25623         slow operation).
25624         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
25625         Use the appropriate struct when the system does support it. Ie,
25626         not all systems have struct ip_mreqn so use struct ip_mreq when
25627         appropriate.
25628
25629 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
25630
25631         * reflection.c: handle finally clauses.
25632
25633 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
25634
25635         * socket-io.c: use g_snprintf() instead of snprintf.
25636
25637 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25638
25639         * reflection.c (mono_param_get_objects): Cast second argument to
25640         mono_method_get_param_names to a const char** to silence the
25641         compiler warning.
25642
25643         * appdomain.c (mono_domain_assembly_open): Put parens around the
25644         truth statement in the for-loop.
25645
25646         * unicode.c (iconv_convert): Got rid of a compiler warning about
25647         int i being unused when the system has a new iconv.
25648         (iconv_get_length): Same.
25649
25650         * image.c (load_class_names): Cast the second argument to
25651         g_hash_table_insert() to char* to hush compiler warnings about the
25652         arg being a const.
25653         (mono_image_open): Same here.
25654
25655         * socket-io.c: Don't conditionally include sys/filio.h or
25656         sys/sockio.h here anymore since we now get them from
25657         io-layer/io-layer.h
25658         (inet_pton): If the system doesn't support inet_aton, implement
25659         using inet_addr and also #define INADDR_NONE if it isn't defined
25660         by the system.
25661
25662 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
25663
25664         * metadata.c, metadata.h: added function to get packing and size info
25665         of a typedef.
25666         * reflection.h, reflection.c: handle field RVA data. Save info about
25667         the table layout if needed. Assign typedef indexes to all the types
25668         before dumping the info about them to avoid forward reference problems.
25669
25670 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * socket-io.c (convert_sockopt_level_and_name): ifdef
25673         SO_ACCEPTCONN because it is not defined on my system (old debian)
25674
25675 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25676
25677         * opcode.c: use stddef.h to get NULL.
25678
25679 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25680
25681         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
25682         for FIONBIO, FIONREAD and SIOCATMARK.
25683         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
25684         define INADDR_NONE and besides, inet_addr() is deprecated and
25685         should not be used. Use inet_pton() instead - it also has the
25686         added bonus that it can easily handle IPv6 addresses as well.
25687         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
25688
25689 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25690
25691         * decimal.c: remove _MSC_VER conditional.
25692
25693 2002-02-13  Dick Porter  <dick@ximian.com>
25694
25695         * socket-io.c: 
25696         * icall.c: Internal calls for Blocking, Select, Shutdown,
25697         GetSocketOption and SetSocketOption
25698
25699 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25700
25701         * assembly.cs: better resolver: use it instead of some kludgy
25702         code.
25703
25704 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
25705
25706         * reflection.c: the best way to speed-up the compiler is to avoid
25707         infinite loops.
25708
25709 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
25710
25711         * class.c (mono_class_vtable): changed the object layout
25712         (obj->vtable->class). 
25713         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
25714
25715 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25716
25717         * assembly.c: look for assemblies in the assembly dir, too.
25718
25719 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25720
25721         * class.c: fix thinko in mono_class_from_type().
25722
25723 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25724
25725         * exception.h, exception.c: added TypeLoadException.
25726         * object.h, object.c: added mono_array_clone ().
25727         * icall.c: handle throwOnError in AssemblyGetType().
25728         Added Array.Clone().
25729         * opcode.h, opcode.c: use a single value for the opcode val.
25730         Compile fix for non-gcc compilers.
25731
25732 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
25733
25734         * opcodes.c, opcodes.h: export interesting info about opcodes.
25735
25736 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
25737
25738         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
25739         icalls. 
25740
25741         * class.c (class_compute_field_layout): set element_class for enums
25742         (mono_class_create_from_typedef): set element_class for normal classes
25743
25744         * icall.c (ves_icall_System_Enum_get_value): impl.
25745
25746         * class.c (mono_class_create_from_typedef): do not set valuetype
25747         flag for System.ValueType and System.Enum
25748
25749 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
25750
25751         * unicode.c (iconv_convert): fix big endian problem.
25752
25753 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25754
25755         * class.c: add asserts if we are ever going to scribble over memory.
25756         * socket-io.c: not all systems have AF_IRDA defined.
25757
25758 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
25759
25760         * class.c (class_compute_field_layout): do not consider static
25761         fields to compute alignment
25762
25763 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
25764
25765         * appdomain.c (mono_appdomain_get): impl.
25766         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
25767
25768 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25769
25770         * icall.c: ignore "file://" prefix when loading an assembly.
25771
25772 2002-01-23  Dick Porter  <dick@ximian.com>
25773
25774         * socket-io.c:
25775         * icall.c:
25776         * Makefile.am: Added socket support
25777
25778 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25779
25780         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
25781         code back.  This should return the assemblies that are loaded by
25782         the runtime on behalf of an application domain. 
25783
25784         The current implementation is still broken, it just returns every
25785         assembly loaded, but until we get real applications domain this
25786         will do.
25787
25788 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
25789
25790         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
25791         AppDomain object.
25792
25793 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25794
25795         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
25796         the mono_class_from_name lookup.
25797         (ves_icall_get_parameter_info): ditto.
25798         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
25799         method.
25800         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
25801
25802 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
25803
25804         * class.c: load also nested classes on class init.
25805         System.ValueType instance methods gets passed boxed
25806         values, unless methods in derived classed that get a pointer to the
25807         data.
25808         * icall.c: use better name parsing code in GetType().
25809         * image.c, image.h: add mono_image_loaded ().
25810         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
25811         * reflection.c, reflection.h: added mono_reflection_parse_type().
25812
25813 2002-01-22  Veronica De Santis <veron78@interfree.it>
25814
25815         * icall.c : Added mapping of internal calls for Manual and Auto reset events
25816         * threads.c : Added the implementation of internal calls for events
25817         * threads.h : Added prototypes of internal calls for events
25818         
25819 2002-01-21  Radek Doulik  <rodo@ximian.com>
25820
25821         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
25822
25823 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
25824
25825         * class.c (mono_class_init): set min_align to 1 (instead of 0)
25826         (mono_class_value_size): use min_align
25827
25828 2002-01-20  Dick Porter  <dick@ximian.com>
25829
25830         * threads.h:
25831         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
25832         so it compiles on w32.
25833
25834 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
25835
25836         * metadata.c (mono_type_stack_size): impl.
25837
25838         * class.c (mono_class_get_field): impl. memberref token
25839
25840 2002-01-16 Veronica De Santis <veron78@@interfree.it>
25841
25842         * icall.h : Added the internal calls mapping for CreateMutex_internal
25843                     and ReleaseMutex_internal.
25844         * threads.h : Added the prototype of mutexes internal calls.
25845         * threads.c : Added the implementations of mutexes internal calls.
25846
25847 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25848
25849         * metaparse.h: removed unused file.
25850         * reflection.c, reflection.h: added stream_data_align () function 
25851         to align data in streams and keep stream aligned. Add support for
25852         exception support in method headers.
25853
25854 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
25855
25856         * unicode.c: make iconv_convert () return the number of bytess written
25857         in the output buffer.
25858
25859 2002-01-15  Dick Porter  <dick@ximian.com>
25860         * threads.c: Make the runtime's idea of infinite timeouts coincide
25861         with the class library's
25862
25863         Fix a particularly egregious bug in mono_thread_cleanup(). That
25864         code was so utterly bogus it must have been written on a Monday.
25865
25866 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25867
25868         * reflection.h: add subtypes field to TypeBuilder.
25869         * reflection.c: encode constants for literal fields.
25870         Handle subtypes. Fix user string token (and add a zero byte)
25871         at the end.
25872         
25873 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
25874
25875         * class.c (mono_class_init): bug fix: assign slot numbers for
25876         abstract methods.
25877
25878 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25879
25880         * reflection.c: don't try to output a code RVA for abstract methods.
25881         Small fixes for method header format. Output parameter info to the
25882         ParamDef table. Save method overriding info to MethodImpl table.
25883         Fix property support. Allow typedef.extends to be a type in the
25884         building assembly.
25885         * verify.c: fix off-by-one error.
25886
25887 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
25888
25889         * class.c: fix mono_class_from_mono_type () for szarray types.
25890         Remove unused cache check in mono_class_from_type_spec().
25891         * icall.c: *type_from_name () functions handle simple arrays and byref.
25892         * reflection.c: handle byref and szarray types. Handle methods without
25893         body (gets P/Invoke compilation working). Handle types and fields in
25894         get_token ().
25895         * reflection.h: add rank to MonoTypeInfo.
25896
25897 2002-01-10  Dick Porter  <dick@ximian.com>
25898
25899         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
25900         internal calls
25901
25902 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25903
25904         * icall.c: initialize class in type_from_handle ().
25905         Loop also in parent classes for get_method ().
25906         * reflection.c: properly encode class and valuetype types.
25907         Start on encoding TypeBuilder types. Handle fieldrefs.
25908         Use correct length when registering a user string.
25909         Handle ConstructorBuilder and MonoMethod in get_token ().
25910         Make mono_type_get_object () aware of cached types.
25911         * object.c: back out change to mono_string_new ().
25912
25913 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
25914         * object.c: mono_string_new should return a NULL when the string 
25915         passed in is NULL -- not try to deference it.
25916         
25917 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25918
25919         * icall.c: hack to make IsSubType work for TypeBuilders.
25920         * reflection.c: emit constructors before methods.
25921         Retrieve param names in mono_param_get_objects().
25922
25923 2002/01/05  Nick Drochak  <ndrochak@gol.com>
25924
25925         * Makefile.am: fix list of headers and sources so automake 1.5
25926         doesn't complain. Removed \# at end of list.
25927
25928 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25929
25930         * reflection.c: get token for a method ref. Set return type of
25931         constructor to void.
25932         * loader.c: debug message.
25933         * class.c: typo fix.
25934
25935 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
25936
25937         * icall.c: fix array init with rank > 1. FindMembers
25938         loops in parent class as well.
25939         * image.c: do not insert nested types in name cache.
25940         * reflection.c: warning fix.
25941         * reflection.h: add override method (for interface impl).
25942
25943 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
25944
25945         * metadata.c: fix customattr decoding.
25946
25947 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
25948
25949         * rawbuffer.cs: Added native Win32 implementation, avoids using
25950         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
25951
25952 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
25953
25954         * class.c: make the low-level routines handle the cache.
25955
25956 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
25957
25958         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
25959
25960 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
25961
25962         * class.c: fix mono_array_element_size() for objects.
25963         * class.h, class.c: add properties to MonoClass and load them
25964         at init time.
25965         * icall.c: check with isinst() when assigning a value to an array
25966         instead of requiring the classes to match exactly.
25967         Implemented icall for System.Type::GetType().
25968         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
25969         enums. Handle bindingflags when looking for methods and fields.
25970         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
25971         and mono_metadata_methods_from_property().
25972         * reflection.h, reflection.c: added structures for propreties,
25973         parameters and enums. Implemented mono_property_get_object() and
25974         mono_param_get_objects().
25975
25976 2001-12-18  Dick Porter  <dick@ximian.com>
25977
25978         * file-io.c: Use mono_string_to_utf16() instead of
25979         mono_string_chars()
25980
25981         * object.c: Added mono_string_to_utf16(), which copies the non
25982         NULL-terminated MonoString into a new double-null-terminated
25983         buffer.
25984
25985 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
25986
25987         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
25988
25989 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
25990
25991         * file-io.c: raise exceptions if handle is invalid.
25992
25993 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
25994
25995         * assembly.c: yet another check for mscorlib.
25996         * class.c, class.h: load nesting info for classes.
25997         * icall.c: many new functions to support the Reflection classes.
25998         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
25999         * reflection.h, reflection.c: mono_image_create_token(),
26000         mono_assembly_get_object(), mono_type_get_object(),
26001         mono_method_get_object(), mono_field_get_object(): methods to return
26002         objects that parallel the C representation of assemblies, types,
26003         methods, fields.
26004
26005 2001-12-11  Dick Porter  <dick@ximian.com>
26006
26007         * icall.c:
26008         * file-io.c: Internal calls for file IO.
26009
26010 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
26011
26012         * tabledefs.h: missing FileAttributes.
26013         * verify.h, verify.c: use is_valid_string () to simplify and check for
26014         valid strings more correctly. Fix warnings and speeling.
26015         Check more tables: Filed, File, ModuleRef, StandAloneSig.
26016         Check code: branches, maxstack, method calls.
26017
26018 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
26019
26020         * object.c (mono_object_allocate): removed static, so that the jit
26021         can allocate value types.
26022
26023         * icall.c (ves_icall_System_DateTime_GetNow): impl.
26024
26025 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26026
26027         * class.c: init enum types right away and register the
26028         token->MonoClass map in mono_class_create_from_typedef ().
26029         * verify.h, verify.c: first cut of the verifier.
26030         * pedump.c: add --verify switch to verify metadata tables.
26031         * tabledefs.h: add some missing enums.
26032
26033 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
26034
26035         * class.c (mono_install_runtime_class_init): impl.
26036         (mono_class_init): renamed mono_class_metadata_init to
26037         mono_class_init, also removed the metadata_inited flag
26038
26039         * object.c (mono_object_isinst): use faster algorithm
26040
26041 2001-11-30  Radek Doulik  <rodo@ximian.com>
26042
26043         * mono-endian.h: reverted last change
26044         added function prototypes
26045
26046         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
26047         add mono-endian.c back
26048
26049         * mono-endian.c: returned back, as Paolo pointed out, it's needed
26050         for unaligned access, I've mistaked it with endianess. I am
26051         sorry.
26052         (mono_read16): fix reverted endianess
26053         (mono_read64): ditto
26054         (mono_read32): ditto
26055
26056 2001-11-30  Dick Porter  <dick@ximian.com>
26057
26058         * exception.c: Implement mono_exception_from_name()
26059
26060 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26061
26062         * metadata.h, metadata.c: remove params_size and locals_size and their
26063         calculation from the metadata code: they are only usefult to the
26064         interp.
26065
26066 2001-11-29  Radek Doulik  <rodo@ximian.com>
26067
26068         * object.c (mono_ldstr): swap bytes here, it's probably not the
26069         best place, but works for me now, I'll redo it once I know mono
26070         better, also note that I add PROT_WRITE and don't reset back, also
26071         note that it's only affects big endians, so x86 should be OK
26072
26073         * mono-endian.h (read16): use just glib macros for both endians
26074
26075         * mono-endian.c: removed as glib macros are used in in
26076         mono-endian.h so we don't need to care about endianess for read
26077         macros as glib does that for us already
26078
26079 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
26080
26081         * class.h, class.h: take minimum alignment into consideration so
26082         that the fields of a class remain aligned also when in an array.
26083
26084 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26085
26086         * loader.h, loader.c: add mono_method_get_param_names().
26087         * class.c: 0-init class fields.
26088
26089 2001-11-26  Dick Porter  <dick@ximian.com>
26090
26091         * icall.c:
26092         * threads-types.h:
26093         * threads.c: New file that handles System.Threading on all platforms
26094
26095         * object.c: 
26096         * object.h: Remove the synchronisation struct from MonoObject,
26097         replace it with a pointer that gets initialised on demand
26098
26099         * Makefile.am: Replace all the system-specific threading code with
26100         a single file that uses the new wrapper library
26101
26102 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
26103
26104         * class.c, class.h: add mono_install_trampoline() so that the runtime
26105         can register a function to create a trampoline: removes the ugly
26106         requirement that a runtime needed to export arch_create_jit_trampoline.
26107         * object.h, object.c: added mono_install_handler() so that the runtime
26108         can install an handler for exceptions generated in C code (with
26109         mono_raise_exception()). Added C struct for System.Delegate.
26110         * pedump.c: removed arch_create_jit_trampoline.
26111         * reflection.c: some cleanups to allow registering user strings and
26112         later getting a token for methodrefs and fieldrefs before the assembly
26113         is built.
26114         * row-indexes.h: updates and fixes from the new ECMA specs.
26115
26116 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
26117
26118         * class.h, class.c: add enum_basetype field to MonoClass.
26119         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
26120         to get index in the constant table reated to a field, param or
26121         property.
26122         * reflection.h, reflection.c: handle constructors. Set public-key and
26123         version number of the built assembly to 0.
26124         * row-indexes.h: update from new ECMA spec.
26125
26126 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26127
26128         * class.h, class.c: add a max_interface_id to MonoClass.
26129         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
26130         since it's used to do that. Added mono_type_type_from_obj().
26131         Make GetType() return NULL instead of segfaulting if the type was not
26132         found. Handle simple arrays in assQualifiedName.
26133         * object.h: add a struct to represent an Exception.
26134         * reflection.c: output call convention in method signature.
26135         Add code to support P/Invoke methods and fixed offsets for fields.
26136
26137 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
26138
26139         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
26140         the value.
26141         * icall.c: use mono_array_addr instead of array->vector: fixes the
26142         reflection image writing.
26143         * reflection.c: init call convention byte to 0 in method signature.
26144         Encode the property signature. Don't output property-related methods
26145         twice. Really process the properties for a type (don't cast a field to
26146         a property, my mom always told me that).
26147         Fix 64 bit issues in pointer alignment in a different and more
26148         readable way.
26149
26150 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
26151
26152         * loader.h: Removed type class from MonoDefaults, added monotype
26153
26154         * loader.c: Loaded MonoType, removed loading of Type
26155
26156         * icall.c (my_mono_new_object): Now returns a System.MonoType,
26157         and fills in System.Type._impl with a RuntimeTypeHandle rather
26158         than the actual MonoClass *
26159
26160         (ves_icall_type_from_handle): change from type_class to
26161         monotype_class
26162
26163         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
26164         implemented
26165
26166         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
26167         implemented
26168
26169         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
26170
26171         (ves_icall_System_Reflection_Assembly_GetType): implemented
26172
26173         (ves_icall_System_MonoType_assQualifiedName): implemented
26174
26175         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
26176
26177 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
26178
26179         * assembly.c (mono_assembly_open): Implement a cache for the
26180         assemblies. 
26181
26182         (mono_assembly_close): only destroy the assembly when the last
26183         reference is gone.
26184         
26185 2001-11-09  Dick Porter  <dick@ximian.com>
26186
26187         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
26188
26189 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
26190
26191         * class.c (mono_class_metadata_init): bug fix: compute the right slot
26192
26193 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26194
26195         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
26196         from Martin Weindel.
26197         * object.h: add mono_string_chars ().
26198
26199 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
26200
26201         * reflection.c (build_compressed_metadata): Eliminates warnings
26202         and uses 64-bit clean code.
26203
26204         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
26205         (mono_type_equal): Change signature to eliminate warnings.
26206
26207 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26208
26209         * icall.c, loader.c: remove the internalcall array constructors.
26210         Changes to match the new MonoArray structure.
26211         * object.h, object.c: an array object doesn't allocate an extra
26212         vector. Add mono_array_new_full () to create jagged arrays easily.
26213
26214 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26215
26216         * metadata.h, metadata.c: add mono_metadata_field_info () to
26217         retreive all the info about a field from vairous tables.
26218         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
26219         * class.h, class.c: augment MonoClassField with more info.
26220         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
26221         policy and load a field's RVA if needed.
26222
26223 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
26224
26225         * class.c (mono_class_metadata_init): create a trampoline for all
26226         virtual functions instead of actually compiling them.
26227
26228 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
26229
26230         * class.h, class.c: include name in MonoClassField.
26231         * class.c: fix fundamental type of System.Object and System.String.
26232         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
26233         tokens in ldtoken.
26234         * icall.c: remove internalcalls for the Reflection stuff that is now
26235         done in C# code.
26236         * loader.c: mono_field_from_memberref () implementation.
26237         * mono-endian.c: thinko (s/struct/union/g).
26238         * object.c, object.h: make the mono_string_* prototypes actually use
26239         MonoString instead of MonoObject.
26240         * reflection.c, reflection.h: updates for changes in the reflection
26241         code in corlib: we use C structures that map to the actual C# classes.
26242         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
26243         fat method header if needed and use the info from the ILGenerator for
26244         methods. Handle fields in types. Misc fixes.
26245
26246 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
26247
26248         * class.c (mono_class_metadata_init): bug fix: always allocate
26249         space for static class data
26250
26251 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
26252
26253         * class.c (mono_compute_relative_numbering): use relative
26254         numbering to support fast runtime type checks.
26255
26256 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
26257
26258         * class.c (mono_class_create_from_typeref): added debugging output
26259         to print class name when MonoDummy is returned instead of real class
26260
26261 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
26262
26263         * class.c (mono_class_metadata_init): interface offset table now
26264         contains pointers into the vtable - this is more efficient for the jit
26265
26266 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
26267
26268         * class.c (mono_class_metadata_init): use a temporary vtable (the
26269         old algorithm only worked for the interpreter, but not for the jit)
26270
26271 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
26272
26273         * loader.c (method_from_memberref): use mono_class_get to get the
26274         class of an array instead of using System.Array directly.
26275         (mono_get_method): also add MEMBERREF methods to the method cache
26276         which usefull for arrays.
26277
26278 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
26279
26280         * pedump.c (arch_compile_method): added to compute vtable entry
26281
26282         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
26283         number of interfaces.
26284         
26285         * class.h: merged MonoArrayClass into MonoClass
26286
26287         * class.c (mono_class_create_from_typedef): compute the vtable size and
26288         allocate space to include the vtable inside MonoClass
26289         (mono_class_metadata_init): initialize the vtable
26290
26291 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
26292
26293         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
26294         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
26295         * image.c: endian fixes by Laurent Rioux.
26296         * object.h, object.c: rename MonoStringObject to MonoString and
26297         MonoArrayObject to MonoArray. Change some function names to conform to
26298         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
26299         guint16* as first argument, so don't use char*.
26300         Provide macros to do the interesting things on arrays in a portable way.
26301         * threads-pthread.c: updates for the API changes and #include <sched.h>
26302         (required for sched_yield()).
26303         * icall.c: updates for the API changes above.
26304         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
26305         platforms that need them.
26306
26307 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26308
26309         * class.c: set the correct type for all the fundamental
26310         type when loading the class.
26311
26312 2001-10-05  Dick Porter  <dick@ximian.com>
26313
26314         * threads-pthread.c (pthread_mutex_timedlock): Simple
26315         compatibility version for C libraries that lack this call.
26316
26317 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26318
26319         * class.c: MonoTypes stored in MonoClass are stored as
26320         fundamental MonoTypes when the class represents a
26321         fundamental type (System.Int32, ...).
26322         The TypeHandle return by ldtoken is a MonoType*.
26323         * icall.c: ves_icall_get_data_chunk () write out all the
26324         PE/COFF stuff. Implement ves_icall_define_method (),
26325         ves_icall_set_method_body (), ves_icall_type_from_handle ().
26326         * image.c: properly skip unknown streams.
26327         * loader.h, loader.c: add type_class to mono_defaults.
26328         * metadata.c, metadata.h: export compute_size () as
26329         mono_metadata_compute_size () with a better interface.
26330         Typo and C&P fixes.
26331         * pedump.c: don't try to print the entry point RVA if there is no entry point.
26332         * reflection.c, reflection.h: many cleanups, fixes, output method
26333         signatures and headers, typedef and typeref info, compress the metadata
26334         tables, output all the heap streams, cli header etc.
26335         * row-indexes.h: typo fixes.
26336
26337 2001-10-04  Dick Porter  <dick@ximian.com>
26338
26339         * object.h: Add a synchronisation mutex struct to MonoObject
26340
26341         * object.c (mono_new_object): Initialise the object
26342         synchronisation mutexes
26343
26344         * icall.c: System.Threading.Monitor internal calls
26345         
26346         * threads-pthread.h:
26347         * threads-pthread.c: System.Threading.Monitor internal calls
26348
26349         * threads-types.h: New file, includes the system-specific thread
26350         structures
26351         
26352         * threads-pthread-types.h:
26353         * threads-pthread-types.c: New files, handle pthread-specific
26354         synchronisation types
26355
26356         * threads-dummy-types.h: 
26357         * threads-dummy-types.c: New files of dummy support for
26358         thread-specific types
26359
26360         * metadata.c:
26361         * image.c:
26362         * pedump.c: include mono-endian.h not endian.h
26363         
26364         * Makefile.am: More threads files.
26365         Name mono-endian.h not endian.h
26366
26367 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
26368
26369         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
26370         stuff and implement a few more bits.
26371         * icall.c: a field needs to be dereferenced twice. Do not use the same
26372         name for two variables in the same scope.
26373         * image.c, image.h: cleanups.
26374
26375 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
26376
26377         * class.c (mono_class_metadata_init): bug fix: compute the right size
26378
26379 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
26380
26381         * icall.c: implemented some of the Reflection internalcalls.
26382         * image.c, image.h: start writing out the PE/COFF image.
26383         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
26384         that does the reverse than decode_blob_size ().
26385         * object.c: use mono_metadata_encode_value (). Move here
26386         temporary implementation of mono_string_to_utf8 ().
26387         * rawbuffer.c: make malloc_map static.
26388
26389 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26390
26391         * metadata.c: fix type comparison for arrays.
26392         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
26393         Added a couple of new classes to monodefaults.
26394         * icall.c: added a couple of Reflection-related internalcalls.
26395         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
26396         Added a byval_arg MonoType to MonoClass.
26397
26398 2001-09-28  Dick Porter  <dick@ximian.com>
26399
26400         * icall.c:
26401         * threads-pthread.h: 
26402         * threads-pthread.c: Implemented internal calls for
26403         LocalDataStoreSlot operations.  Applied mutexes around all shared
26404         data.  Reworked the thread creation and Start() operations to
26405         avoid a race condition.
26406         
26407         * threads-dummy.h:
26408         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
26409
26410 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
26411
26412         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
26413
26414 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
26415
26416         * class.c, loader.c: warn and return NULL instead of erroring out.
26417         * icall.c: added System.AppDomain::getCurDomain().
26418         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
26419
26420 2001-09-25  Dick Porter  <dick@ximian.com>
26421
26422         * threads-pthread.h:
26423         * threads-pthread.c: Implemented timed thread joining and added
26424         System.Threading.Thread::Join_internal internal call
26425
26426         * icall.c: Added System.Threading.Thread::Join_internal internal call
26427
26428         * threads-dummy.h:
26429         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
26430
26431 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
26432
26433         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
26434         mono_string_intern () to implement the semantics of the ldstr opcode
26435         and the interning of System.Strings.
26436         * icall.c: provide hooks to make String::IsIntern and String::Intern
26437         internalcalls.
26438
26439 2001-09-23  Dick Porter  <dick@ximian.com>
26440
26441         * threads-dummy.c: 
26442         * threads-dummy.h: New files of dummy threading routines
26443
26444         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
26445         support code based on system specifics
26446
26447         Rename PTHREAD_LIBS to THREAD_LIBS
26448         
26449 2001-09-23  Dick Porter  <dick@ximian.com>
26450
26451         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
26452         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
26453         internal calls.
26454         (mono_thread_init): Set up a Thread object instance to return when
26455         the main thread calls Thread.CurrentThread
26456         (mono_thread_cleanup): Wait for all subthreads to exit
26457
26458         * icall.c: New internal calls for System.Threading.Thread::Sleep
26459         (including Schedule) and CurrentThread
26460
26461         * threads.h: New file, to insulate thread-specific stuff from the
26462         rest of the code
26463
26464 2001-09-21  Dick Porter  <dick@ximian.com>
26465
26466         * threads-pthread.h: 
26467         * threads-pthread.c: New file, for handling pthreads-style
26468         threading support.  Start() now starts a new thread and executes
26469         the ThreadStart delegate instance.
26470
26471         * icall.c: Added the internalcall for
26472         System.Threading.Thread::Start_internal
26473
26474         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
26475
26476 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
26477
26478         * loader.c: work around the different signatures for delegates
26479         constructors csc generates in compiled code vs the ones compiled in mscorlib.
26480
26481 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26482
26483         * class.h, class.c: add mono_class_get_field_from_name ().
26484         * *: Fix C comments and other ANSI C issues.
26485
26486 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
26487
26488         * endian.h, assembly.c: fix some endianness issues.
26489
26490 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
26491
26492         * loader.h, load.c: add delegate_class to mono_defaults.
26493         Handle runtime provided methods in mono_get_method ().
26494
26495 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
26496
26497         * loader.c (mono_get_method): use pinvoke for internal call
26498
26499         * icall.c: use pinvoke for internal call
26500
26501         * loader.c (method_from_memberref): set the method name
26502
26503 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
26504
26505         * metadata.c: help the compiler generate better code for
26506         mono_class_from_mono_type ().
26507
26508 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
26509
26510         * class.c (mono_class_metadata_init): delayed computing of the
26511         class size to mono_class_metadata_init ()
26512
26513 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
26514
26515         * class.c, class.h: add an interfaces member to MonoClass.
26516         * image.c, image.h: add assembly_name field to MonoImage
26517         from the assembly table.
26518         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
26519
26520 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26521
26522         * class.c: Handle Array in mono_class_from_mono_type ().
26523         * metadata.c, pedump.c: some endian fixes.
26524
26525 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26526
26527         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
26528         * metadata.c: fix small problem introduced with the latest commit.
26529
26530 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
26531
26532         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
26533         We don't need a MonoMetadata pointer anymore to compare signatures in
26534         mono_metadata_signature_equal (), update callers.
26535         Reduced memory usage an number of allocations for MonoMethodHeader and
26536         MonoMethodSignature.
26537
26538 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
26539
26540         * metadata.c: added compare for szarray.
26541
26542 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
26543
26544         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
26545         and add a couple more types to it and mono_defaults. Give an hint on
26546         classes that need implementing in our corlib and are referenced
26547         in mscorlib.
26548
26549 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
26550
26551         * class.h, class.c: keep track if a class is also an Enum.
26552         * loader.c: Implement a couple more types for use in libffi
26553         marshalling. Gives better diagnostics when failing to dlopen
26554         a library. Set method->klass for P/Invoke methods, too.
26555
26556 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
26557
26558         * class.c, class.h: add a MonoType this_arg to MonoClass that
26559         represents a pointer to an object of the class' type that
26560         can be used by the interpreter and later the type cache.
26561         Add best guess alignment info for valuetype objects.
26562
26563 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
26564
26565         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
26566         into MonoType: one less level of indirection and allocation and
26567         simplifies quite a bit of code. Added cache for MonoTypes that are
26568         used frequently, so that we don't need to allocate them all the time.
26569
26570 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
26571
26572         * class.c (mono_class_create_from_typedef): System.Enum is also a
26573         value type, although it does not derive from System.ValueType
26574         (maybe a bug in the ms compiler?)
26575
26576         * metadata.c (mono_type_size): return the right size for value types
26577
26578         * loader.c (mono_get_method): only initialize method header if not abstract
26579
26580         * class.c (mono_class_from_mono_type): use mono_default values. 
26581
26582 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
26583
26584         * *: use MonoClass pointers instead of <type_tokens>
26585         
26586         * class.h: new flag: metadata_inited.
26587
26588         * class.c (mono_class_metadata_init): impl.
26589         (mono_class_instance_size): impl.
26590         (mono_class_data_size): impl.
26591
26592 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26593
26594         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
26595         MonoClass now has the name and name_space fields. 
26596         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
26597         mono_get_method () takes and optional MonoClass as argument.
26598         Removed mono_typedef_from_name() and added mono_class_token_from_name()
26599         instead that takes advantage of a map from class names to typedef
26600         tokens in MonoImage.
26601
26602 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
26603
26604         * metadata.c: zero is not a valid alignment boundary.
26605         Merge MONO_TYPE_VOID in default decoding code.
26606
26607 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
26608
26609         * image.h: merged MonoMetadata into MonoImage
26610
26611         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
26612         identify the type of elements.
26613
26614 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
26615
26616         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
26617         * cil-coff.h: split MonoMSDOSHeader and add size info.
26618         * image.c: add some consistency checks.
26619         * metadata.c: fix row size computation: one programmer
26620         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
26621         add explanation for the locator routine.
26622         Fix decoding of size in method header.
26623         
26624 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
26625
26626         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
26627         (g_concat_dir_and_file): Bring g_concat_dir_and_file
26628         function from gnome-libs.  This uses the right path separator
26629         based on the OS, and also works around a bug in some systems where
26630         a double slash is not allowed. 
26631         (default_assembly_name_resolver): Use g_concat_dir_and_file
26632         (mono_assembly_open): ditto.
26633
26634 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
26635
26636         * metadata.c (mono_metadata_signature_equal): impl.
26637
26638         * *: void is now a realy MonoType (instead of using NULL)
26639         
26640         * metadata.c (do_mono_metadata_parse_type): use
26641         mono_metadata_parse_type to parse void value.
26642
26643 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
26644
26645         * metadata.c, metadata.h: in the signature and method header store
26646         only the space required for holding the loca vars and incoming arguments.
26647
26648 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
26649
26650         * metadata.c (do_mono_metadata_parse_type): treat void like any
26651         other type (instead of assigning NULL);
26652
26653 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
26654
26655         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
26656
26657 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
26658
26659         * image.c (do_mono_image_open): added a cache for arrays.
26660
26661 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26662
26663         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
26664         decode a single column from a row in a metadata table and changes
26665         to take advantage of it in the typedef locator (gives a nice speed up).
26666         Store offset info for function params.
26667
26668 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
26669
26670         * image.h (MONO_IMAGE_IS_CORLIB): removed 
26671
26672 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
26673
26674         * assembly.c: how could mono_assembly_close () had ever worked?
26675         * metadata.c, metadata.h: provide offset info for local vars.
26676         Implement mono_type_size () to take care of alignment as well
26677         as size (it was mono_field_type_size in cli/class.c before).
26678
26679 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
26680
26681         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
26682
26683         * assembly.h (CORLIB_NAME): set to corlib.dll
26684
26685         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
26686
26687 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26688
26689         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
26690         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
26691         tokentype.h: massive namespace cleanup.
26692
26693 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26694
26695         * metadata.h, metadata.c: decode exception clauses when parsing method header.
26696
26697 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
26698
26699         * metadata.c (mono_metadata_free_type): added check for type !=
26700         NULL (void) before calling mono_metadata_free_type()
26701
26702 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
26703
26704         * metadata.h, row_indexes.h: added header with enumerations to use
26705         to index in the columns from tables in metadata and to decode coded
26706         tokens: we should start using this instead of embedding magic numbers
26707         all over the code.
26708
26709 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
26710
26711         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
26712         Move metadata_t info from cli_image_info_t to MonoImage, where
26713         it's easily accessible. Changed all the uses accordingly.
26714         Added the method and class caches to MonoImage.
26715         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
26716         and mono_metadata_decode_value () signature to be more consistent
26717         with the other parse functions (and simplify code). Taken advantage
26718         of zero-length array allocation with GCC. Removed reduntant (and
26719         wrong) MonoFieldType struct and use MonoParam instead. Changed
26720         mono_metadata_parse_field_type () to use common code for parsing.
26721         Added mono_metadata_typedef_from_field () and
26722         mono_metadata_typedef_from_method () to lookup a typedef index from a
26723         field or method token.
26724         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
26725
26726 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
26727
26728         * metadata.c (mono_metadata_parse_field_type): Implement. 
26729         (do_mono_metadata_parse_type): Split engine from
26730         mono_metadata_parse_type, so that we can create smaller structures
26731         for things that just have one pointer to the MonoType (look at
26732         the MonoFieldType)
26733
26734 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
26735
26736         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
26737         as Jan Gray found out, it is incorrect. 
26738
26739 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
26740
26741         * assembly.c: Implement asssembly loading.  This loads an image
26742         and loads all the referenced assemblies.  Come to think of it, we
26743         could always do lazy loading of the assemblies. 
26744
26745         * image.c (mono_image_open): Keep loaded images in a hashtable.
26746
26747         * image.h (MonoImage): Add reference count.
26748
26749 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
26750
26751         * assembly.c (mono_assembly_open): Keep track of the file name in
26752         case the assembly has no ASSEMBLY table.
26753
26754         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
26755         from get.c here.
26756
26757 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
26758
26759         * metadata.c, metadata.h: decode local vars in method header
26760         parse function. Change callers accordingly.
26761
26762 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
26763
26764         * metadata.h, cil-coff.h: protect against multiple inclusion.
26765         Added some new structures to hold information decoded from metadata:
26766         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
26767         and relevant decoding/free functions.
26768         * metadata.c: implement decoding functions. Add warning for out of bounds
26769         index in mono_metadata_locate(). Implement mono_get_method () to retreive
26770         all the info about a method signature and invocation. Remove check on
26771         uninitialized local var in parse_mh() and fix memory leak.
26772
26773 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
26774
26775         * metadata.h: More macros.
26776
26777         * tokentype.h: New file.
26778
26779 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
26780
26781         * assembly.c: added a consistency check and initialize
26782         some structures with g_new0().
26783         * metadata.c: fixed a couple more bugs in table size computation
26784         and add other checks for out-of bound access to metadata.
26785
26786 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
26787
26788         * metatada.c: fix bugs computing table sizes. Spew a
26789         warning when index in string heap is out of bounds.
26790
26791 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
26792
26793         * metadata.h: Add a couple of macros to manipulate tokens. 
26794
26795 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26796
26797         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
26798         cli_section_tables).
26799
26800 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
26801
26802         * metadata.c (mono_metadata_user_string): New function, provides
26803         access to the UserString heap. 
26804
26805 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
26806
26807         * metadata.c: Add inline documentation.
26808
26809 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
26810
26811         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
26812         files. 
26813
26814 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
26815
26816         * typeattr.h: New file, TypeAttribute flags. 
26817
26818 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
26819
26820         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
26821         mono_assembly_ensure_section): Section loading code.
26822         (load_section_tables): Load the sections.
26823
26824         * mono/metadata/metadata.c (mono_metadata_locate_token,
26825         mono_metadata_locate): Functions to locate the information
26826         definition given a token or a table and an index.
26827         (mono_metadata_compute_table_bases): New.
26828         (compute_size): New function to compute the sizes of the various
26829         tables.
26830
26831         * mono/metadata/metadata.h: Finish listing the different index
26832         types. 
26833
26834         * mono/metadata/pedump.c: Improve to dump new information.
26835
26836 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
26837
26838         * mono/metadata/metadata.c: Entered all the tables matching
26839         Beta2. 
26840
26841         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
26842
26843
26844