5f975e6c689bcc618688d0a8f005704f508c4ea3
[mono.git] / mono / metadata / ChangeLog
1 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * threads.c (thread_cleanup): Free MonoThread::name.
4
5 2008-06-12  Marek Habersack  <mhabersack@novell.com>
6
7         * appdomain.c (ensure_directory_exists): avoid unnecessary
8         mkdir(2) calls when the shadow directory already exists.
9         (mono_make_shadow_copy): copy also satellite assemblies from the
10         private bin directories.
11
12 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
13
14         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
15         
16         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
17         a page boundary. Fixes #396219.
18
19 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
20
21         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
22         due to double-checked locking.
23
24 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
25
26         * assembly.c (build_assembly_name): Release memory on failure.
27
28         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
29
30 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
31
32         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
33         memory on failure.
34
35 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
36
37         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
38         memory on failure.
39
40 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
41
42         * loader.c (field_from_memberref): Check if field signature type is equal
43         to the non-inflated type of the field. Fixes #398980.
44
45 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
46
47         * assembly.c (mono_assembly_load_from_full): Call 
48         mono_assembly_load_friends () outside the assemblies lock, since it can
49         acquire the loader lock. Fixes #323696.
50
51         * reflection.c (resolve_object): Inflate the inst with the context for
52         FieldOnTypeBuilderInst. Fixes #399010.
53
54 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
55
56         * reflection.c (mono_image_get_field_on_inst_token): Don't
57         inflate the field to encode it's signature. If it's a
58         VAR or MVAR it should stay that way in the signature.
59         Fixes #399047.
60
61 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
62
63         * reflection.c (resolve_object): Release memory of inflated types.
64
65 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
66
67         * loader.c (mono_method_get_signature_full): Remove assert about
68         loading a methodspec to a generic method. We have such methods, such as
69         System.Threading.Interlocked::CompareExchange<T>.
70         This assert was removed since it crashes the verifier when it checks
71         methods calling CompareExchange<T>.
72
73 2008-06-10  Marek Safar  <marek.safar@gmail.com>
74
75         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
76         of Type array and not MonoType.
77
78 2008-06-10  Marek Habersack  <mhabersack@novell.com>
79
80         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
81         <lupus@ximian.com>
82
83 2008-06-10  Martin Baulig  <martin@ximian.com>
84
85         * debug-mono-symfile.h
86         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
87         changes to the file format, but we were generating incorrect
88         source file indices in the line number table due to a bug, which
89         made backtraces report an incorrect source file.
90
91 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
92
93         * mono-debug.c: Moved mono_debug_free_method_jit_info from
94         mini/debug-mini.c to here.
95
96         * mono-debug.c (il_offset_from_address): Free memory from find_method.
97
98         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
99         use it to release structs returned by mono_debug_find_method.
100
101 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
102
103         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
104         since it needs to set method->slot for all interface methods.
105
106 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
107
108         * class-internals.h: Forgot to add.
109
110 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
113
114         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
115         Lookup the custom attributes from property_hash.
116
117         * reflection.c (mono_save_custom_attrs): Save the custom attributes
118         in property_hash. Allocate all data using the image mempool.
119
120         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
121         for dynamic_custom_attrs to checks if the image is dynamic.
122
123 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
124
125         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
126         assemblies array.
127         
128         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
129         runtime functions while holding the domain assemblies lock.
130
131 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
132
133         * verify.c: Reapplied the last bit of the reverted changes.
134
135 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
136
137         * verify.c: Reapplied more of the reverted changes.
138
139 2008-06-09  Martin Baulig  <martin@ximian.com>
140
141         * debug-mono-symfile.c (load_symfile): Check the major version
142         first; if it's wrong, don't print the minor version in the error message.
143
144 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
145
146         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
147         lock instead of the domain lock to avoid deadlocks, since the thread might
148         already hold the loader lock.
149
150         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
151         (mono_thread_attach): Ditto.
152
153         * monitor.c: Use a TLS variable for holding the current thread id instead
154         of calling pthread_self ().
155         (mono_monitor_init_tls): New internal function to initialize the TLS
156         variable.
157         (mono_monitor_try_enter_internal): Put the owner == id check after the
158         owner == 0 check.
159
160         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
161         missed optimizations when using gcc-4.3.
162
163 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
164
165         * reflection.c (mono_dynamic_image_free): Free the memory
166         used by MonoGenericParam in MonoDynamicImage::gen_param.
167
168         * reflection.c (mono_reflection_setup_generic_class): Allocate
169         container from mempool.
170
171         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
172         container from mempool.
173
174 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
175
176         * threads.c (mono_set_pending_exception): New internal function to set the
177         pending exception of the current thread.
178         (mono_thread_get_and_clear_pending_exception): Check for 
179         thread->pending_exception as well.
180
181         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
182
183         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
184         it can trigger a collection.
185
186 2008-06-06  Martin Baulig  <martin@ximian.com>
187
188         Merged the `debugger-kahalo' branch.
189
190         * mono-debug.h
191         (MONO_DEBUGGER_VERSION): Bumped to 72.
192
193         * debug-mono-symfile.h
194         (MonoSymbolFileMethodIndexEntry): Removed.
195         (MonoSymbolFileMethodEntry): New public typedef.
196         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
197         (MonoSymbolFileSourceEntry): Remove everything except `index' and
198         `data_offset'.
199         (MonoSymbolFileMethodEntry): Removed.
200         (MonoSymbolFileLexicalBlockEntry): Removed.
201         (MonoSymbolFileLineNumberEntry): Removed.
202         (MonoDebugLexicalBlockEntry): Removed.
203         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
204         removed `num_il_offsets' and `il_offsets'.
205         (MonoSymbolFile): Replace `version' with `major_version' and
206         `minor_version'.
207         (MONO_SYMBOL_FILE_VERSION): Replace with
208         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
209         `MONO_SYMBOL_FILE_MINOR_VERSION'.
210
211         * debug-mono-symfile.c
212         (mono_debug_symfile_lookup_location): Add support for the new line
213         number table format.
214
215 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
216
217         * metadata.c (free_generic_class): Release the inflated
218         MonoClass of dynamic generic classes if it's not a generic
219         type definition.
220
221 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
222
223         * verify.c: Reapplied more of the reverted changes.
224
225 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
226
227         * reflection.c (lookup_custom_attr): Clean the cached flag or
228         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
229         for SRE types.
230
231 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
232
233         * verify.c: Reapplied a small part of the reverted changes.
234
235 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
236
237         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
238
239         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
240         previously in managed code.
241         (mono_monitor_exit): Ditto.
242         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
243
244         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
245         the managed definition.
246
247 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
248
249         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
250
251 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
252
253         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
254         
255         * monitor.c: Add some micro optimizations.
256
257         * icall.c (type_from_typename): Handle 'bool'.
258
259 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
260
261         * verify.c: Implement constructor verification per P III 1.8.1.4.
262         Fixes #396716.
263
264 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
265
266         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
267         holding the assemblies lock here too.
268
269 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
270
271         * verify.c: Kill stack_top function.
272
273 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
274
275         * verify.c: Kill stack_get function.
276
277 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * verify.c (mono_method_verify): Last change broke the build. Fixed.
280
281 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
282
283         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
284         more reliable.
285
286         * verify.c (mono_method_verify): Inflate params and locals to avoid
287         mismatch when checking for compatibility.
288
289 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
290
291         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
292         Length prefix should be size in bytes. Fix bug #339530.
293         
294         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
295         Length prefix should be size in bytes. Fix bug #339530.
296
297         Code is contributed under MIT/X11 license.
298
299 2008-06-05  Bill Holmes <billholmes54@gmail.com>
300
301         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
302
303         Contributed under MIT/X11 license.
304
305 2008-06-05  Martin Baulig  <martin@ximian.com>
306
307         * mono-debug-debugger.c
308         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
309
310 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
311
312         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
313         while holding the assemblies lock to prevent deadlocks. Handle the case
314         where the search hook returns NULL but the assembly was still loaded.
315         Fixes #323696.
316
317         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
318         modify domain state.
319
320 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
321
322         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
323         * Makefile.am (pedump_LDADD): Post-process object files and
324         add dtrace-generated object file, if necessary.
325
326         Code is contributed under MIT/X11 license.
327
328 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
329
330         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
331
332 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
333
334         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
335
336 2008-06-04  Mark Probst  <mark.probst@gmail.com>
337
338         * threads.c: Try to free everything from the delayed free table
339         when shutting down threads, and set the variable to NULL after the
340         table is freed so that calling
341         mono_thread_hazardous_try_free_all() when shutting down the root
342         domain doesn't crash.
343
344 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
345
346         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
347         the caller if resulting type was inflated.
348
349         * class.c (mono_class_create_from_typespec): Free the MonoType if it
350         was inflated.
351
352         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
353
354
355 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
356
357         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
358         class library tests.
359
360         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
361         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
362         #396989.
363
364 2008-06-04  Mark Probst  <mark.probst@gmail.com>
365
366         * domain.c, domain-internals.h: The JIT infos are now freed by the
367         JIT info table code.  They are freed immediately if there only a
368         single JIT info table in circulation.  If there is more, the free
369         is delayed via a queue.
370
371         * threads.c, threads-types.h: New hazard pointer function for
372         freeing all freeable delayed items in one sitting.
373
374 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
375
376         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
377
378         * reflection.c (typebuilder_setup_properties): Same.
379
380         * reflection.c (typebuilder_setup_events): Same.
381
382 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
383
384         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
385         and use it for allocating memory.
386
387         * reflection.c (mono_marshal_spec_from_builder): Same.
388
389         * reflection.c: Change code to use new signatures.
390
391         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
392
393 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
394
395         * decimal.c (rescale128): Put back one line which was accidently commented
396         out.
397         
398         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
399         to cause crashes.
400
401 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
402
403         * reflection.c (mono_reflection_generic_class_initialize): Name must
404         be always malloc'ed so we can free it later on. Do this for field, property
405         and event.
406
407         * metadata.c (free_generic_class): Free field, property and event names.
408
409 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
410
411         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
412         instead of g_memdup.
413
414         * reflection.c (typebuilder_setup_fields): Same.
415
416 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
417
418         * decimal.c (rescale128): Optimize this function a bit more.
419
420 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
421
422         * metadata.c (free_generic_class): Release some memory from
423         SRE generic classes.
424
425 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
426
427         * reflection.c (mono_image_get_generic_field_token): No reference
428         to name is kept, free it.
429
430         * reflection.c (mono_reflection_generic_class_initialize): Free
431         more memory of the inflated field.
432
433 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
434
435         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
436         code.
437
438 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
439
440         * reflection.c (mono_dynamic_image_free): Release memory used by
441         MonoDynamicImage::array_methods elements.
442
443         * reflection.c (assembly_add_win32_resources): Release memory after
444         encoding.
445
446 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
447
448         * decimal.c (log2_32): Use an optimized version for this function too.
449         
450         * decimal.c (log2_64): Fix this on 32 bit machines.
451
452 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
453
454         * class.c (mono_dup_array_type): Implement allocation using a mempool.
455
456         * class.c (mono_metadata_signature_deep_dup): Same.
457
458         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
459         a mempool.
460
461         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
462
463         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
464
465         * metadata-internals.h: Added mono_metadata_signature_dup_full.
466
467         * class-internals.h: Update signatures to take a MonoMemPool.
468
469 2008-06-02  Dick Porter  <dick@ximian.com>
470
471         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
472         * icall-def.h: Add
473         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
474         FormatMessage API to get the error text.  Fixes bug 321827.
475
476 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
477
478         * decimal.c: Add some micro optimizations to make decimal operations faster.
479
480 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
481
482         * reflection.c (method_encode_clauses): Take a mempool
483         as parameter and use it to allocate the clause array.
484
485         * reflection.c (mono_image_get_field_on_inst_token): Free
486         the inflated type after encoding it.
487
488         * reflection.c (mono_dynamic_image_free): Free each element
489         of MonoDynamicImage::gen_params.
490
491         * reflection.c (reflection_methodbuilder_to_mono_method):
492         Allocate the generic param array from the mempool.
493         Allocate signature params from the mempool.
494
495         * reflection.c (mono_reflection_generic_class_initialize):
496         Free inflated fields after been used.
497
498 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
499
500         * icall.c: Reapply the memory leak fixes as they no
501         longer make mono crash.
502
503 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
504
505         * reflection.c (mono_type_get_object): Don't store the suplied
506         MonoType with type_hash. A caller which pass a type that
507         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
508         might end with a pointer to freed memory.
509         The solution is to use byval_arg or this_arg from the associated
510         MonoClass of the supplied type.
511
512 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
513
514         * icall.c: Revert the rest of the last change as it breaks the build too.
515
516 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
517
518         * icall.c: Revert a leak fix as it's breaking the build.
519
520 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
521
522         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
523
524 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
525
526         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
527
528 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * icall.c: Fix some memory leaks.
531
532 2008-05-29  Dick Porter  <dick@ximian.com>
533
534         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
535         async socket operations from the pending list when a socket
536         closes.  Leaving it until the threadpool services the event
537         exposes a race condition when a socket descriptor is reused.
538         Fixes bug 377589.
539
540 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * object.c: Fix negative index check for array alocation.
543
544 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
545
546         * icall.c, marshal.c: Delegate wrappers should skip visibility.
547         This check is performed by the verifier for IL created delegates
548         and by Delegate::CreateDelegate for programatically created ones.
549         Fixes #372406.
550
551 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
554         Fix code to use mono_array_size_t instead of int.
555
556         Based on patch by Luis F. Ortiz.
557         Contributed under X11 license.
558         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
559
560 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
561
562         * icall.c: Added ves_icall_System_Array_GetLongLength and
563         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
564         arrays.
565
566         * icall.h: Export both new functions.
567
568         Based on patch by Luis F. Ortiz.
569         Contributed under X11 license.
570         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
571
572 2008-05-28  Martin Baulig  <martin@ximian.com>
573
574         The debugger now requires exactly r103463.
575
576         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
577         This version is not supported by the debugger, wait for 72.
578
579 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
580
581         * object.h: Changed array related functions to use
582         mono_array_size_t instead of guint32. Forgot to commit this file.
583
584         Patch by Luis F. Ortiz.
585         Contributed under X11 license.
586         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
587
588
589 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
590
591         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
592         don't define it. Use the number literal instead.
593
594 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
595
596         * icall.c: Changed array related functions to use
597         mono_array_size_t instead of guint32.
598
599         * icall.c (ves_icall_System_Array_GetLength): Check for length
600         overflow under MONO_BIG_ARRAYS.
601
602         Based on patch by Luis F. Ortiz.
603         Contributed under X11 license.
604         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
605
606 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
607
608         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
609
610         Based on patch by Luis F. Ortiz.
611         Contributed under X11 license.
612         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
613
614 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
615
616         * object.c, object.h: Changed array related functions to use
617         mono_array_size_t instead of guint32.
618
619         Patch by Luis F. Ortiz.
620         Contributed under X11 license.
621         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
622
623 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
624
625         * object.h: Introduced mono_array_size_t typedef. This must be used
626         in all places an array length is expected. This is 64bits wide if
627         MONO_BIG_ARRAYS is enabled.
628
629         Patch by Luis F. Ortiz.
630         Contributed under X11 license.
631         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
632
633 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
634
635         * security-manager.c class.c: Set the class exception info by calling
636         mono_class_set_failure ().
637
638         * class.c (mono_class_get_exception_data): New accessor function.
639         (mono_class_set_failure): Store exception_data in the property hash.
640
641         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
642         the struct as a property.
643
644         * loader.c (mono_get_method_full): Store the lookup result for method
645         tokens in method_cache, the others in methodref_cache to decrease the memory
646         usage of hash tables.
647
648         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
649         (mono_image_init): method_cache is lazy inited now.
650
651         * metadata-internals.h (struct _MonoImage): Change method_cache to
652         a MonoValueHashTable, add a separate methodref_cache.
653
654 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
655
656         * number-formatter.h: Fix tables to avoid arithemtic overflow in
657           Double.ToString as exposed by Bug #383531.
658
659 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
660
661         * number-formatter.h: Make some tables static.
662
663         * class.c (mono_method_set_generic_container): New accessor function.
664         (mono_method_get_generic_container): Ditto.
665
666         * class-internals.h (struct _MonoMethod): Remove rarely used 
667         'generic_container' field, store it in the property hash instead. Add 
668         'is_generic' boolean field instead.
669
670         * image.c (mono_image_init): Initialize property_hash.
671         (mono_image_close): Destroy property_hash.
672
673         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
674         hold rarely used fields of runtime structures belonging to this image.
675
676         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
677         to get/set method->generic_container.
678
679         * loader.c (mono_get_method_from_token): Avoid loading the method header for
680         generic methods.
681
682 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
683
684         * class.c (mono_class_inflate_generic_method_full): Don't increase
685         mono_stats.inflated_method_count for methods found in the cache.
686
687         * threads.c (mono_thread_request_interruption): Add a comment about 
688         QueueUserAPC ().
689
690 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
691
692         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
693         interface_offsets_packed table.
694         
695         * class.c (mono_class_init): Remove some dead code.
696
697         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
698         mono_class_setup_vtable () when CAS is active to detect security problems.
699
700 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
701
702         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
703
704         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
705         parameters as it's irrelevant for delegate checking.
706
707 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
708
709         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
710
711         * class.c (mono_class_init): Control the creation of a generic vtable using
712         a global which is true by default, but set to false by the runtime startup code.
713         
714         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
715         Disabled for now since it breaks the embedding API.
716         Move the setup of class->methods for arrays to mono_class_setup_methods ().
717         (mono_class_setup_methods): Add a memory barrier.
718
719         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
720         when mono_class_init () doesn't compute the generic vtable.
721         
722 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
723         * profiler.c: Added mono_profiler_install_statistical_call_chain,
724         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
725         to support call chains (backtrace) in the stat profiler.
726         * profiler.c, profiler-private.h: Likewise.
727
728 2008-05-22  Mark Probst  <mark.probst@gmail.com>
729
730         * generic-sharing.c: Init generic class when a method of it is
731         requested via a runtime generic context.
732
733 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
734
735         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
736
737         * reflection.c (mono_type_get_object): Add a FIXME.
738
739         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
740
741         * class.c (mono_class_get_method_by_index): New helper function, returning an
742         entry in the class->methods array.
743
744 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
745
746         * class.c (mono_class_init): Only do the array optimization for szarrays. 
747         Avoid creating a generic vtable for generic instances as well.
748         (mono_class_get_method_from_name_flags): Don't search in the metadata for
749         generic instances.
750
751 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * loader.c (mono_get_method_constrained): Inflate the signature
754         with class context. Fix #325283.
755
756 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
757
758         * object.c (mono_class_create_runtime_vtable): Add a comment.
759
760         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
761         where needed.
762         (setup_interface_offsets): Handle the case when this is called twice for arrays.
763         (mono_class_setup_vtable_general): Add an assert.
764         (mono_class_init): Avoid creating a generic vtable for arrays.
765
766         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
767         here, let mono_class_init () do that.
768
769         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
770         interfaces in mscorlib.
771
772         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
773         interfaces. Add some comments.
774         (mono_class_init): Call mono_class_setup_methods () here since it is no
775         longer called by mono_class_setup_vtable ().
776
777         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
778         not set in class->vtable.
779         (mono_class_create_runtime_vtable): Reenable the disabled code.
780
781         * object.c (mono_class_create_runtime_vtable): Disable the last change for
782         now as it causes some test failures.
783
784         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
785         if using the vtable trampoline. Also remove some strange code which put the
786         generic methods themselves into the vtable slots. Remove the AOT init_vtable
787         stuff as it is no longer needed.
788
789 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
790
791         * pedump.c: Give make --verify all option check code as well.
792         Using --verify code won't check for metadata now.
793
794 2008-05-19  Martin Baulig  <martin@ximian.com>
795
796         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
797
798         * mono-debug.c
799         (_mono_debug_using_mono_debugger): New global variable; it's set
800         directly by the debugger, so mono_debug_using_mono_debugger() also
801         works after attaching.
802
803 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
804
805         * object.c (mono_class_create_runtime_vtable): Use memory barriers
806         as we do double checked locking on MonoClass::runtime_info and
807         MonoClassRuntimeInfo::domain_vtables.
808
809 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
810
811         * debug-helpers.c (print_field_value): Fix a warning.
812
813 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
814
815         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
816         set in the AOT case.
817
818 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
819
820         * class.c (mono_class_setup_vtable_general): Use memory barriers
821         as we do double checked locking on MonoClass::vtable.
822
823 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * reflection.c (resolve_object): Inflate only if the generic context
826         is not null. Fixes #389886.
827
828 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
829
830         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
831         instead of g_free.
832
833         Code is contributed under MIT/X11 license.
834
835 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
836
837         * class.c: Revert unrelated change.
838
839 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
840
841         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
842         a generic instantiation, use mono_class_from_mono_type instead of playing
843         with MonoType directly.
844
845 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
846
847         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
848         checks must ignore generic instantiations, so mono_class_has_parent is not
849         suitable. Fixes #390128.
850
851 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
852
853         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
854         it to avoid registering tokens during metadata generation. Fixes #390023.
855
856 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
857
858         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
859         consistent.
860
861         Contributed under MIT/X11 license.
862
863 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
864
865         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
866         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
867         to fixup the EXE image.
868         (mono_cleanup): Use mono_close_exe_image.
869         (mono_close_exe_image): New function.
870         * image.c: Include "marshal.h".
871         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
872         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
873         counting when the image is loaded outside of mono_image_open_full. Set status
874         based on GetLastError.
875         * coree.c: Include required headers. Add init_from_coree.
876         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
877         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
878         (_CorExeMain): Set init_from_coree.
879         (CorExitProcess): Only call ExitProcess for now.
880         (CorBindToRuntimeEx): New stub implementation.
881         (CorBindToRuntime): New function.
882         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
883         (MonoFixupExe): ILONLY executables require no fixups.
884         (mono_set_act_ctx): New function to set activation context.
885         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
886         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
887         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
888         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
889         as MONO_INTERNAL.
890         * domain-internals.h: Add mono_close_exe_image.
891
892         Contributed under MIT/X11 license.
893
894 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
895
896         * metadata.c (mono_metadata_compute_size): Correctly calculate field
897         size for generic param and event tables. Fixes #388977.
898
899 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
900
901         * loader.c (mono_method_signature): Use memory barriers because of the double
902         checked locking pattern.
903
904         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
905         aborting or aborted as well. Fixes #376391.
906         
907         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
908         existing runtime state in the Suspend handler during shutdown.
909
910 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
911
912         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
913
914         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
915         which are starting up or shutting down.
916
917         * threads.c (mono_threads_set_shutting_down): Don't return a value since
918         this function never returns if the runtime is already shutting down.
919
920         * icall.c (ves_icall_System_Environment_Exit): Update after 
921         mono_threads_set_shutting_down () signature change.
922         
923 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
924
925         * class.c: Added can_access_instantiation to verify if the instantiation
926         is visible. Fix access check for nested types as they returned TRUE
927         before doing type and generic instantiation visibility checks.
928
929 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * reflection.c (mono_reflection_create_generic_class): The created type
932         must have a different container from its TypeBuilder. Otherwise they
933         will end sharing generic arguments, which is wrong.
934
935         Due to the sharing, making a generic instance of the created type using
936         the TypeBuider generic arguments resulted in the generic type definition
937         been returned, which is wrong as well.
938
939         As a bonus the code was leaking the type_params array. This memory should
940         be allocated from the image mempool.
941
942         This fixes bug #354047.
943
944 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
945
946         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
947         to here         as they are now used in assembly.c new code.
948         Added a skipverification flag to MonoAssembly.
949         New internal function mono_assembly_has_skip_verification.
950
951         * assembly.c: New function mono_assembly_has_skip_verification. It checks
952         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
953         part of #387274.
954
955 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
956
957         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
958         needed. Fixes #387034.
959
960         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
961
962 2008-05-06  Miguel de Icaza  <miguel@novell.com>
963
964         * assembly.c (mono_assembly_load_reference): Prevent crash while
965         disassembling Silverlight 2.0 executables while we still do not
966         have GACed libraries.
967
968 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
969
970         * reflection.c: Special case generic type definitions as well. Fixes #383444.
971
972 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
973
974         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
975         of the dynamic case. Fixes #387404.
976
977 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
978
979         *verify.c (mono_verifier_is_class_full_trust): If under
980         verify_all and the verifier mode was not set, only
981         gac and corlib types are fulltrust. This makes --verify-all
982         usable to detect unverifiable code, which is the expected
983         use case.
984
985 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
986
987         * verify.h: Ops, commited the header with debug
988         enabled.
989
990 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
991
992         * verify.c (merge_stack): Use the new value on unverifiable
993         stack merges.
994
995         * verify.c (verify_type_compatibility_full): Comparison
996         of nullable types can't use mono_class_is_assignable_from.
997
998         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
999         that makes all verification errors be reported.
1000
1001         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
1002         mono_method_verify.
1003
1004 2008-05-05  Robert Jordan  <robertj@gmx.net>
1005
1006         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
1007         support for value types. See #386415.
1008
1009         * object.c: comments.
1010
1011         Code is contributed under MIT/X11 license.
1012
1013 2008-05-05  Martin Baulig  <martin@ximian.com>
1014
1015         * debug-mono-symfile.h
1016         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
1017         for old pre-terrania symbol files.
1018
1019 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1020
1021         * mono-config.c: Add ppc64 architecture.
1022
1023         Code is contributed under MIT/X11 license.
1024
1025 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
1026
1027         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
1028           PPC64 uses function descriptors as well.
1029
1030         Code is contributed under MIT/X11 license.
1031
1032 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * object.c (compute_class_bitmap): Ignore literal static fields.
1035
1036         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
1037         var has an invalid format.
1038         (describe_ptr): Add some sanity checks for the vtable.
1039         (add_nursery_frag): Clear unused nursery fragments.
1040         (major_collection): Clear all remaining nursery fragments.
1041
1042 2008-05-03  Robert Jordan  <robertj@gmx.net>
1043
1044         * image.c, metadata-internals.h: add thunk_invoke_cache.
1045
1046         * marshal.c, marshal.h: implement
1047         mono_marshal_get_thunk_invoke_wrapper ().
1048
1049         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
1050
1051         Code is contributed under MIT/X11 license.
1052
1053 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1054
1055         * verify.c (do_leave): Empty the stack.
1056
1057 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
1058
1059         * class.c (mono_class_is_assignable_from): Variance
1060         doesn't work between reference and value types. For example,
1061         given type C<T+>, C<int32> is not assignable to C<object>.
1062         Break the argument checking loop on first error. 
1063
1064 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
1065
1066         * icall.c : base64_to_byte_array() needs some more strict
1067           check for sequence of '=' characters. Patch by Santa
1068           Marta (http://deee.g.hatena.ne.jp/santamarta).
1069
1070           Contributed under MIT/X11 license.
1071           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
1072
1073 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
1074
1075         * domain.c: Disable LoadLibrary support to fix Win32 build.
1076
1077         Code is contributed under MIT/X11 license.
1078
1079 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
1080
1081         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
1082         to help with cache behaviour.
1083
1084 2008-05-01  Miguel de Icaza  <miguel@novell.com>
1085
1086         * appdomain.c (mono_domain_from_appdomain): Add new accessor
1087         method. 
1088
1089 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
1092
1093 2008-05-01  Dick Porter  <dick@ximian.com>
1094
1095         * process.c (process_get_fileversion): Only pass 16 bits of
1096         language ID to VerLanguageName.  Fixes bug 381204.
1097
1098 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1099
1100         * verify.c (mono_method_verify): Fix the comparison
1101         operator for code bounds check.
1102
1103 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * verify.c (mono_method_verify): Check the bounds of
1106         all access of the code array.
1107
1108 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
1109
1110         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
1111
1112 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * image.c (mono_image_strong_name_position): Fix return value when the rva is
1115         not valid.
1116
1117 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
1118
1119         * loader.c (mono_get_method_from_token, mono_method_signature): Add
1120         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
1121         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
1122         fixup main EXE images when using mono.exe for mixed-mode assembly support.
1123         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
1124         mono_runtime_load.
1125         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
1126         runtime initialization from metadata.
1127         * assembly.c: Remove obsolete ceGetModuleFileNameA.
1128         (mono_set_rootdir): Use mono_get_module_file_name.
1129         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
1130         handles.
1131         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
1132         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
1133         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
1134         MonoCLIImageInfo. Add support for module handles.
1135         (load_cli_header): Update mono_cli_rva_image_map signature.
1136         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
1137         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
1138         (mono_image_rva_map): Add support for module handles.
1139         (mono_image_ensure_section_idx): Add support for module handles.
1140         (mono_image_close): Add support for module handles.
1141         (do_load_header): Add support for module handles.
1142         (mono_image_open_from_module_handle): New function for internal use.
1143         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
1144         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
1145         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
1146         handles.
1147         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
1148         * image.h: Add mono_image_fixup_vtable.
1149         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
1150         support.
1151         * coree.h: New file.
1152         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
1153         unsupported native code.
1154         (mono_marshal_set_callconv_from_modopt): New function splitted from
1155         mono_marshal_get_managed_wrapper.
1156         (mono_marshal_get_managed_wrapper): Use
1157         mono_marshal_set_callconv_from_modopt.
1158         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
1159         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
1160         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
1161         that results in a deadlock when the runtime is loaded in _CorDllMain.
1162         * Makefile.am: Add coree.c and coree.h.
1163
1164         Contributed under MIT/X11 license.
1165
1166 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1167
1168         * generic-sharing.c: Search for type arguments in array element
1169         types as well.
1170
1171 2008-04-28  Mark Probst  <mark.probst@gmail.com>
1172
1173         * class-internals.h, generic-sharing.c: New, small runtime generic context.
1174
1175         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
1176
1177         * object.c: Don't setup the RGCTX when the vtable is created,
1178         because we're setting it up lazily now.
1179
1180 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
1183         64 bit support.
1184
1185 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1186
1187         * verify.c (verify_class_for_overlapping_reference_fields): 
1188         If class is under fulltrust allow reference types to overllap
1189         if they have the same RVA.
1190
1191 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * pedump.c: Added new flag valid-only, that makes the verifier
1194         behaves just like --security=validil. It won't fail type load
1195         due to unverifiable restrictions.
1196
1197 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1198
1199         * class-internals.h (struct MonoMethod): Added a verification_success
1200         field to cache verifier executions. Reduced MonoMethod:slot size by
1201         one bit.
1202
1203 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
1206         instead of a 'vt' argument to save an indirection and to allow these to be used
1207         for valuetypes.
1208         (scan_vtype): New helper function to scan an area using a gc descriptor.
1209         (mono_gc_wbarrier_value_copy): Implement this.
1210         (handle_remset): Add support for REMSET_VTYPE.
1211         (find_in_remset_loc): Ditto.
1212         (mono_gc_base_init): Allow some debugging options to be controlled through the
1213         use of the MONO_GC_DEBUG env variable.
1214         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
1215         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
1216
1217 2008-04-23  Martin Baulig  <martin@ximian.com>
1218
1219         * domain.c (mono_domain_create): Move the call to
1220         mono_debug_domain_create() down, after allocating the domain id.
1221
1222 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         verify.c (verify_class_for_overlapping_reference_fields): Skip
1225         static fields while verifying for overlapping fields as they
1226         don't matter at all.
1227
1228 2008-04-23  Marek Habersack  <mhabersack@novell.com>
1229
1230         * domain-internals.h: added a declaration of
1231         mono_make_shadow_copy.
1232
1233         * assembly.c (mono_assembly_open_full): shadow copying of
1234         assemblies moved to here, so that all the assemblies within the
1235         application domain's private binary directories can be
1236         processed. Fixes bug #380546
1237
1238         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
1239         mono_make_shadow_copy and made non-static. The decision whether
1240         to shadow-copy an assembly is made based on its location - it's
1241         copied if it's in one of the private application domain binary
1242         directories and its different to the target file in the shadow
1243         directory. Fixes bug #380546
1244
1245 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
1248
1249         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
1250         types.
1251
1252         * reflection.c (mono_image_create_token): Handle 
1253         Method/ConstructorOnTypeBuilderInst.
1254         (resolve_object): Ditto.
1255         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
1256         so it can be called from resolve_object. Also handle the case when the inflated
1257         class already has its methods setup.
1258
1259 2008-04-21  Martin Baulig  <martin@ximian.com>
1260
1261         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
1262
1263 2008-04-20  Geoff Norton  <gnorton@novell.com>
1264
1265         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
1266         pointer dereference.
1267
1268 2008-04-15  Marek Habersack  <mhabersack@novell.com>
1269
1270         * appdomain.c (try_load_from): if IOMAP is in effect, call the
1271         portability API to look up the assembly file. Fixes behavior in
1272         situations when the application has a bin/ directory, but the
1273         assembly search patch refers to Bin/ (and thus the requested file
1274         name is Bin/SomeLibrary.dll). Fixes bug #379888
1275
1276 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         verify.c (mono_type_is_generic_argument): Extracted this check
1279         from a dozen places to here.
1280
1281         verify.c: Fixed all issues related to boxing generic arguments
1282         and their constraints.
1283
1284 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         verify.c (mono_class_interface_implements_interface): Fix win32 build.
1287
1288 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
1291         isn't finished yet. Fixes #363447.
1292
1293 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
1296         Fixes #346419.
1297
1298 2008-04-13  Jb Evain  <jbevain@novell.com>
1299
1300         * domain.c: update the 2.1 profile versions.
1301         Merged from the Moonlight 2 branch.
1302
1303 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
1306         mscorlibs for the non-refonly case as well.
1307
1308         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
1309         in mono_assembly_load_from_full (). Fixes #378924.
1310
1311 2008-04-11  Geoff Norton  <gnorton@novell.com>
1312
1313         * icall.c: The global extern environ doesn't exist on Mac.  We
1314         need to call NSGetEnviron instead.
1315
1316 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         verify.c: Add generic method constraint verification.
1319
1320 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         class.c (mono_class_inflate_generic_method_full): Add a long
1323         explanation to the is_mb_open hack. Remove the FIXME.
1324
1325 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1326
1327         * verify.c (mono_method_verify): Mark all unknown opcodes
1328         as invalid. Mark jmp as unverifiable.
1329
1330 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * verify.c: Add code to do type constraint verification on class instances.
1333
1334         * verify.c (mono_verifier_verify_class): Use the type constraint 
1335         verification code.
1336
1337 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
1338
1339         * class.c (mono_class_get_field_default_value): Don't pass cindex
1340         as hint to mono_metadata_get_constant_index. The local is not initialized
1341         and should contain garbage most of the time. This could only work
1342         with a lot of luck.
1343
1344 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1345
1346         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
1347
1348 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
1351
1352         * class.c (mono_class_from_generic_parameter): Save the token of the
1353         generic param in MonoClass::sizes.generic_param_token.
1354
1355         * reflection.c (mono_custom_attrs_from_class): If the class type is
1356         VAR or MVAR retrieve the attributes of the generic param.
1357
1358 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1359
1360         * class.c (mono_class_init): Do class verification if the verifier
1361         is enabled.
1362
1363 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         * verify-internal.h: Added mono_verifier_verify_class.
1366
1367         * verify.c: Added mono_verifier_verify_class. It checks for
1368         classes with explicit layout that have overlapping reference fields.
1369
1370         * pedump.c: Init the verifier state prior to verification. Fixed
1371         command line arguments.
1372
1373 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * Makefile.am: Added verify-internals.h, hopefully fix the build.
1376
1377 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
1378
1379         * verify-internals.h: Fix a warning.
1380
1381 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1382
1383         * verify-internals.h: New header with the verifier configuration
1384         extracted from mini.c.
1385
1386         * verify.c: Implemented the new functions exported by verify-internals.h.
1387
1388 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1389
1390         * verify.c: Add proper verification of ckfinite.
1391
1392 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * verify.c (do_conversion): Improved error message to something
1395         more meanfull.
1396
1397         * verify.c (check_is_valid_type_for_field_ops): Fix to work
1398         with primitive types.
1399
1400 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1401
1402         * verify.c: Added tail prefix checking. Marked icall
1403         as unverifible.
1404
1405 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * verify.c: Fix the detection of branches to the middle
1408         of an instruction.
1409
1410 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1411
1412         * verify.c: Implemented verification of volatile. and
1413         unaligned. prefix. Check if a type is valid after retrieving it.
1414
1415 2008-04-01  Dick Porter  <dick@ximian.com>
1416
1417         * process.c (process_get_fileversion): If there's no string block,
1418         set the file language to en_US.  Fixes the other new part of bug
1419         374600.
1420
1421 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
1422
1423         * class.c: New functions mono_method_can_access_field_full and
1424         mono_method_can_access_method_full. They perform type visibility
1425         and type site check.
1426
1427         * class-internal.h: Added exported functions.
1428
1429         * verify.c: Use new functions to implement proper visibility checks.
1430
1431 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
1432
1433         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
1434
1435 2008-03-28  Dick Porter  <dick@ximian.com>
1436
1437         * process.c (process_get_fileversion): Use the first language ID
1438         we see, rather than insisting on an invariant language.  Fixes bug
1439         374600.
1440
1441 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
1444         the streams to fix reading of invalid memory later.
1445
1446         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
1447         to ease debugging.
1448
1449 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
1452         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
1453
1454 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
1455         * threads.h: Added MonoThreadManageCallback type and
1456         mono_thread_set_manage_callback prototype
1457         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
1458         (used to store the mono_thread_manage callback).
1459         * threads.c: Added mono_thread_set_manage_callback, and handle
1460         "MonoThread->manage_callback" in build_wait_tids.
1461
1462 2008-03-26  Dick Porter  <dick@ximian.com>
1463
1464         * process.c (process_get_fileversion): Set FileVersionInfo strings
1465         to Empty when the resource doesn't have the particular info.
1466         Fixes bug 355717.
1467
1468 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
1469
1470         * verify.c (mono_method_verify): Proper prefix validation.
1471
1472 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
1475         itself in a separate argument instead of throwing them. Fixes #373448.
1476
1477         * appdomain.c: Bump corlib version.
1478
1479 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1480
1481         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
1482
1483 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
1484
1485         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
1486         version macros.
1487
1488 2008-03-20  Mark Probst  <mark.probst@gmail.com>
1489
1490         * generic-sharing.c, class-internals.h: Code for putting
1491         reflection types into the runtime generic context.
1492
1493 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1494
1495         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
1496         Fixes #340662. 
1497
1498
1499 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1500
1501         * verify.c (VerifyContext): Added instruction prefix data to the struct.
1502
1503         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
1504
1505         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
1506
1507         * verify.c (do_cast): Let the result value keep the boxed status.
1508
1509         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
1510
1511 2008-03-17  Jb Evain  <jbevain@novell.com>
1512
1513         * reflection.c: when running on a 2.0 runtime, emit
1514         unconditionally the #~ header version as 2.0, and the
1515         CLI header version as 2.5, for symmetry's sake with csc.
1516
1517 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * class.c: Remove the unused cache_interface_offsets stuff.
1520
1521         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
1522         profiler.c: Fix warnings.
1523
1524 2008-03-16  Mark Probst  <mark.probst@gmail.com>
1525
1526         * generic-sharing.c, class-internals.h: Support for putting
1527         methods into the runtime generic context.
1528
1529 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * class.c (mono_class_setup_fields): Ignore calls made to this function for
1532         classes which are generic instances of not-yet finished typebuilders. Fixes
1533         #351172.
1534
1535         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
1536
1537 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
1540
1541         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
1542         field, replace it with a hash table in MonoDynamicImage.
1543
1544         * reflection.c (inflate_mono_method): Access the generic definition object from
1545         image->generic_def_objects instead of imethod->reflection_info.
1546
1547         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
1548
1549         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
1550         
1551         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
1552         function in reflection.c so it is easier to keep in sync with the dynamic image
1553         creation code.
1554
1555         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
1556         mono_image_close ().
1557
1558 2008-03-15  Mark Probst  <mark.probst@gmail.com>
1559
1560         * class.c (mono_class_generic_sharing_enabled): Disable generic
1561         sharing for all architectures except AMD64 and x86 to fix build.
1562
1563 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * verify.c: Use the generic definition MonoGenericContext when available.
1566         Remove code for checking generics instance compatibility in favor of
1567         mono_class_is_assignable_from.
1568
1569 2008-03-14  Mark Probst  <mark.probst@gmail.com>
1570
1571         * marshal.c, marshal.h, metadata-internals.h, image.c,
1572         wrapper-types.h: New wrapper for invoking a shared static method
1573         without having to pass the runtime generic context argument.
1574
1575 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
1576
1577         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
1578
1579 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
1582         
1583         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
1584         create a token from a FieldOnTypeBuilderInst.
1585         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
1586         (resolve_object): Ditto.
1587
1588         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
1589         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
1590
1591 2008-03-14  Martin Baulig  <martin@ximian.com>
1592
1593         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
1594
1595         * debug-mono-symfile.h
1596         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
1597         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
1598
1599 2008-03-10  Martin Baulig  <martin@ximian.com>
1600
1601         * debug-mono-symfile.h
1602         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
1603         `lexical_block_table_offset'.
1604         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
1605         `lexical_blocks'.
1606         (MonoSymbolFile): Added `version'.
1607
1608         * mono-debug.h
1609         (MonoDebugLexicalBlockEntry): Removed.
1610         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
1611         `lexical_blocks'.
1612
1613         * mono-debug.c (mono_debug_add_method): Don't compute lexical
1614         blocks here; the debugger now does this internally.
1615
1616 2008-02-27  Martin Baulig  <martin@ximian.com>
1617
1618         * object.c (mono_runtime_exec_main): Call
1619         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
1620         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
1621
1622 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1623
1624         * verify.c (verify_type_compatibility_full): Allow native int to be converted
1625         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
1626
1627 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1628
1629         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
1630         ldftn with a virtual method.
1631
1632 2008-03-13  Geoff Norton  <gnorton@novell.com>
1633
1634         * decimal.c:  Only include memory.h if the platform has it.
1635
1636 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
1637
1638         * assembly.c, class.c, metadata-internals.h: make sure public key
1639         tokesns are compared in a case-insensitive way. Also, all
1640         the lookups in the GAC use a lowercase public key token
1641         (gaacutil already does the lowercasing on install). Fixes
1642         bug #369541.
1643
1644 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
1645
1646         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
1647         and return value.
1648
1649 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
1650
1651         * image.c: when someone loads a mscorlib from a file, return the
1652         currently loaded mscorlib (fixes bug #369253).
1653
1654 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1655
1656         * class.c: handle types with no parents by forcing them to have
1657         System.Object as a parent and marking them as broken (this currently
1658         allows the first part of bug #369173 to work as well, likely because
1659         we don't check for typeload exceptions everywhere yet).
1660
1661 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
1662
1663         * class.c: more complete check that types belong to corlib
1664         (fixes second part of bug #369173).
1665
1666 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
1667
1668         * generic-sharing.c:  Including glib.h for the MSVC builds to define
1669           "inline" to "__inline" before including mono-membar.h.
1670           
1671         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
1672           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
1673           MSVC builds.
1674
1675         Contributed under MIT/X11 license.
1676
1677 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1678
1679         * verify.c (do_invoke_method): Remove return type validation.
1680
1681         * verify.c (do_ret): Do return type validation at return site instead of
1682         call site.
1683
1684 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
1685
1686         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
1687
1688         * verify.c: Some todos cleaned and improved a few error messages.
1689
1690 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
1693
1694 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
1697         system types correctly.
1698
1699         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
1700         function.
1701
1702 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * assembly.c (build_assembly_name): Fix a warning.
1705
1706 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
1707
1708         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
1709         the called function takes an object type argument. Fixes storing or
1710         valuetypes across remoting as well as reducing memory usage.
1711         * image.c, metadata-internals.h: remove now unused ldfld_remote and
1712         stfld_remote wrapper caches.
1713
1714 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
1717         is not found.
1718
1719         * reflection.c (mono_image_register_token): New helper function to save
1720         a token->object mapping.        
1721
1722         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
1723         managed code.
1724
1725         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
1726         one dimension arrays. Fixes #367670.
1727         (mono_reflection_get_type_internal): Ditto.
1728
1729 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
1730
1731         * marshal.c: mono_load_remote_field_new() always returns object.
1732         so use the proper signature (fixes bug #366445).
1733
1734 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1735         
1736         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
1737         add an 'inline_failure' flag instead.
1738
1739 2008-03-04  Mark Probst  <mark.probst@gmail.com>
1740
1741         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
1742         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
1743         contains the location of "this", used for exception handling.
1744
1745 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
1748         their size on all platforms for perf reasons.
1749
1750 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
1753         object-internal.h
1754
1755         * object-internal.h: Same.
1756
1757 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1758
1759         * reflection.h: Fix the build I just broke.
1760
1761 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1762
1763         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
1764         Test if a token is valid, this remove explicit usage of 
1765         MonoDynamicImage::tokens from the verifier code.
1766
1767         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
1768
1769         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
1770         instead of direct access to MonoDynamicImage::tokens.
1771
1772 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1773
1774         * verify.c (token_bounds_check): Fix the build I just broke.
1775
1776 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1777
1778         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
1779
1780         * verify.c (verifier_load_method): Fixed the errors message.
1781
1782         * verify.c (mono_method_verify): Fixed a debug message.
1783
1784 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
1785
1786         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
1787         mono-perfcounters.h, class-internals.h: support for predefined
1788         writable counters, query of categories and counters, bugfixes.
1789
1790 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1791
1792         * verify.c (do_refanytype): Verify the refanytype opcode.
1793
1794         * verify.c (mono_method_verify): Use do_refanytype.
1795
1796 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
1797
1798         * verify.c (do_mkrefany): Verify the mkrefany opcode.
1799
1800         * verify.c (mono_method_verify): Use do_mkrefany.
1801
1802 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
1803
1804         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
1805         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
1806         implementation.
1807
1808 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
1811         the type load exception.
1812
1813 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1814
1815         * verify.c: Added a few FIXME for method signatures
1816
1817         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
1818         of mono_method_get_signature and get vararg call working. Removed unused
1819         checks for return value.
1820
1821         * verify.c (do_refanyval): Verify the refanyval opcode.
1822
1823         * verify.c (mono_method_verify): Implemented verification of arglist and
1824         use do_refanyval.
1825
1826 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
1829         vtypes to marshal.c.
1830
1831         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
1832         it works for AOT as well.
1833
1834 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
1835
1836         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
1837         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
1838         the system time is adjusted.
1839
1840 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
1841
1842         * icall.c, icall-def.h: use the new time functions (fixes the
1843         non-monotonic behaviour of TickCount).
1844
1845 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
1848         it breaks the build.
1849         
1850         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
1851         cattr is not finished yet.
1852
1853 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1854
1855         * verify.c: Proper token validation for field, method and type.
1856
1857 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
1858
1859         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
1860
1861         * loader.c (method_from_memberref): Generate type load error instead of method missing
1862         if the type is not found.
1863
1864 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
1867         some of the conversions caused the generation of a marshal directive exception.
1868
1869 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
1870
1871         verify.c: Report which exception should be thrown by the JIT.
1872         Added a lot of FIXME notes.
1873
1874 2008-02-22  Mark Probst  <mark.probst@gmail.com>
1875
1876         * generic-sharing.c: Runtime generic context slots are not
1877         instantiated on init anymore.  Instead, provide function to do the
1878         instantiating on demand.
1879
1880         * class-internals.h: Added vtable to runtime generic context.
1881         Macros for encoding direct and indirect slot offsets in one
1882         guint32.
1883
1884 2008-02-21  Mark Probst  <mark.probst@gmail.com>
1885
1886         * object.c, generic-sharing.c: Moved some generic sharing code
1887         from object.c to generic-sharing.c.
1888
1889         * generic-sharing.c: Added support for extensible runtime generic
1890         context.
1891
1892         * metadata-internals.h: Two new hash tables in MonoImage for
1893         extensible runtime generic context support.
1894
1895         * domain.c: Unregister generic vtables upon domain unloading.
1896
1897         * image.c: Destroy new hash tables upon image unloading.
1898
1899         * metadata.c: Unregister generic subclasses upon image unloading.
1900
1901         * class-internals.h: New data structure for runtime generic
1902         context template.  New fields in the runtime generic context for
1903         extensible part.
1904
1905         * Makefile.am: Added generic-sharing.c.
1906
1907 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
1910         there is a pending loader exception, raise it.
1911
1912         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
1913         same.
1914
1915         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
1916         same.
1917
1918         Fixes #363450.
1919
1920 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
1923
1924         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
1925         
1926         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
1927         ref-only requests for compatibility with MS.
1928
1929 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
1930
1931         * reflection.c (mono_custom_attrs_from_method): Don't silently
1932         return an empty list for generic method instances.
1933         (mono_custom_attrs_from_param): Likewise.
1934
1935 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
1936             Raja R Harinath  <harinath@hurrynot.org>
1937
1938         Fix #354757
1939         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
1940         * class.c (mono_class_inflate_generic_method_full): Initialize it
1941         when a fully-open method is instantiated.
1942         * metadata.c (inflated_method_equal, inflated_method_hash): Update
1943         to new field.
1944         * reflection.c (inflate_mono_method): Don't create a temporary context.
1945
1946 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
1947
1948         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
1949         Compute correct value, to prepare for imethod->reflection_info going away.
1950
1951 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
1954
1955 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         * verify.c: Implement skip visibility flag.
1958
1959 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1960
1961         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
1962         which contains an extra field to tell the kind of exception that should be thrown.
1963
1964         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
1965
1966 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
1967
1968         * loader.c (mono_method_get_param_names): Initialize 'klass' after
1969         'method' is updated.
1970
1971 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * class.c (mono_class_layout_fields): Set class->min_align for classes using
1974         explicit layout as well. Fixes #360375.
1975
1976 2008-02-11  Geoff Norton  <gnorton@novell.com>
1977
1978         * loader.c: Guard and dereference against inflated generic methods
1979
1980 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
1981
1982         * class.c: Include Retargetable spec in assembly name.
1983         * assembly.c: Always include PublicKeyToken spec in assembly name
1984         (with value "null" if assembly is not signed), and include
1985         Retargetable spec.
1986         * icall-def.h: Added icall for Assembly.get_fullname.
1987         * icall.c: Added icall returning the fullname of an assembly.
1988
1989 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * class.c (mono_class_setup_vtable_general): Add a missing call to
1992         mono_class_setup_methods () which is needed in the AOT case.
1993
1994 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * verify.c (mono_type_get_stack_name): Added. Return the name for the
1997         stack type of the given MonoType.
1998
1999         * verify.c (verify_type_compatibility_full): Handle the void type.
2000
2001         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
2002         way stack merging works.
2003
2004         * verify.c (store_local): Improved verification message.
2005
2006         * verify.c (do_branch_op): If the merging is invalid, the method
2007         is unverifiable and not invalid. Improved error message.
2008
2009         * verify.c (merge_stacks): Properly merge a boxed valuetype and
2010         a reference type diferent than System.Object. Improved error
2011         message.
2012
2013 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
2014
2015         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
2016
2017         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
2018         type of an enum even if the argument is byref.
2019
2020         * verify.c: Replace all explicit uses of enumtype and enum_basetype
2021         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
2022
2023         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
2024
2025         *verify.c (verify_type_compatibility_full): Make enum types
2026         compatible with their base types.
2027
2028         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
2029         types are compatible for the special case of a boxed valuetype and
2030         System.Object.
2031
2032         * verify.c (verify_stack_type_compatibility): The function
2033         is_compatible_boxed_valuetype was extracted from here.
2034
2035         * verify.c (push_arg): Only set ctx->has_this_store if the method
2036         is not static.
2037
2038         * verify.c (do_ldelem): Fixed a typo in an error message and added
2039         strict check for mixing int32 and native int as the array type
2040         and ldelem type.
2041
2042         * verify.c (merge_stacks): Consider boxed valuetypes in the
2043         compatibility checks.
2044
2045 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
2046         * profiler.h: (MonoGCEvent): Added start-stop the world events.
2047
2048 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2049         *class.c: use_new_interface_vtable_code: renamed the env var to have
2050         a "MONO_" prefix, and fix the logic to enable it by default.
2051
2052 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
2053         *class.c:
2054         mono_class_setup_vtable_general: rewrote the way in which interface
2055         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
2056         makes the code more maintainable.
2057         For now the old code is still there, and can be activated setting
2058         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
2059
2060 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
2061
2062         * verify.c: guarded some debug functions around and #ifdef.
2063
2064         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
2065
2066 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
2069         changes for now since they seem to break too many things.
2070
2071 2008-02-05  Mark Probst  <mark.probst@gmail.com>
2072
2073         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
2074         mono_marshal_find_nonzero_bit_offset): Added macro and function
2075         for finding the byte- and bit-offset of a bitfield within a
2076         struct.
2077
2078 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
2081         (mono_marshal_get_struct_to_ptr): Ditto.
2082
2083         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
2084         cctor_signature.
2085
2086 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
2087
2088         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
2089         between methods for non-corlib types.
2090
2091 2008-02-02  Geoff Norton  <gnorton@novell.com>
2092
2093         * loader.c (mono_method_get_param_names): Populate the parameter name for 
2094         generic parameters as well. (Fixes #342536)
2095
2096 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
2097
2098         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
2099
2100         * verify.c (do_invoke_method): Fix for calling with byref structs.
2101
2102         * verify.c (do_cast): push a boxed value type based on the type token and not
2103         the type of stack.
2104
2105 2008-01-31  William Holmes  <billholmes54@gmail.com>
2106
2107         * process.c (process_module_string_read): Check the size returned form 
2108           VerQueryValue to avoid out of memory exception. 
2109
2110 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
2113         Handle properly modules which are not in the moduleref table. Fixes
2114         #356938.
2115
2116 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
2119         the dynamic case which is now in managed code.
2120         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
2121
2122         * marshal.c (mono_string_to_bstr): Fix a warning.
2123         (init_com_provider_ms): Ditto.
2124
2125         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
2126
2127         * exception.c (mono_get_exception_out_of_memory): New helper function.
2128
2129 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
2130
2131         * marshal.c: Add support for BSTR marshalling
2132         using other COM systems.
2133
2134         Code is contributed under MIT/X11 license.
2135
2136 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * object.c (mono_runtime_invoke_array): reverted previous
2139         commit as it breaks the build.
2140
2141 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * object.c (mono_runtime_invoke_array): Verify arguments for
2144         invalid types. Fixes #348522.
2145
2146 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
2147
2148         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
2149         non-final virtual calls using call. 
2150
2151         * verify.c (do_invoke): fixed some TODOs.
2152
2153         * verify.c (push_arg): set has_this_store for "ldarga 0".
2154
2155 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
2156
2157         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
2158         which belong to an inflated class. Fixes #356531.
2159
2160 2008-01-26  Robert Jordan  <robertj@gmx.net>
2161
2162         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
2163         which resort to FindFirstFile when a certain error condition
2164         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
2165         Code is contributed under MIT/X11 license.
2166
2167 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
2168
2169         * marshal.c (emit_marshal_string): Fix out string marshalling
2170         to use specified encoding. Fixes #323900.
2171
2172         Code is contributed under MIT/X11 license.
2173
2174 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
2175
2176         * class.c (mono_class_inflate_generic_method_full): Don't modify
2177         iresult->context after cache check.
2178
2179 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * class.c (mono_class_inflate_generic_method_full): Change the
2182         struct assignments to memcpy for better visibility and add some comments.
2183
2184 2008-01-23  Dick Porter  <dick@ximian.com>
2185
2186         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
2187         procedure, and make it work on windows.
2188
2189 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
2192         a MonoReflectionTypeBuilder since it is always of that type.
2193
2194         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
2195
2196         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
2197
2198         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
2199         
2200         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
2201
2202         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
2203
2204         * reflection.c (mono_reflection_create_runtime_class): Remove already created
2205         instantiations from the type cache.
2206
2207 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2208
2209         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
2210
2211         * verify.c (do_unbox_value): push a controled mutability managed pointer.
2212
2213 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2214
2215         * verify.c (do_ldstr): added, verifies if the #US token is valid.
2216
2217         * verify.c (mono_method_verify): removed old TODO
2218
2219 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2220
2221         * verify.c (do_newobj): add visibility check.
2222
2223 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * verify.c (do_load_function_ptr): add visibility check.
2226
2227 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
2228         *class.c:
2229         mono_generic_class_get_class: hook profiler events.
2230         mono_field_get_offset: added to support heap-shot in the new profiler.
2231         *class.h: exported mono_field_get_offset.
2232         * reflection.c:
2233         mono_reflection_setup_internal_class: hook profiler events.
2234
2235 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
2238         argument here too and use it to avoid checking for pending exceptions if 
2239         possible.
2240
2241 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
2242
2243         * assembly.c (build_assembly_name): add arg for passing the assembly
2244         flags. Do not consider a PublicKey with value "null" valid.
2245         (mono_assembly_name_parse_full): added boolean argument that will be
2246         set if the assembly name contains a PublicKeyToken spec. Added support
2247         for the Retargetable spec for which only Yes or No are allowed as valid
2248         value. Consider assembly name invalid if Retargetable spec is set, but
2249         either version, culture or public key (token) are not specified.
2250         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
2251         with implementation in assembly.c.
2252         * icall.c (fill_reflection_assembly_name): also copy assembly flags
2253         from MonoAssemblyName.
2254         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
2255         introduced argument for mono_assembly_name_parse_full to know if the
2256         assembly name has a PublicKeyToken spec, and if it has instruct
2257         fill_reflection_assembly_name to use default value for keyToken (if
2258         PublicKeyToken is null).
2259
2260 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2261
2262         * verify.c (mono_method_verify): fixed ovf ops with
2263         float values. They are unverifiable now.
2264
2265 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2266
2267         * class.c (set_failure_from_loader_error): add BadImageException to the
2268         list of exceptions that can cause a type to fail to load.
2269
2270         * class.c (mono_class_get_exception_for_failure): same.
2271
2272 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2273
2274         * verify.c (in_any_exception_block): added, check if offset
2275         is part of any exception handling clause.
2276
2277         * verify.c (get_stack_type): added VAR and MVAR types.
2278
2279         * verify.c (do_stobj): better error messages.
2280
2281         * verify.c (do_cpobj): added, check cpobj.
2282
2283         * verify.c (do_initobj): added, check initobj.
2284
2285         * verify.c (do_sizeof): added, check sizeof.
2286
2287         * verify.c (do_localloc): added, check localloc.
2288
2289         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
2290
2291 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
2294         save_lmf/restore_lmf opcodes.
2295
2296         * threads.c (mono_threads_install_notify_pending_exc): New function to
2297         install a callback notifying the JIT there is a pending exception on a thread.
2298         (mono_thread_request_interruption): Call the new callback.
2299         (mono_thread_get_and_clear_pending_exception): New function to return the
2300         exception pending on a thread.
2301
2302         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
2303         to turn off checking for pending exceptions.
2304         (mono_marshal_get_native_wrapper): Ditto.
2305
2306 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * threads-types.h: Get rid of the unnecessary extern declarations.
2309
2310 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
2311
2312         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
2313         return field from parent class if not private.
2314         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
2315         returns fields from parent class if they are not private.
2316         (method_nonpublic): added function to determine if a given method
2317         should be considered non-public. Returns false for private methods
2318         on parent class, and internal methods from parent on the 1.0 profile.
2319         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
2320         use method_nonpublic function to determine whether method should be
2321         returned.
2322         (property_accessor_public): use newly introduced method_nonpublic
2323         function to determine whether accessor is non-public. 
2324         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
2325         event from parent class if not private. Only return static event if
2326         Static flag is set, and only return static event from parent class if
2327         FlattenHierarchy flag is set.
2328         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
2329         include non-private events from parent class.
2330
2331 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
2334         warning.
2335
2336 2008-01-16  Wade Berrier <wberrier@novell.com>
2337
2338         * security.c: Add assembly.h header to appease some warnings
2339
2340 2008-01-16  Dick Porter  <dick@ximian.com>
2341
2342         * process.c (process_module_string_read): Remove trailing null
2343         when saving string.
2344
2345 2008-01-16  Mark Probst  <mark.probst@gmail.com>
2346
2347         * class-internals.h: A new data structure describing the layout of
2348         a runtime generic context (MonoRuntimeGenericContextTemplate).
2349
2350         * metadata-internals.h: Added a hash table to MonoDomain that maps
2351         from open generic classes to their runtime generic context
2352         templates.
2353
2354         * object.c: Building of the runtime generic context, including
2355         proper handling of generic type arguments of superclasses.
2356         Building of the runtime generic context according to the template.
2357
2358 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * class.c (mono_class_setup_fields): Set field.count for generic instances.
2361         Fixes #350856.
2362
2363         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
2364         mono_portability_find_file (). Fixes #325466.
2365         (mono_image_get_public_key): Fix a warning.
2366
2367 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
2370         Fixes #353550.
2371         (mono_class_from_name_case): Ditto.
2372
2373 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
2374
2375         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
2376           common storage for the tables used in the System/NumberFormatter class.
2377
2378 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
2381
2382 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
2383
2384         * verify.c (get_boxable_mono_type): check if the token is valid.
2385
2386         * verify.c (set_stack_value): changed to add an error if an
2387         invalid type is set on stack. Changed all callers due to signature change.
2388
2389         * verify.c (do_stobj): implement stobj validation.
2390
2391 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
2394         set container->is_method, it was set earlier.
2395
2396         * metadata.c (type_in_image): Handle MVARs which belong to not finished
2397         generic methods.
2398
2399         * reflection.c (mono_reflection_initialize_generic_parameter): Set
2400         is_method of the generic container to TRUE for methods.
2401
2402 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * metadata.c (type_in_image): Handle type parameters properly.
2405
2406         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
2407         memory ownership of this structure.
2408
2409 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
2410
2411         * verify.c (get_boxable_mono_type): make typedref types been just
2412         unverifiable. check for void type.
2413
2414         * verify.c (do_unbox_any): added, verify opcode unbox.any.
2415
2416         * verify.c (do_load_function_ptr): accept method spec tokens.
2417
2418 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * marshal.c (mono_class_native_size): Always set *align even if this is called
2421         recursively.
2422
2423 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
2424
2425         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
2426         out-of-date.
2427
2428 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
2429
2430         * verify.c: removed some old unused tables. A huge bunch of small fixes
2431         to things found while testing the verifier with mono basic.
2432
2433         * verify.c (dump_stack_value): dump null literal flag to.
2434
2435         * verify.c (verify_type_compatibility_full): fix comparison
2436         for types that have a generic super type.
2437
2438         * verify.c (verify_stack_type_compatibility): fix compatibility
2439         between null literals and reference types. fix compatibility between
2440         boxed valuetypes and object. fix corner case test for enums.
2441
2442         * verify.c (do_cmp_op): proper verification of cgt.un in case
2443         of reference types.
2444
2445         * verify.c (do_invoke_method): fix error message.
2446
2447         * verify.c (do_store_indirect
2448
2449         * verify.c (check_is_valid_type_for_field_ops): proper verification
2450         of managed pointers to valuetypes and boxed valuetypes. proper verification
2451         of null literals.
2452
2453         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
2454         allow token to be a reference type.
2455
2456         * verify.c (do_cast): proper handling of boxes valuetypes.
2457
2458         * verify.c (do_stelem): proper handling of storing a boxed valuetype
2459         in object[].
2460
2461         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
2462         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
2463         fixed the decoding of unbox_any
2464
2465 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
2466
2467         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
2468
2469 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * verify.c (do_newobj): do delegate verification.
2472
2473         * verify.c (verify_delegate_compatibility): perform delegate
2474         verification.
2475
2476         * verify.c (verify_ldftn_delegate): perform tests related to
2477         ldftn delegates.
2478
2479         * verify.c (mono_delegate_signature_equal): perform the
2480         slightly diferent signature comparison required by delegates.
2481
2482         * metadata.c (mono_metadata_type_equal_full): added and exported
2483         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
2484         allows signature only comparison.
2485
2486         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
2487         as MONO_INTERNAL.
2488
2489 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2490
2491         * verify.c: added a bunch of stack_slot_* functions to
2492         make access to stack slot type easier. This is required to
2493         allow optional flags, like null literal, boxed value and
2494         this pointer.
2495         All access paths to IlStackDesc::stype have been changed 
2496         to use these new funcions.
2497         Removed a bunch of unused functions and cleared all warnings.
2498         This patch introduces the usage of the this pointer and 
2499         boxed value flags.
2500
2501 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
2502
2503         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
2504
2505 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
2506
2507         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
2508         match managed version.
2509
2510         * appdomain.c: Bump corlib version.
2511         
2512         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
2513         argument.
2514
2515 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
2516
2517         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
2518         Set public key token to zero-length byte array if assembly is not
2519         strongnamed.
2520
2521 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
2524         writing a vtype array elem.
2525
2526 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
2527
2528         * assembly.c (build_assembly_name): return FALSE if length of token is
2529         not 16 (if not "null").
2530         (mono_assembly_name_parse_full): return FALSE if value of version,
2531         culture, token or key is 0.
2532         * icall.c (fill_reflection_assembly_name): add boolean arguments to
2533         specify whether public key and public key token must be set to default
2534         value (zero-length byte array) if not available. Set versioncompat to
2535         SameMachine. If public key is available or the default is set, then
2536         set PublicKey flag.
2537         (ves_icall_System_Reflection_Assembly_FillName): if no public key
2538         is available, use empty byte array as default value. On the 2.0
2539         profile, use default value for public key token if not set.
2540         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
2541         profile, use default value for public key if not set. On the 2.0
2542         profile, use default value for public key token if not set.
2543         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
2544         default values for public key and public key token.
2545
2546 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
2547
2548         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
2549         field to keep it in synch with the managed object.
2550
2551         * marshal.c (emit_marshal_object): Add support for byref marshalling of
2552         delegates. Fixes #351520.
2553
2554         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
2555         contains defined memory.
2556         
2557         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
2558
2559         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
2560         
2561         * sgen-gc.c (check_consistency): New helper function to do a consistency check
2562         of the GC data structures.
2563
2564         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
2565
2566         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
2567         
2568         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
2569         barrier.
2570         (mono_array_clone_in_domain): Ditto.
2571         (mono_array_clone_in_domain): Ditto.
2572
2573         * threads.c (start_wrapper): Register the thread start argument as a GC root.
2574         (cache_culture): Use a write barrier.
2575
2576         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
2577         (ves_icall_get_property_info): Ditto.
2578
2579         * object.h (MONO_STRUCT_SETREF): New macro.
2580
2581         * class-internals.h (MonoStats): Add some GC statistics.
2582
2583         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
2584
2585 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
2586
2587         * exception.c (mono_exception_from_name_two_strings):
2588         Break from loop after method is found.
2589
2590 2008-01-04  Dick Porter  <dick@ximian.com>
2591
2592         * process.c (process_module_string_read): Rename variable to
2593         reflect correct usage, after fixing bug 345972.
2594
2595 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
2596
2597         * verify.c (mono_type_create_fnptr_from_mono_method): 
2598         created a MonoType function pointer instance to be used during
2599         verification. The verifier releases this memory at end.
2600
2601         * verify.c (mono_method_is_constructor): extracted repeated
2602         checks for constructor into a single class.
2603
2604         * verify.c (do_push_field): use new extracted method
2605         for constructor check.
2606
2607         * verify.c (do_newobj): same.
2608
2609         * verify.c (do_ldftn): renamed to do_load_function_ptr
2610         and make it verify ldvirtftn too.
2611
2612         * verify.c (mono_method_verify: proper verification
2613         of ldvirtftn. release created MonoMethod instances.
2614
2615 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * verify.c (token_bounds_check): added.
2618
2619         * verify.c (do_ldftn): added.
2620
2621         * verify.c (mono_method_verify): proper verificartion of ldftn.
2622
2623 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
2624
2625         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
2626         than the table row count. It's the resposibility of the caller to
2627         make the bounds check and raise the correct error.
2628
2629         * metadata.c (mono_metadata_decode_row_col): Same.
2630
2631         * loader.c (mono_get_method_from_token): perform bounds check
2632         on token for methoddef table.
2633
2634 2007-12-29  Miguel de Icaza  <miguel@novell.com>
2635
2636         * icall.c
2637         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
2638         assert into a negative result, the managed code already coped with
2639         that.
2640
2641         Some folks on Windows reported this error. 
2642
2643 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
2644
2645         * appdomain.c: Bump corlib version.
2646         * icall.c:
2647         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
2648         CultureInfo.CreateCulture to create CultureInfo for name.
2649         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
2650         create CultureInfo for name. Fixes bug #347174.
2651
2652 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2653
2654         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
2655         flags.
2656
2657         * verify.c (is_valid_branch_instruction): allow branching to the
2658         first instruction of the protected block.
2659
2660         * verify.c (is_valid_cmp_branch_instruction): same.
2661
2662         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
2663         avoid double initialization.
2664
2665         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
2666         detect which cases the eval stack should just be copied.
2667
2668         * verify.c (mono_method_verify): check if the eval stack
2669         is empty when entering a protected block.
2670
2671 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
2672
2673         * verify.c: added is_clause_in_range, is_clause_inside_range,
2674         is_clause_nested and verify_clause_relationship. They perform
2675         the verifications stated in P1 12.4.2.7.
2676
2677         * verify.c (mono_method_verify): remove some unused variables,
2678         add the new exception clause checks, add instruction border
2679         checks for protected block start/end, improved some error 
2680         messages and fixed a bug in the way invalid instruction access
2681         is detected.
2682
2683 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
2684
2685         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
2686         from GC 7.0 if available.
2687
2688         * object.c: Remove an unused define.
2689         
2690         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
2691
2692         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
2693
2694         * null-gc.c (mono_gc_make_descr_for_array): Implement.
2695
2696         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
2697
2698         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
2699         to take the same arguments as the other make_descr functions.
2700
2701         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
2702
2703         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
2704         directly.
2705
2706         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
2707         mini.c.
2708
2709         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
2710         call to boehm-gc.c.
2711
2712         * boehm-gc.c (mono_gc_register_root): Fix a warning.
2713
2714         * null-gc.c (mono_gc_register_root): Fix a warning.
2715
2716         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
2717
2718         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
2719         (mono_gc_base_init): Call GC_init ().
2720
2721         * null-gc.c: Define mono_gc_register_root () as a no-op.
2722
2723         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
2724
2725 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
2726
2727         * verify.c: add prototype for merge_stacks at top
2728
2729         * verify.c (do_switch): added.
2730
2731         * verify.c (merge_stacks): on some cases the stack merging
2732         was not happening properly. Unequal stack sizes at merge
2733         points should be invalid.
2734
2735         * verify.c (mono_method_verify): added more debug info on stack state.
2736         verify switch properly.
2737
2738 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * method-builder.h: New file, moved the mono_mb_ declarations here from 
2741         marshal.h.
2742
2743         * boehm-gc.c marshal.c: Include method-builder.h.
2744
2745         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
2746
2747         * marshal.c: Remove some code which is now in method-builder.c.
2748
2749 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * method-builder.c: New file, extraction of the method builder functionality 
2752         from marshal.c.
2753
2754         * marshal.c: Move the mb functions into method-builder.c.
2755
2756         * marshal.h marshal.c: Export some mono_mb_... functions.
2757
2758         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
2759
2760         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
2761         the caller.
2762
2763         * class.c (mono_class_get_full): Check the token type in the dynamic case.
2764
2765         * loader.c (mono_field_from_token): Ditto.      
2766
2767         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
2768         type as well.
2769         
2770         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
2771         Fixes #342565.
2772
2773         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
2774         a helper function for setting it.
2775
2776         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
2777
2778         
2779         * assembly.c: Significally simplify code now that referenced assemblies are 
2780         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
2781
2782         * threads.h: Don't include  the internal threads-types.h header file. Fixes
2783         #349952.
2784
2785 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
2788         instructions that were target of branches or are at protected block boundaries.
2789
2790         * verify.c (in_same_block): handle filter clauses.
2791
2792         * verify.c (is_valid_branch_instruction): added. checks the target of
2793         instructions br or brtrue/false.
2794
2795         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
2796         binary branch instructions such as beq and bge.
2797
2798         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
2799         and made it pin the instruction as been part of the exception block.
2800
2801         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
2802         of in_same_block.
2803
2804         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
2805         of in_same_block.
2806
2807         * verify.c (do_ret): ret from a protected block is unverifiable and
2808         not invalid.
2809
2810         * verify.c (do_static_branch): verify br and br.s instructions.
2811
2812         * verify.c (merge_stacks): add extra param to support detection
2813         of branches in the middle of instructions.
2814         
2815         * verify.c (mono_method_verify): verify branches and exception blocks
2816         that target the middle of instructions. Proper verification of br and br.s.
2817
2818 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
2821         skip_visibility field.
2822         (reflection_methodbuilder_from_dynamic_method): Ditto.
2823
2824         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
2825         registrations. Fixes #348193.
2826
2827         * threads.h: Move the internal mono_thread_get_pending_exception () to
2828         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
2829
2830 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
2833         icall registration. Fixes #348193.
2834
2835         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
2836         for corlib classes into object. Fixes #349621.
2837
2838 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
2839
2840         * icall.c (property_accessor_nonpublic): new function to determine
2841         whether an accessor allows a property to be considered non-public.
2842         Returns false for private accessor(s) from parent class, and internal
2843         accessor(s) from parent on 2.0 profile (and higher).
2844         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
2845         to determine whether property should be included if NonPublic flag
2846         is set. Fixes bug #349078.
2847
2848 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * verify.c (init_stack_with_value): added.
2851
2852         * verify.c (mono_method_verify): extracted common
2853         code for exception initialization into init_stack_with_value.
2854
2855         * verify.c (mono_method_verify): initialize the exception
2856         for handler clauses as well.
2857
2858         * verify.c (mono_method_verify): fix the exception clause
2859         ordering rules, it should use handler end offset and not
2860         start offset.
2861
2862 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
2863
2864         * rawbuffer.c: remove useless warning.
2865
2866 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
2867
2868         * threads.h, threads-types.h: move functions to the correct header
2869         (fixes bug#349952).
2870
2871 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2872
2873         * verify.c (mono_method_verify): proper verification
2874         of exception handling clauses ranges and fallthru in
2875         and out of protected blocks.
2876
2877 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * verify.c (mono_method_verify): fixed compilation issue.
2880
2881 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * verify.c (mono_method_verify): a printf slipped in, changed
2884         to use verifier debug macro.
2885
2886 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
2887
2888         * verify.c (is_correct_leave): check for filter clauses.
2889
2890         * verify.c (do_filter): added.
2891
2892         * verify.c (mono_method_verify): property verification of leave.
2893
2894
2895 2007-12-18  Mark Probst  <mark.probst@gmail.com>
2896
2897         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
2898         Win32 build, until we figure out how to do the proper thing on
2899         Win32.
2900
2901 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
2904         by the previous patch.
2905         
2906         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
2907         the assembly resolve handler for refonly assemblies.
2908
2909 2007-12-17  Mark Probst  <mark.probst@gmail.com>
2910
2911         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
2912         Make sure only one thread is allowed to commence shutdown, and
2913         don't allow new threads to be started once shutdown is in
2914         progress.
2915
2916 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
2917
2918         * verify.c (is_correct_endfilter): added.
2919
2920         * verify.c (is_unverifiable_endfilter): added.
2921
2922         * verify.c (do_endfilter): added.
2923
2924         * verify.c (mono_method_verify): property verification of endfilter
2925         and fixed a corner case or endfinally.
2926
2927 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
2928
2929         * verify.h: new flags to support fail fast of unverifiable code and
2930         do non-strict verification. Non-strict verification is required to
2931         have MS runtime compatibility. There are a huge amount of unverifiable
2932         code that it accepts as verifiable. The strict mode verifies the code
2933         as the specs says.
2934         Non-strict mode will be required in cases where code needs to be
2935         accepted as verifiable but fails under strict mode.
2936
2937         * pedump.c: added support to fail fast and non-strict verification.
2938
2939         * verify.c: added support for both fail fast and non-strict verification.
2940
2941 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * verify.c (is_correct_endfinally): added.
2944
2945         * verify.c (mono_method_verify): property verification of endfinally.
2946
2947 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
2948
2949         * verify.c (in_any_block): check for filter clauses.
2950
2951         * verify.c (is_correct_rethrow): added.
2952
2953         * verify.c (mono_method_verify): property verification of rethrow.
2954
2955         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
2956
2957 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * verify.c (do_throw): added.
2960
2961         * verify.c (mono_method_verify): property verification of throw
2962
2963 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
2966         assemblies. Fixes #346425.
2967
2968 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
2971         FieldBuilders.
2972
2973         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
2974
2975         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
2976         prevent asserts when this is called with a token which might not be valid.
2977
2978         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
2979         lookup_dynamic_token_class with valid_token == FALSE.
2980
2981         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
2982
2983         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
2984
2985         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
2986         
2987 2007-12-10  Mark Probst  <mark.probst@gmail.com>
2988
2989         * gc.c: Don't delay threadpool thread finalization unless Mono is
2990         shutting down.
2991
2992 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
2993
2994         * threads.c: turn an assert into a non-fatal warning.
2995
2996 2007-12-09  Robert Jordan  <robertj@gmx.net>
2997
2998         * icall.c (GetVirtualMethod): Add missing argument validation.
2999
3000 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3001
3002         * verify.c (do_cast): added.
3003
3004         * verify.c (mono_method_verify): property verification of castclass and isinst.
3005
3006
3007 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
3010
3011         * verify.c (do_stelem): added.
3012
3013         * verify.c (mono_method_verify): property verification of stelem.X.
3014
3015 2007-12-07  Mark Probst  <mark.probst@gmail.com>
3016
3017         * class.c, class-internals.h: Introduce an environment variable
3018         (MONO_GENERIC_SHARING) through which the extent of generic code
3019         sharing can be controlled (share all classes, share only corlib
3020         classes, or share nothing).
3021
3022         * object.c: Only create runtime generic context for classes for
3023         which sharing is enabled.
3024
3025 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3026
3027         * verify.c (do_ldelem): refactor it to work with ldelem.any.
3028
3029         * verify.c (mono_method_verify): property verification of ldelem.any.
3030
3031 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
3032
3033         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
3034         added ldelem.X opcodes.
3035
3036         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
3037
3038         * verify.c: proper verification of ldelem.X 
3039
3040 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
3043
3044 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * verify.c (mono_method_verify): null literal requires special handling,
3047         the value pushed on stack need to be flagged as so.
3048
3049         * verify.c (do_ldelema): Verify ldelema properly.
3050
3051 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3052
3053         * verify.c: Verify ldlen properly.
3054
3055 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
3058         to the target object's type. Fixes #346160.
3059
3060 2007-12-05  Dick Porter  <dick@ximian.com>
3061
3062         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
3063         Solaris needs the same workaround as BSD-derived systems.  Fixes
3064         bug 323524, patch by Burkhard Linke
3065         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
3066
3067 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
3068
3069         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
3070         handle to use when error dialog is shown; otherwise, update mask
3071         to show no error dialog when an error occurs.
3072
3073 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
3076
3077         * class.c (mono_class_get_field_default_value): New helper function to initialize
3078         field->def_type and field->data.
3079
3080 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
3083         the general one.
3084
3085         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
3086
3087         * marshal.c: Avoid depending on delegate->method_info being set.
3088
3089         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
3090         
3091         * object.c (mono_delegate_ctor): Set delegate->method.
3092
3093         * object-internals.h (struct _MonoDelegate): Add 'method' field.
3094
3095         * appdomain.c: Bump corlib version.
3096
3097 2007-11-27  Raja R Harinath  <harinath@gmail.com>
3098
3099         * metadata.c (mono_generic_inst_equal_full): Short-circuit
3100         equality check if we're comparing canonicalized MonoGenericInsts.
3101
3102 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * class.c (generic_array_methods): Call mono_class_setup_methods () before
3105         accessing class->methods.
3106
3107 2007-11-22  Dick Porter  <dick@ximian.com>
3108
3109         * threads.c: Ensure that the synch_cs is set before trying to use
3110         it.
3111
3112 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
3113
3114         * profiler.c: r89126 broke the statistial profiler, unbreak.
3115
3116 2007-11-22  Martin Baulig  <martin@ximian.com>
3117
3118         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
3119
3120         * mono-debug.c
3121         (mono_debug_debugger_version): Bump to 3.
3122         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
3123         -> mono_debugger_class_initialized().
3124
3125         * mono-debug-debugger.c
3126         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
3127
3128         * class.c
3129         (mono_debugger_start_class_init_func): Removed.
3130         (mono_debugger_class_loaded_methods_func): Added.
3131         (mono_class_setup_methods): Call it here.
3132
3133 2007-11-22  Martin Baulig  <martin@ximian.com>
3134
3135         * mono-debug.c
3136         (mono_debug_add_delegate_trampoline): New public method.
3137         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
3138
3139         * mono-debug.h
3140         (MonoSymbolTable): Added `global_data_table'.
3141         (MonoDebuggerTypeKind): Removed.
3142
3143 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
3144
3145         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
3146         these methods.
3147
3148         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3149         
3150 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
3151
3152         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
3153
3154 2007-11-20  Martin Baulig  <martin@ximian.com>
3155
3156         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
3157
3158         * mono-debug-debugger.c
3159         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
3160         (mono_debugger_remove_breakpoint): Likewise.
3161         (mono_debugger_check_breakpoints): Likewise.
3162         (mono_debugger_register_class_init_callback): New public method.
3163         (mono_debugger_remove_class_init_callback): Likewise.
3164         (mono_debugger_add_type): Likewise.
3165
3166         * mono-debug-debugger.h
3167         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
3168
3169 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
3170
3171         * class.c: more interface implementations needed for the
3172         array enumerator (fixes bug #341112).
3173
3174 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
3175
3176         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
3177         fix ParamName of ArgumentNullExceptions.
3178
3179 2007-11-17  Miguel de Icaza  <miguel@novell.com>
3180
3181         * reflection.c (mono_reflection_encode_sighelper): Generate the
3182         modopts and modreqs.   I have a useless test that crashes monodis,
3183         but that shows the code working.
3184
3185 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
3186
3187         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
3188         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
3189
3190 2007-11-15  Dick Porter  <dick@ximian.com>
3191
3192         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
3193         When joining a thread, it's the thread that's calling Join that
3194         gets WaitSleepJoin state not the target.  Fixes the standalone
3195         test case in bug 334740, and hopefully the whole bug too.
3196
3197 2007-11-15  Dick Porter  <dick@ximian.com>
3198
3199         * process.c: Read file version info from the files pointed at by
3200         process modules, not the current process.  Fixes bug 315969.
3201
3202         Use windows typedef names in some places to fix warnings on the
3203         windows build.
3204
3205 2007-11-15  Mark Probst  <mark.probst@gmail.com>
3206
3207         * image.c, metadata-internals.h: Added a generic_class_cache hash
3208         to MonoImage for looking up generic classes when sharing generics.
3209
3210 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
3211
3212         * sgen-gc.c: warning cleanups.
3213
3214 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
3215
3216         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
3217         inherited properties.
3218
3219 2007-11-14  Mark Probst  <mark.probst@gmail.com>
3220
3221         * object.c, class-internals.h: Added more information to the
3222         runtime generic context.
3223
3224 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
3225
3226         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
3227         instead of just the target method. Generalize the abstract method handling to
3228         handle any non-static method.
3229
3230         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3231         mono_marshal_get_delegate_invoke () signature change.
3232
3233 2007-11-13  Mark Probst  <mark.probst@gmail.com>
3234
3235         * class.c, class-internals.h: Made
3236         mono_type_get_basic_type_from_generic () public.  Fixed member
3237         access check for shared generics.
3238
3239         * loader.c: Don't insert field into field cache if it's part of a
3240         non-inflated generic class.
3241
3242         * domain.c, domain-internals.h: The generic sharing context is now
3243         part of the jit info data structure.  Added two accessor
3244         functions.
3245
3246 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
3247
3248         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
3249         the array Get/Set/Address methods, since the JIT inlines them.
3250
3251         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
3252
3253         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
3254         (mono_image_init): Initialize runtime_invoke_direct_cache.      
3255
3256         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
3257         mono_marshal_get_delegate_invoke signature change.
3258
3259         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
3260         an additional argument. Add support for invoking abstract methods.
3261
3262         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
3263
3264         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
3265
3266 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3267
3268         * class.c: Do field layout for open generic classes as well.
3269
3270 2007-11-09  Mark Probst  <mark.probst@gmail.com>
3271
3272         * gc.c, gc-internal.h: Don't finalize threadpool threads with
3273         other objects, because the threadpool is still around.  Put them
3274         in a list instead and after finalizing all other objects in the
3275         root domain shut down the thread pool and then finalize the
3276         threads.  Fixes bug #337383.
3277
3278         * threads.c, thread-types.h: New mono_thread_create_internal()
3279         function for marking a thread with the threadpool flag before it
3280         started.  Set synch_cs to NULL after freeing it.
3281
3282         * threadpool.c: Mark threadpool threads before they start.
3283
3284 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
3285
3286         * reflection.h, reflection.c: don't export random functions
3287         and lazy load dbnull and missing objects.
3288
3289 2007-11-07  Jonathan Chambers <joncham@gmail.com>
3290
3291         * class.c: Initialize COM types if COM interfaces
3292         are present (not just COM classes).
3293         
3294         Code is contributed under MIT/X11 license.
3295
3296 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3297         * reflection.c:
3298         create_dynamic_mono_image: hook module profiler events (dynamic case).
3299         mono_image_basic_init: hook assembly profiler events (dynamic case).
3300
3301 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
3302         * profiler.c:
3303         simple_appdomain_unload: completely terminate the profiler
3304         instead of only processing the statistical samples.
3305         simple_shutdown: make sure this is really called exactly once,
3306         even in multithreaded applications, and always listen to
3307         appdomain events.
3308         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
3309         here, the "[un]load" functions will do it.
3310         Fixes bugs #333791 and #325261.
3311
3312 2007-11-07  Geoff Norton  <gnorton@novell.com>
3313
3314         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
3315         rather than depend on __APPLE__.
3316
3317 2007-11-07  Mark Probst  <mark.probst@gmail.com>
3318
3319         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
3320
3321 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
3322
3323         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
3324         UTF16 MonoString. Fix the crash from bug #335488
3325
3326 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
3327
3328         * marshal.c: Correct (for non-Win32 OS) length != size in 
3329         mono_string_from_bstr. Fix #339530.
3330
3331 2007-11-06  Geoff Norton  <gnorton@novell.com>
3332
3333         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
3334         to succeed
3335
3336 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
3337
3338         * process.c: Added run-time GetProcessId API detection for Windows.
3339
3340 2007-11-04  Miguel de Icaza  <miguel@novell.com>
3341
3342         * reflection.c  (mono_param_get_objects): If a parameter has the
3343         attribute [System.Runtime.InteropServices.Optional] we should
3344         set the DefaultValue of the ParameterInfo to be
3345         System.Reflection.Missing instead of DBNull.
3346
3347         See bug #339013.
3348
3349         (mono_get_reflection_missing_object): New method,
3350         returns the System.Reflection.Missing.Value singleton instance.
3351
3352 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
3353
3354         * culture-info-table.h : regenerated.
3355
3356 2007-11-02  Jonathan Chambers <joncham@gmail.com>
3357
3358         * icall.c: Use GetEnvironmentStrings on windows
3359         so we are using the same environment block as 
3360         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
3361         #333740.
3362         
3363         Code is contributed under MIT/X11 license.
3364
3365 2007-10-31  Martin Baulig  <martin@ximian.com>
3366
3367         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
3368
3369         * mono-debug-debugger.h
3370         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
3371
3372 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
3375         classes.
3376
3377 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
3378
3379         * culture-info-table.h : regenerated.
3380
3381 2007-10-30  Robert Jordan  <robertj@gmx.net>
3382
3383         * icall-def.h, icall.c:
3384         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
3385
3386         Code is contributed under MIT/X11 license.
3387
3388 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3389
3390         * class.c (mono_class_setup_vtable): Find the inflated methods in the
3391         inflated class instead of inflating them again.
3392         
3393         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
3394         dynamic case.
3395
3396         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
3397         Call setup_supertypes () after klass->parent is set.
3398         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
3399
3400         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
3401         for inflated instances of not yet created dynamic generic classes.
3402         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
3403         times from inflated_method.
3404         (methodbuilder_to_mono_method): Ditto.
3405
3406 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
3407
3408         * gc.c: code cleanup and removed old untested option of not creating the
3409         finalizer thread.
3410
3411 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
3412
3413         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
3414         creating a jump trampoline for dynamic methods.
3415
3416 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
3417
3418         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
3419         generic TypeBuilders when called from another method of the same type (bug #335131).
3420
3421
3422 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
3425         doesn't seem to work perfectly.
3426         
3427         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
3428         called multiple times.
3429         (methodbuilder_to_mono_method): Ditto.
3430         (resolve_object): Inflate FieldBuilder's.
3431
3432 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3433
3434         * string-icalls.c, string-icalls.h, appdomain.c: patch from
3435         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
3436         RemoveEmptyEntries in the string.Split implementation (bug #322375).
3437
3438 2007-10-26  Dick Porter  <dick@ximian.com>
3439
3440         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
3441         Thread initialisation changes
3442
3443 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
3444
3445         * verify.c: fix compatibility check between arrays and System.Array
3446
3447 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
3450         too. Fixes #336999.
3451
3452 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * object.c (mono_value_box): Use typed allocation here.
3455
3456 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
3459         trampoline instead of compiling the method right away.
3460
3461         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
3462
3463 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
3466         related fields for dynamic classes. Fixes #334493.
3467
3468 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
3471         
3472         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
3473
3474         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
3475         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
3476
3477         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
3478
3479         * reflection.c (create_generic_typespec): Initialize klass->generic_container
3480         if needed.
3481         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
3482
3483 2007-10-18  Jonathan Chambers <joncham@gmail.com>
3484
3485         * marshal.c: Use correct key when removing item
3486         from ccw_hash.
3487         
3488         Code is contributed under MIT/X11 license.
3489
3490 2007-10-17  William Holmes  <billholmes54@gmail.com>
3491
3492         *marshal.c: Adding a case to marshal booleans to U1
3493
3494         Code is contributed under MIT/X11 license.
3495
3496 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
3497
3498         * class.c (mono_class_from_name): Search the modules compromising dynamic
3499         assemblies. Fixes #331601.
3500
3501 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
3504         exception if the type name contains an assembly component. Fixes #334203.
3505
3506         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
3507         modules inside dynamic assemblies. Fixes #334200.
3508         
3509         * reflection.c: Set image->public_key and image->public_key_length;
3510
3511         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
3512         fields.
3513
3514         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
3515         
3516 2007-10-16  Mark Probst  <mark.probst@gmail.com>
3517
3518         * metadata.c: Implemented correct comparing of generic classes.
3519         An inflated generic class can be equal to a non-inflated one if it
3520         is inflated with generic type variables as type arguments.  Fixes
3521         bug #333798.
3522
3523 2007-10-15  Dick Porter  <dick@ximian.com>
3524
3525         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
3526         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
3527         81646.
3528
3529         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
3530         instead of a monitor lock.  This means that monitor_try_enter and
3531         co can set the thread state safely.
3532         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
3533         thread_interrupt_requested, so interrupt actually works.
3534
3535         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
3536         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
3537         state accessor function
3538
3539 2007-10-15  Martin Baulig  <martin@ximian.com>
3540
3541         * mono-debug.h
3542         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
3543         the debugger with the current runtime.
3544
3545 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
3546
3547         * object.c, object-internals.h: added the ability to set a single
3548         trampoline for all the slots in a vtable.
3549
3550 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3551
3552         * marshal.c: deal with a possible race condition during multicast
3553         delegate invocation.
3554
3555 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3556
3557         * class.c: ensure value type methods don't have the synchronized
3558         flag set.
3559
3560 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
3561
3562         * string-icalls.c, string-icalls.h: reverted unapproved patch that
3563         breaks the build.
3564
3565 2007-10-11  Joel Reed  <joelwreed@comcast.com>
3566
3567         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
3568         to take an options parameter so that empty entries can be removed during
3569         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
3570
3571 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3572
3573         * marshal.c: make sure we don't store the signature from a dynamic
3574         method into the runtime invoke cache (bug #327189).
3575
3576 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3577
3578         * marshal.c: make sure the wrapper methods are properly initialized.
3579
3580 2007-10-11  Mark Probst  <mark.probst@gmail.com>
3581
3582         * metadata.c, metadata-internals.h: Generalized
3583         mono_type_stack_size() to mono_type_stack_size_internal() which
3584         takes an additional argument specifying whether it allows open
3585         types.
3586
3587 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * verify.c (do_invoke_method): handle typedbyref params
3590         correctly and check for unverifiable return values.
3591
3592         * verify.c (do_newobj): fix a warning.
3593
3594 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3595
3596         * verify.c: don't tread typedbyref as allways unverifable,
3597         so uses, like (ld/st)loc.0 are valid. verify for the cases
3598         that it matters, like boxing related operations.
3599
3600 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3601
3602         * verify.c: add verification of the newobj opcode. verification
3603         of delegate instantation still missing due ldftn and virldftn not
3604         pushing the function type on stack
3605
3606 2007-10-08  Mark Probst  <mark.probst@gmail.com>
3607
3608         * class-internals.h: Runtime generic context data structure
3609         definition.
3610
3611         * object.c: Initialization of runtime generic context at runtime
3612         vtable creation time.
3613
3614 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
3615         * class.c (mono_class_create_from_typedef,
3616         mono_class_from_generic_parameter, mono_ptr_class_get,
3617         mono_fnptr_class_get, mono_bounded_array_class_get)
3618         * domain.c (mono_domain_create, mono_domain_free)
3619         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
3620         * image.c (do_mono_image_load, mono_image_close):
3621         Hooked up load-unload profiler events.
3622
3623 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
3624
3625         * domain.c: track statistics about the actual amount of native code
3626         allocated.
3627
3628 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
3629
3630         * class.c: the valuetype enumerators don't have the additional
3631         supertypes interfaces.
3632
3633 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3634
3635         * class.c: need more interfaces setup for the IEnumerator<T>
3636         object created for arrays (tests/ienumerator-interfaces.2.cs).
3637
3638 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
3639
3640         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
3641
3642 2007-10-05  Alp Toker  <alp@atoker.com>
3643
3644         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
3645         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
3646         #315863.
3647
3648 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3649
3650         * verify.c (verify_type_compatibility_full): verification of
3651         compatibility improved, validates correctly non-strict checks between
3652         native int and I4 types different than (unsigned)int32.
3653
3654         * verify.c (do_store_indirect): added, do all verification of
3655         ldind.X opcodes. 
3656
3657         * verify.c (get_load_indirect_mono_type): renamed to
3658         get_indirect_op_mono_type, as it now returns the MonoType for 
3659         ldind.X and stind.X opcodes.
3660
3661 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
3662
3663         * reflection.c: Fix the encoding of generic type definition for
3664         TypeBuilders.
3665
3666         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
3667         mono_image_typedef_or_ref but allows to specify if typespec lookups should
3668         be made. Typespec check is done prior to typeref cache lookup.
3669
3670         * reflection.c (mono_image_typedef_or_ref): now just delegate to
3671         mono_image_typedef_or_ref_full.
3672
3673         * reflection.c (encode_generic_class): encode the generic class
3674         directly instead of calling encode_type.
3675
3676         * reflection.c (encode_type): encode the generic type definition
3677         MonoClass as a generic instantiation.
3678
3679         * reflection.c (create_typespec): cache typespec tokens in
3680         the assembly->typespec cache. Don't create typespec for a generic
3681         instance MonoClass. Create typespec for the generic type defintion.
3682
3683         * reflection.c (create_generic_typespec): encode the generic
3684         class directly instead of calling encode_type.
3685
3686         * reflection.c (mono_image_create_token): encode the generic
3687         type definition not using a typespec for MonoType instances.
3688
3689
3690 2007-10-04  Raja R Harinath  <rharinath@novell.com>
3691
3692         Fix #328812
3693         * class.c (mono_image_init_name_cache): Don't return nested
3694         'protected internal' classes.
3695         (mono_class_from_name_case): Likewise.
3696
3697 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
3698
3699         * icall-def.h, icall.c : get_bundled_machine_config() is now the
3700           common function used by both DefaultConfig in System.dll and
3701           InternalConfigurationHost in System.Configuration.dll.
3702
3703 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3704
3705         * class.c: automatically add to vectors only a few essential explicit
3706         generic interfaces. The rest of the interfaces that arrays should
3707         provide are currently implicitly added (but still not lazily, see the
3708         design in the discussion of bug#325495 for the details of what is
3709         needed for that). Additionally, implicit interfaces are assigned the
3710         same vtable slot as the explicit interfaces (as they are compatible):
3711         this enables huge memory savings since we don't need to instantiate
3712         as many memthods and as large vtables anymore. Also, Since
3713         GetEnumerator<T> returns an instance of a type that is required to
3714         support a similarly large set of interfaces as arrays, we add
3715         implicit interfaces and interface offset sharing support to those
3716         types, too. This change adds all the required interfaces so that
3717         the anonarray.cs test case in the bug report works (we don't add
3718         all the interfaces to arrays of arrays 3-level deep and more because
3719         of the memory requirements explained in the bug and since they are much
3720         less common: the lazy-loading support will enabled them to work, too).
3721
3722 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3723
3724         * verify.c (merge_stacks): major clean up, all type compatibility
3725         checks are done by verify_type_compatibility. This fix my earlier lack
3726         of understanding of the CLR type system and merge_stacks no longer looks
3727         scary.
3728
3729         * verify.c: fixed some bad spelling.
3730
3731 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
3732
3733         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
3734         a given stack slock.
3735         
3736         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
3737         verify_type_compatibility_full. This removed a near indentical function and fixed
3738         handling of Int32 and IntPtr across all opcodes.
3739
3740 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3741
3742         * class.c: only vectors have the additional generic interfaces.
3743
3744 2007-10-01  Jonathan Chambers <joncham@gmail.com>
3745
3746         * mono-config.c: Use g_strcasecmp instead of
3747         strcasecmp like everywhere else to fix
3748         compilation with MSVC.
3749         
3750         Code is contributed under MIT/X11 license.
3751
3752 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3753
3754         * object.c, object-internals.h: refactored the IMT code to enable
3755         building a single slot at a time and lazily creating the IMT trampolines
3756         and thunks.
3757
3758 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
3759
3760         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
3761
3762         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
3763         Fixes #328501.
3764         
3765 2007-09-29  Raja R Harinath  <harinath@gmail.com>
3766
3767         * loader.c (method_from_methodspec): Rearrange to avoid
3768         un-necessary exposition.  Don't assert out if the method's
3769         declaring type is a generic type definition.
3770
3771 2007-09-28  Martin Baulig  <martin@ximian.com>
3772
3773         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
3774
3775 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
3776
3777         * class-internals.h: optimize field layout of MonoClass to
3778         requires less cachelines at runtime and save a few bytes on 64 bit
3779         systems.
3780
3781 2007-09-28  Jb Evain  <jbevain@novell.com>
3782
3783         * reflection.c: when encoding type names in custom attributes,
3784         if the type is a closed generic type, its generic arguments
3785         have to be serialized as AssemblyQualifiedName, so that when
3786         they are deserialized, it's possible to re-create them properly.
3787         Fixes #329450.
3788
3789
3790 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
3791
3792         * object.c, class-internals.h: added delegate-creation counter.
3793
3794 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
3795
3796         * class.c: cleanup of the code that synthetizes interfaces for
3797         arrays in 2.0: saves quit a bit of corlib mempool memory.
3798         Code to fix bug #325495 ifdeffed out for now until the issues
3799         with memory usage and O(n^2) behaviour are fixed.
3800
3801 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3802
3803         * marshal.c: when possible, do not duplicate the name of the methods
3804         in the method builder and in the generated MonoMethod.
3805
3806 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3807         * verify.c: added support for type checking ldind_* opcodes.
3808
3809 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
3810
3811         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
3812         which is used to distinguish the fully open instantiation of a TypeBuilder
3813         with the rest. This temporary hack is required to restore the property that
3814         the fully open instantiation is the same type of the generic type definition.
3815
3816         * class-internals.h (mono_generic_class_is_generic_type_definition):
3817         new function as part of the internal API.
3818
3819         * class.c (inflate_generic_type): return NULL when the generic inst is
3820         fully open. The fully open generic type is now the same as the generic type
3821         definition for non TypeBuilder types.
3822
3823         * class.c (mono_generic_class_get_class): removed assert since it is
3824         no longer valid, gklass->cached_class can point to the generic type definition.
3825
3826         * class.c (mono_generic_class_is_generic_type_definition): new.
3827
3828         * metadata.c (mono_generic_class_hash): added is_tb_open field
3829         to the hash calculation.
3830
3831         * metadata.c (free_generic_class): if the generic class is associated
3832         with the generic type definition, its field will come from the mempool and
3833         must not be freed.
3834
3835         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
3836         new, this function identifies the corner case of a TypeBuilder fully open
3837         instantiation.
3838
3839         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
3840         for lookup. Set gclass->cached_class to be the container class in case of
3841         the fully open instantiation of non TypeBuilder types.
3842
3843         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
3844         to compare generic classes.
3845
3846         * reflection.c (method_encode_methodspec): remove assert that
3847         no longer is valid.
3848
3849         * reflection.c (mono_reflection_generic_class_initialize): add
3850         an aditional assert to ensure the proper type is used.
3851
3852 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
3853
3854         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
3855         to enjoy it.
3856
3857 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3858
3859         * verify.c (push_arg): Fixed support for ldarga
3860         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
3861         MonoType used as first arg in case of instance calls.
3862
3863 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
3864
3865         * verify.c: Support for verifying VAR and MVAR types, 
3866
3867 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
3868
3869         * icall.c (ves_icall_get_property_info): Set the reflected type of the
3870         accessors correctly.
3871
3872 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
3873
3874         * threads.c: support OSX and other systems in
3875         mono_thread_get_stack_bounds (bug #328026).
3876
3877 2007-09-25  Martin Baulig  <martin@ximian.com>
3878
3879         * mono-debug.h
3880         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
3881
3882 2007-09-24  Martin Baulig  <martin@ximian.com>
3883
3884         * mono-debug.h
3885         (MonoDebugClassEntry): Moved the definition of this struct into
3886         mono-debug.c to make it private.
3887
3888         * mono-debug.c
3889         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
3890         type table per symbol file, we don't need to store the symfile id
3891         any longer.
3892
3893 2007-09-24  Martin Baulig  <martin@ximian.com>
3894
3895         Create one type table per symbol file, since a `MonoClass *' gets
3896         invalid when its image is unloaded.
3897
3898         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
3899         (MonoDebugHandle): Added `type_table'.
3900
3901 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
3902
3903         * mempool.c, mempool.h: added mono_mempool_new_size () API
3904         to be able to specify a smaller initial size for the pool.
3905         Adjusted the code to slowly increase pool size before using
3906         the previous default size.
3907         * image.c: use a small initial size for image mempools.
3908
3909 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
3910
3911         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
3912         Fixes ##320990.
3913
3914         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
3915         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
3916
3917 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * metadata.c (mono_type_create_from_typespec): Remove an invalid
3920         free. Fixes #327438.
3921
3922 2007-09-21  Raja R Harinath  <harinath@gmail.com>
3923
3924         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
3925         generic instantiations, etc.
3926         <MONO_TYPE_ARRAY>: Likewise.
3927
3928 2007-09-21  Martin Baulig  <martin@ximian.com>
3929
3930         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
3931         these structs were never defined.
3932         (MonoDebugHandle): Removed the `_priv' field, it was never used.
3933
3934 2007-09-21  Martin Baulig  <martin@ximian.com>
3935
3936         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
3937
3938 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
3939
3940         * image.c: removed the guid hash tables: we can get the same info
3941         without the additional memory usage hit (partially fixes also bug #327052).
3942
3943 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3944
3945         * profiler.h, profiler-private.h, profiler.c: add a new profiler
3946         event to handle unloading methods. After the event is called, the
3947         corresponding MonoMethod* must be considered invalid.
3948         * loader.c (mono_free_method): call the new mono_profiler_method_free
3949         event.
3950
3951 2007-09-20  Mark Probst  <mark.probst@gmail.com>
3952
3953         * domain-internals.h: New flag in MonoJitInfo which marks shared
3954         generic methods.  New hash table (shared_generics_hash) in
3955         MonoDomain to keep track of shared generic methods.  Prototypes
3956         for functions to register and lookup shared generic methods.
3957
3958         * domain.c: Support for registering and looking up shared generic
3959         methods via a hash table (shared_generics_hash) in MonoDomain.
3960
3961         * class-internals.h: New exception to signal failure of shared
3962         compilation of a generic method.  New counters for generics
3963         sharing in MonoStats.
3964
3965 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
3966
3967         * image.c, metadata-internals.h: don't keep a file descriptor open
3968         for loaded assemblies (bug#325988).
3969
3970 2007-09-19  Raja R Harinath  <rharinath@novell.com>
3971
3972         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
3973         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
3974         use the corresponding datatypes.
3975         (type_in_image): Update to changes.
3976         (CleanForImageUserData): Simplify.
3977         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
3978         Avoid quadratic behaviour in handling the "stolen" list by
3979         separating the filter predicate out, and by prepending the stolen
3980         items rather than appending them.
3981         (steal_ginst_in_image): Likewise.
3982         (mono_metadata_clean_for_image): Update to changes.
3983
3984 2007-09-19  Martin Baulig  <martin@ximian.com>
3985
3986         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
3987
3988 2007-09-19  Martin Baulig  <martin@ximian.com>
3989
3990         * mono-debug.c (mono_debug_cleanup): Don't call
3991         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
3992
3993 2007-09-19  Raja R Harinath  <harinath@gmail.com>
3994
3995         Fix crash on 'make run-test' in mcs/errors
3996         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
3997         Avoid more potential allocations in mono_class_from_mono_type.
3998         (ginst_in_image): Update to changes.
3999         (gclass_in_image): Rearrange slightly.
4000
4001 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4002
4003         * class.c (mono_class_init): Move the code that sets up class->methods to 
4004         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
4005
4006         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
4007         canonical instance of an inflated generic signature.
4008         (mono_type_create_from_typespec): Remove an invalid free.
4009
4010         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
4011
4012 2007-09-18  Marek Habersack  <mhabersack@novell.com>
4013
4014         * domain-internals.h: added a declaration of the
4015         mono_assembly_load_full_nosearch internal function.
4016
4017         * assembly.c (mono_assembly_load_with_partial_name): use
4018         mono_try_assembly_resolve return value properly.
4019         (mono_assembly_load_full_nosearch): copied the function body from
4020         mono_assembly_load_full, without the code to invoke assembly
4021         search hooks.
4022         (mono_assembly_load_full): calls the above new function and if the
4023         assembly is not resolved, invokes the search hooks.
4024
4025         * appdomain.c (mono_runtime_init): restore the global postload
4026         assembly search handlers.
4027
4028 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * class.c (mono_class_init): Make sure class->methods and class->properties
4031         are never NULL in the generics case.
4032
4033         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
4034
4035 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * metadata.c (free_generic_class): Disable some code to fix the build.
4038
4039         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
4040
4041         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
4042         from the image mempool.
4043
4044         * metadata.c (free_generic_class): Free more data from the inflated class.
4045
4046         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
4047
4048         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
4049         mempool.
4050         (mono_type_create_from_typespec): Ditto.
4051
4052         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
4053         MonoImage to the caller.
4054         (mono_init_internal): Save the opened image in a global variable.
4055         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
4056
4057         * reflection.c (resolve_object): Fix a leak.
4058
4059         * metadata.c: Fix the freeing of data in the generics caches.
4060         
4061         * metadata.c (free_generic_inst): Comment this out to fix the build.
4062         (free_generic_class): Ditto.
4063
4064         * metadata.c: Free cached generic methods, instantinations and classes when
4065         they are removed from the caches.
4066         (mono_metadata_free_type): Free the type itself.
4067
4068         * class.c: Free the result of mono_class_inflate_generic_type () in a few
4069         places.
4070
4071 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4072
4073         * boehm-gc.c: restrict managed allocs to __thread supporting
4074         architectures.
4075
4076 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
4079         (mono_generic_class_get_class): Fix a leak.
4080
4081         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
4082         mono_metadata_free_type ().
4083         (mono_metadata_inflate_generic_inst): Fix a leak.
4084
4085 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4086
4087         * mono-debug.c (free_header_data): Fix a leak missed earlier.
4088
4089         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
4090         mempool.
4091
4092         * mono-debug.c (mono_debug_close_image): Fix call to 
4093         g_hash_table_remove ().
4094
4095 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4096
4097         * icall-def.h: redirect all the string ctor to the managed
4098         CreateString () methods.
4099         * string-icalls.c, string-icalls.h: removed dead code for string
4100         ctors and icalls.
4101
4102 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4103
4104         * mono-debug.c: Fix memory leaks.
4105
4106 2007-09-14  Jonathan Chambers <joncham@gmail.com>
4107
4108         * threads-types.h: Implement mono_hazard_pointer_set and 
4109         mono_hazard_pointer_clear macros using do/while(0) to fix
4110         compilation with MSVC.
4111         
4112         Code is contributed under MIT/X11 license.
4113
4114 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
4117         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
4118
4119 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4120
4121         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
4122         icalls.
4123
4124 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4125
4126         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
4127         managed-code allocated as well.
4128
4129 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4130
4131         * class.c (mono_class_is_assignable_from): Add support for generic variance.
4132
4133 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4134
4135         * boehm-gc.c: fixed the build after the AOT changes.
4136
4137 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * wrapper-types.h: Add an ALLOC wrapper type.
4140
4141         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
4142         reference managed allocator methods.
4143
4144 2007-09-12  Marek Safar  <marek.safar@gmail.com>
4145
4146         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
4147         of Type array and not MonoType, a fix suggested by Hari.
4148         
4149 2007-09-12  Jonathan Chambers <joncham@gmail.com>
4150
4151         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
4152         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
4153         
4154         Code is contributed under MIT/X11 license.
4155
4156 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4157
4158         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
4159
4160 2007-09-12  Marek Habersack  <mhabersack@novell.com>
4161
4162         * image.c (do_mono_image_open): if assembly file fails to open and
4163         MONO_IOMAP is in effect, try to find the path in a
4164         case-insensitive way.
4165
4166         * appdomain.c (mono_runtime_init): do not install postload hooks -
4167         tests show that MS.NET doesn't use anything of that sort to
4168         trigger the AppDomain.AssemblyResolve event.
4169         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
4170         made non-static.
4171         (mono_runtime_init): init portability helpers here.
4172
4173         * assembly.c (mono_assembly_load_with_partial_name): if other   
4174         attempts fail, trigger the AppDomain.AssemblyResolve event handler
4175         to resolve the assembly.
4176
4177         * domain-internals.h: added mono_try_assembly_resolve and marked
4178         it as internal.
4179
4180 2007-09-11  Jb Evain  <jbevain@novell.com>
4181
4182         * object-internals.h (MonoReflectionDynamicMethod): add
4183         a `MonoReflectionType *owner` field. The owner is used
4184         * reflection.c:
4185         (mono_reflection_create_dynamic_method): use the owner of the dynamic
4186         method as the class declaring the dynamic method.
4187         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
4188         dynamic method to the declaring type of the methodbuilder.
4189
4190 2007-09-11  Mark Probst  <mark.probst@gmail.com>
4191
4192         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
4193         rules for calling methods via reflection.
4194
4195 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * reflection.c (resolve_object): Add support for MonoGenericClass. 
4198         Inflate MonoType's.
4199
4200 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
4201
4202         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
4203         provide a managed method that does fast allocations without needing
4204         a managed->unmanaged transition. Boehm GC implementation currently
4205         enabled for ptrfree objects on sane architectures.
4206
4207 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4208
4209         * marshal.c, marshal.h: exported a couple of useful functions and
4210         added mono_mb_get_label () to easily handle backward branches.
4211
4212 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
4213
4214         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
4215
4216 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4217
4218         * loader.c (find_method): Fixed the regression introduced while
4219         fixing bug #81466.
4220
4221 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
4222
4223         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
4224         well.
4225         
4226         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
4227         icall.c reflection.c: Pass a MonoGenericContext argument to 
4228         mono_lookup_dynamic_token ().
4229
4230         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
4231         #82744.
4232         
4233 2007-09-09  Robert Jordan  <robertj@gmx.net>
4234
4235         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
4236         for generic methods.
4237
4238         * object.c (mono_object_get_virtual_method): Handle generic methods.
4239         Fixes bug #78882.
4240
4241         Code is contributed under MIT/X11 license.
4242
4243 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
4244
4245         * image.c: fix locking in mono_image_load_file_for_image ().
4246
4247 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
4248
4249         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
4250         used only as a cache: added an icall to fill it.
4251
4252 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
4253
4254         * reflection.h: exposed mono_reflection_free_type_info
4255         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
4256         since mono_reflection_bind_generic_parameters makes a copy of it.
4257         * reflection.c (free_type_info): subinfos should be freed.
4258         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
4259         made non static.
4260         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
4261         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
4262         this fixes #82695 and #81726.
4263    
4264
4265 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
4266
4267         * process.h, process.c:  added support for user profile/info in
4268           ProcessStartInfo. For now only Windows works.
4269
4270 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4271
4272         * metadata.c: consider the generic arguments when comparing
4273         signatures (bug #82614).
4274
4275 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4276
4277         * cil-coff.h, image.c: updated assembly loader to cope with the
4278         PE32+ 64 bit file format.
4279
4280 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4281
4282         * assembly.c, class.c, domain.c, loader.c: remove useless
4283         inclusion of cil-coff.h.
4284
4285 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
4286
4287         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
4288         if interface is marked with CoClassAttribute. 
4289    
4290         Code is contributed under MIT/X11 license.
4291
4292 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
4293
4294         * sgen-gc.c: ensure no object from the to space is copied again or finalized
4295         if it's seen twice in major collections.
4296
4297 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4298
4299         * sgen-gc.c: big objects are not copied to the gray area, but they
4300         need to be considered for scanning, too, if they are brought alive
4301         by an object ready for finalizations or a survived one.
4302
4303 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4304
4305         * sgen-gc.c: properly account the number of disappearing links when
4306         they are nullified.
4307
4308 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
4309
4310         * sgen-gc.c: share the code to scan the registered roots between the
4311         different types of collections.
4312
4313 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
4316
4317 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
4320         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
4321
4322 2007-08-28  Mark Probst  <mark.probst@gmail.com>
4323
4324         * security-manager.c (mono_security_manager_get_methods):
4325         LinkDemandSecurityException now has 2 arguments instead of 3.
4326
4327 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
4328
4329         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
4330         platforms which need it.
4331
4332 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4333
4334         * sgen-gc.c: unregister thread data structures with a pthread_key_t
4335         dtor.
4336
4337 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
4338
4339         * threads.c: free the thread static data on thread exit.
4340
4341 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
4342
4343         * class.c: walk the hierarchy to find the generic definition for
4344         a class (fixes runtime part of bug #82498).
4345
4346 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4347
4348         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
4349         ...
4350
4351         * image.c (mono_image_close): Here. Hopefully fixes #82510.
4352
4353 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4354
4355         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
4356
4357 2007-08-24  Robert Jordan  <robertj@gmx.net>
4358
4359         * appdomain.c: don't perform the ':'->';' substitution on Win32.
4360
4361 2007-08-24  Jb Evain  <jbevain@novell.com>
4362
4363         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
4364         for byref types.
4365
4366 2007-08-24  Mark Probst  <mark.probst@gmail.com>
4367
4368         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
4369         #82286.
4370
4371 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * assembly.c: Fix a warning.
4374         
4375 2007-08-23  Marek Habersack  <mhabersack@novell.com>
4376
4377         * appdomain.c: parse the <runtime> section looking for the probing
4378         element with the 'privatePath' attribute, which sets additional
4379         directories in which the runtime should look for assemblies.
4380
4381 2007-08-23  Robert Jordan  <robertj@gmx.net>
4382
4383         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
4384         Fixes #82499.
4385
4386 2007-08-23  Martin Baulig  <martin@ximian.com>
4387
4388         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
4389         _mono_debug_init_corlib() and remove it from the header file.
4390
4391 2007-08-23  Martin Baulig  <martin@ximian.com>
4392
4393         * mono-debug-debugger.c
4394         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
4395         don't notify the debugger about it.
4396
4397         * mono-debug-debugger.h
4398         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
4399
4400 2007-08-23  Robert Jordan  <robertj@gmx.net>
4401
4402         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
4403         Code is contributed under MIT/X11 license.
4404
4405 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
4406
4407         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
4408
4409 2007-08-22  Martin Baulig  <martin@ximian.com>
4410
4411         * mono-debug.c: Store debugging info on a per-domain basis and
4412         free it on domain unload.  Add support for unloading symbol files.
4413
4414         * mono-debug.h
4415         (MonoDebugList): New typedef.
4416         (MonoSymbolTable):
4417         - add `data_tables and `type_table'.
4418         - replace 'symbol_files' and `num_symbol_files' with a
4419           `MonoDebugList *'.
4420         (mono_debug_data_table): Removed.
4421         (mono_debug_list_add): New public function.
4422         (mono_debug_list_remove): New public function.
4423         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
4424         (mono_debug_init_2_memory): Renamed into
4425         mono_debug_open_image_from_memory().
4426         (mono_debug_close_image): New public function.
4427         (mono_debug_domain_create): Likewise.
4428         (mono_debug_domain_unload): Likewise.
4429         (MONO_DEBUGGER_VERSION): Bump to 60.
4430
4431         * mono-debug-debugger.h
4432         (MonoDebuggerEvent):
4433         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
4434         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
4435         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
4436         - rename `THREAD_CREATED' and `THREAD_EXITED' into
4437           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
4438         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
4439           meaning.
4440         (mono_debugger_add_symbol_file): Removed.
4441         (mono_debugger_add_type): Removed.
4442         (mono_debugger_lookup_type): Removed.
4443         (mono_debugger_lookup_assembly): Removed.
4444
4445         * domain.c
4446         (mono_domain_create): Call mono_debug_domain_create().
4447         (mono_init_internal): Call mono_debug_init_corlib().
4448
4449         * assembly.c
4450         (mono_assembly_close): Call mono_debug_close_image().
4451
4452 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
4453
4454         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
4455         mmap call.
4456
4457 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4458
4459         * sgen-gc.c: ensure section->pin_queue_end is initialized
4460         correctly when non pinning objects in the section have been found.
4461
4462 2007-08-22  Marek Habersack  <mhabersack@novell.com>
4463
4464         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
4465         containing a list of directories separated by ':'. MSDN docs say
4466         the directories should be separated with ';'. Part of a bugfix for
4467         bug #81446
4468
4469 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
4470
4471         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
4472         it should MonoType and not MonoClass.
4473
4474 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
4475
4476         * culture-info-table.h : regenerated.
4477
4478 2007-08-20  William Holmes  <billholmes54@gmail.com>
4479
4480         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
4481          to call ReplaceFile Kernel32 on windows or in io-layer.
4482         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
4483         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
4484          as an internal call.
4485
4486         Code is contributed under MIT/X11 license.
4487
4488 2007-08-20  Jb Evain  <jbevain@novell.com>
4489
4490         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
4491         and MONO_EXCEPTION_FIELD_ACCESS.
4492
4493         * debug-helpers.[c|h]: new mono_field_full_name function.
4494
4495 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4496
4497         * class.c: Removed class_security_level() and moved it to
4498         security-core-clr.c.
4499
4500         * security-core-clr.c, security-core-clr.h: class_security_level()
4501         is now public and renamed to mono_security_core_clr_class_level().
4502         It also looks for security attributes in the classes a class is
4503         nested in.
4504
4505 2007-08-20  Mark Probst  <mark.probst@gmail.com>
4506
4507         * security-core-clr.c, security-core-clr.h: CoreCLR security
4508         utility functions.
4509
4510         * Makefile.am: Added security-core-clr.[ch].
4511
4512         * security-manager.c, security-manager.h: Functions and enum for
4513         setting and getting the security mode.
4514
4515         * class.c: CoreCLR security checks.
4516
4517 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4518
4519         * icall-def.h, process.c, process.h: implemented icall to get
4520         user/system processor times.
4521
4522 2007-08-17  Mark Probst  <mark.probst@gmail.com>
4523
4524         * domain.c, threads.c, class-internals.h, domain-internals.h: New
4525         reader-lock-free jit_info_table.
4526
4527 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
4530
4531         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
4532
4533         * object-internals.h (MonoException): Add missing _data member.
4534
4535 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4536
4537         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
4538         checking that only methods with matching qname or fqname are picked
4539         from implemented interfaces.
4540
4541 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4542
4543         * verify.c (do_newarr):added, do type verification of
4544         newarr ops, push the right value on the eval stack.
4545         * verify.c (mono_method_verify): use do_newarr
4546
4547
4548 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4549
4550         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
4551         factored the common code into get_boxable_mono_type, which
4552         is now using mono_type_get_full, this fixed byref related tests.
4553
4554 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
4555
4556         * class.c: added mono_type_get_full, this function has the same
4557         behavior of mono_class_get_full but the returned MonoType has
4558         all metadata of the associated token in case of a typespec token.
4559         * class.c: added mono_type_retrieve_from_typespec, used by 
4560         mono_type_get_full to retrieve the token type.
4561         * class.c (mono_class_create_from_typespec): changed to use
4562         mono_type_retrieve_from_typespec.
4563         * class.c (mono_ldtoken): changed to use mono_type_get_full
4564         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
4565         * class-internals.h: exported mono_type_get_full for internal use.
4566
4567 2007-08-16  Jb Evain  <jbevain@novell.com>
4568
4569         * domain.c (supported_runtimes): add entry for
4570         the 'moonlight' runtime version.
4571
4572 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * verify.c (mono_method_verify): small typo sliped in.  
4575
4576 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * verify.c (do_unbox_value): added, do type verification of
4579         unboxing ops
4580         * verify.c (mono_method_verify): use do_unbox_value
4581
4582
4583 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * verify.c (dump_stack_value): fixed typo, was printing string
4586         instead of object on stack.
4587         * verify.c (do_box_value): moved the byref check up as it leads
4588         to invalid code and should be done earlier.
4589         * verify.c: improved error messages for and ldobj
4590
4591 2007-08-15  William Holmes  <billholmes54@gmail.com>
4592
4593         * marshal.c (emit_marshal_custom): Omit the call to 
4594           marshal_native_to_managed when calling native to managed 
4595           and the argument is specified as an out argument.
4596
4597         Code is contributed under MIT/X11 license.
4598
4599 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
4600
4601         * verify.c: fixed the type checks for generics, function pointers and vectors.
4602         Added type verification for ldobj and ldtoken. The verifier
4603         would segfault if header or signature of a method contained references
4604         to non-existant types.
4605
4606 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4607
4608         * marshal.c (cominterop_get_ccw): Patch from
4609         Bill Holmes to no walk up interface hierarchy. 
4610         All parent methods should be present in the interface for COM.
4611    
4612         Code is contributed under MIT/X11 license.
4613
4614 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
4615
4616         * marshal.c (emit_marshal_com_interface): Patch from
4617         Bill Holmes to handle COM Interfaces as return values
4618         for native->managed calls.
4619    
4620         Code is contributed under MIT/X11 license.
4621
4622 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
4623
4624         * marshal.c (cominterop_get_idispatch_for_object): Implement
4625         for runtime callable wrappers.
4626    
4627         Code is contributed under MIT/X11 license.
4628
4629 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * pedump.c (main): changed from mono_init to mono_init_from_assembly
4632         so 2.0 types are accessible
4633
4634
4635 2007-08-13  Miguel de Icaza  <miguel@novell.com>
4636
4637         * domain.c (mono_init_internal): Call mono_assembly_load_friends
4638         once we load mscorlib.   Due to the order in which we initialize,
4639         the mono_assembly_load_full routine that loads mscorlib did not
4640         load friends.   We now load it once we load the
4641         mono_defaults.internals_visible_class class. 
4642
4643         * assembly.c: Expose the mono_load_friend_assemblies method.
4644
4645 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
4646
4647         * verify.c: improved the handling of boxing, better
4648         type checking for unary ops and conversion. Fix bug
4649         regarding managed pointer compatibility checking
4650
4651 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
4652
4653         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
4654
4655         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
4656
4657 2007-08-09  Raja R Harinath  <rharinath@novell.com>
4658
4659         * reflection.c (dup_type): Remove.
4660         * class.c (dup_type): Remove.
4661         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
4662         instead of the dodgy 'dup_type'.
4663         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
4664         handle the case where 'dup_type' needed the second argument.
4665
4666 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
4667
4668         * domain.c: Fix a warning.
4669
4670 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
4671
4672         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
4673         checking that methods with the same fqname are not overridden
4674         with a method from an ancestor.
4675
4676 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * threads.c (free_thread_static_data_helper): Avoid a crash if
4679         thread->static_data is not yet set.
4680
4681 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
4682
4683         * marshal.c: Use correct image when emitting
4684         native wrapper for COM calls.
4685    
4686         Code is contributed under MIT/X11 license.
4687
4688 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
4689
4690         * icall-def.h, security.c, security.h :
4691           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
4692
4693 2007-08-07  Martin Baulig  <martin@ximian.com>
4694
4695         * mono-debug-debugger.h
4696         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
4697
4698         * domain.c (mono_domain_free): Call
4699         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
4700
4701 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * verify.c (check_underflow, check_overflow): error message now returns IL offset
4704         * verify.c (in_same_block): code should test if either offset is inside the clauses
4705         * verify.c (mono_method_verify): push the exception into the eval stack of exception
4706         and filter blocks
4707
4708 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4709
4710         * image.c (mono_image_close): Fix a leak.
4711
4712         * object.c (mono_runtime_invoke_array): Avoid using alloca.
4713
4714         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
4715
4716 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
4717
4718         * domain.c, threads.c, threads-types.h: fix memory retention issue
4719         with thread static variables not being cleared on domain unload.
4720         Reuse thread static slots after domain unload.
4721
4722 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
4725         nullable type.
4726
4727         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
4728         now done in mono_runtime_invoke_array.
4729
4730         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
4731         receiver is a nullable type.
4732
4733         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
4734         generic parameter.
4735
4736 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
4737
4738         * marshal.c: Implement COM Objects as return type for 
4739         managed->unmanaged calls. Added Release calls for COM Object
4740         out/return values in managed->unmanaged calls.
4741
4742         Code is contributed under MIT/X11 license.
4743
4744 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
4745
4746         * threads.h, threads-type.h: move the hazard pointer declarations
4747         to the private header.
4748
4749 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
4750
4751         * file-io.c, appdomain.c: memory leak fixes.
4752
4753 2007-08-02  Dick Porter  <dick@ximian.com>
4754
4755         * socket-io.c
4756         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
4757         SO_REUSEADDR setting into io-layer/sockets.c.
4758
4759 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
4762         from Object when called on a generic parameter. Fixes #82211.
4763
4764 2007-08-01  Dick Porter  <dick@ximian.com>
4765
4766         * file-io.c (convert_share): Test FileShare values bit-by-bit.
4767         Fixes bug 79250 yet again.
4768
4769 2007-07-30  Martin Baulig  <martin@ximian.com>
4770
4771         Merged the `debugger-dublin' branch.
4772
4773         * mono-debug.h
4774         (MonoDebugDataTable): New typedef.
4775         (MonoDebugMethodAddressList): New typedef.
4776         (MonoDebugWrapperData): Removed.
4777         (MonoDebugSymbolTable): Removed `current_data_table',
4778         `current_data_table_size', `current_data_table_offset'.
4779         (MonoDebugDataItemType): Moved into mono-debug.c.
4780         (MonoDebugMethodJitInfo): Remove `address'.
4781         (mono_debug_data_table): New global variable.
4782         (mono_debug_lookup_method_addresses): New public function.
4783         (mono_debug_find_method): Take a `MonoMethod *', not a
4784         `MonoDebugMethodInfo *'.
4785
4786         * mono-debug.c: Drop support for the old symbol tables.
4787
4788 2007-06-28  Martin Baulig  <martin@ximian.com>
4789
4790         * mono-debug.c (mono_debug_debugger_version): New public variable.
4791
4792 2007-07-31  William Holmes  <billholmes54@gmail.com>
4793
4794         * metadata.c Changed mono_type_create_from_typespec to not insert
4795           the type into the hash map until after
4796           do_mono_metadata_parse_type has completed.
4797         Fixes Bug #82194
4798         Code is contributed under MIT/X11 license.
4799
4800 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
4801
4802         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
4803         generic parameter. Fixes #82211.
4804
4805 2007-07-27  Jb Evain  <jbevain@novell.com>
4806
4807         * pedump.c (dump_metadata, dump_metadata_header): dump
4808         versions contained in the metadata header.
4809
4810 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4811
4812         * threads.c: register small_id_table with the GC.
4813
4814 2007-07-27  Mark Probst  <mark.probst@gmail.com>
4815
4816         * threads.c, threads.h, class-internals.h, object-internals.h:
4817         Hazard pointers, to be used by lock-free parallel algorithms.
4818
4819 2007-07-26  Dick Porter  <dick@ximian.com>
4820
4821         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
4822         routine on non-windows platforms, as I've not managed to think of
4823         a non-kludgy way of doing this.  Finishes off bug 78739.
4824
4825 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
4826
4827         * object.c: properly setup interface_bitmap in proxy vtables.
4828
4829 2007-07-25  Marek Habersack  <mhabersack@novell.com>
4830
4831         * appdomain.c (get_shadow_assembly_location): do not use TickCount
4832         to create unique shadow copy target directories, use the domain's
4833         serial number instead. Each domain gets a unique target directory
4834         that way.
4835
4836         * domain.c (mono_domain_create): added code to increment domain
4837         shadow copy serial number and cache the value in the current
4838         domain structure.
4839
4840         * domain-internals.h (struct _MonoDomain): added a new field -
4841         shadow_serial to hold the serial number used in generation of
4842         shadow-copy directories. This is to make sure that the directory
4843         name is unique for each and every domain created. We avoid a race
4844         condition with overriding assemblies already in use by other app
4845         domains.
4846
4847 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
4848
4849         * class.c (mono_bounded_array_class_get): fixed memory leak when 
4850         binding generic parameters.
4851
4852 2007-07-24  Raja R Harinath  <rharinath@novell.com>
4853
4854         * metadata.c (do_mono_metadata_parse_generic_class): Use
4855         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
4856         error.
4857
4858 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
4859
4860         * loader.c, class-internals.h, reflection.c: removed the per-method
4861         generics hashtable: we use the global one through the call of
4862         mono_class_inflate_generic_method ().
4863
4864 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4865
4866         * class.c, metadata.c, class-internals.h: introduce yet another
4867         generics global cache for inflated methods (fixes 98% of the perf
4868         issue in bug #81806).
4869
4870 2007-07-23  Raja R Harinath  <rharinath@novell.com>
4871
4872         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
4873         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
4874         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
4875         return a MonoGenericInst containing (a copy) of those types.
4876         (mono_metadata_inflate_generic_inst): Update to changes.
4877         (mono_metadata_parse_generic_inst): Likewise.
4878         (mono_get_shared_generic_inst): Likewise.
4879         * reflection.c (mono_class_bind_generic_parameters): Likewise.
4880         (mono_reflection_bind_generic_method_parameters): Likewise.
4881         * metadata-internals.h: Likewise.
4882         * icall.c (free_generic_context): Kill.
4883         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
4884
4885         * reflection.c (reflection_methodbuilder_to_mono_method): Use
4886         mono_metadata_type_dup.
4887         * marshal.c (mono_mb_create_method): Likewise.
4888
4889         * metadata.c (mono_metadata_type_dup): Rename from
4890         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
4891         MonoImage.  Handle a few more cases, esp. when no mempool is given.
4892         * marshal.c, metadata-internals.h: Update to changes.
4893
4894 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4895
4896         * class.c: fixed a small leak for array classes and removed warning.
4897
4898 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
4899
4900         * loader.c (mono_method_get_param_token): Make this work on generic methods.
4901         Return 0x8000000 for return parameters. Fixes #82161.
4902
4903 2007-07-21  Marek Habersack  <grendello@gmail.com>
4904
4905         * appdomain.c (get_shadow_assembly_location): append the current
4906         ticks value to the path. Avoids overwriting the same assemblies by
4907         several threads at the same time.
4908
4909 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
4910         and Raja R Harinath  <rharinath@novell.com>
4911
4912         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
4913         Simplify slightly.
4914         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
4915         property for testing if a method is a generic method definition.
4916
4917 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
4918
4919         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
4920
4921 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4922
4923         * verify.c: used function from private branch, reverted to the one in class.h 
4924
4925 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4926
4927         * verify.c: a typo slipped in and the code wont compile
4928
4929 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4930
4931         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
4932         disabled box instruction as it is doing the wrong thing
4933         improved stack dump messages, now it is easier to debug type related issues
4934
4935
4936 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
4937
4938         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
4939
4940 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4941
4942         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
4943         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
4944         grouped with class and valuetype. This change will simply 
4945         the code as it should be handled just like unmanaged pointers.
4946
4947 2007-07-19  Mark Probst  <mark.probst@gmail.com>
4948
4949         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
4950
4951 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * verify.c: several stack merge issues fixed, reference comparisons now
4954         check the type size. strict type check now works correctly.
4955         added more uses of IS_MANAGED_POINTER macro.
4956         fixed issues pointed by running the test suite against .net.
4957         
4958
4959 2007-07-19  Mark Probst  <mark.probst@gmail.com>
4960
4961         * class.c, loader.c, class-internals.h: Removed the
4962         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
4963         defines.
4964
4965         * icall.c: Better error checking in some internal reflection
4966         methods.
4967
4968 2007-07-18  William Holmes  <billholmes54@gmail.com>
4969
4970         * filewatcher.c : removed unused variable 'filename' in 
4971           ves_icall_System_IO_FSW_SupportsFSW
4972
4973 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
4974
4975         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
4976         obsolete, removed.
4977
4978 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
4979
4980         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
4981         
4982         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
4983
4984 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
4987         Implement generics support.
4988         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
4989
4990         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
4991         type_args and method_args arguments.
4992         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
4993         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
4994         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
4995
4996 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
4997
4998         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
4999           It adds a rootimage parameter to mono_reflection_get_type_internal,
5000           adds new function mono_reflection_get_type_with_rootimage and use
5001           the rootimage to resolve the types instead of the current image
5002
5003 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5004
5005         * culture-info-table.h: Forgot to update after r78304.
5006
5007 2007-07-13  Raja R Harinath  <rharinath@novell.com>
5008
5009         * class.c (mono_class_is_open_constructed_type)
5010         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
5011
5012 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
5013
5014         * class.c (mono_bounded_array_class_get):  method fails if used with
5015         an incomplete TypeBuilder enum (no basetype field), fixed it by 
5016         avoiding calculating the size for such array as it cannot be instantiated.
5017         Fix bug #82015
5018
5019 2007-07-12  Raja R Harinath  <rharinath@novell.com>
5020
5021         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
5022         field.
5023         * metadata.c, reflection.c: Update to changes.
5024
5025 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
5026
5027         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
5028         mono_class_is_valid_enum, they are used to valide a enum when loading.
5029         * reflection.c: used new functions to throw TypeLoadException when and
5030         invalid enum is build with TypeBuilder. Fixes #82018
5031   
5032 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5033
5034         * object.c: forgot commit of mono_class_setup_methods () to access
5035         iface->methods.
5036         * object-internals.h: added a few more handy fields to
5037         MonoIMTCheckItem.
5038
5039 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
5040
5041         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
5042         iface->methods.
5043
5044 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5045
5046         * class-internals.h, object-internals.h, object.c: IMT-based
5047         interface invocation core from Massimiliano Mantione
5048         (massi@ximian.com) with a reworked arch-specific interface,
5049         bsearch implementation and a few bugfixes and memory savings by me.
5050
5051 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
5052
5053         * class.c (mono_class_create_from_typedef): mono would segfault if 
5054         an enum did not have a __value field. It now throws a TypeLoadException
5055         for such cases. Fix bug #82022
5056
5057 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
5060
5061 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5062
5063         * class.c (mono_class_init): If a class is already inited but has
5064         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
5065
5066 2007-07-09  Mark Probst  <mark.probst@gmail.com>
5067
5068         * class.c: Properly handle the case of an unimplemented interface
5069         method.  Fixes: 81673.
5070
5071 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5072
5073         * class-internals.h, object.c: cleanup patch from massi: use
5074         MonoVTable->interface_bitmap since the vtable interfaces offset array
5075         is going away.
5076
5077 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
5080         GetMDStreamVersion icall instead.
5081
5082 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
5083
5084         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
5085         not use mono_dl_build_path() with a full library name: makes
5086         fallbacks to libgaim and libfam work.
5087
5088 2007-07-06  William Holmes  <billholmes54@gmail.com>
5089
5090         * assembly.c: Added a continue statement in probe_for_partial_name when
5091          parse_assembly_directory_name fails.  Fixes : 82002
5092
5093 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
5094
5095         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
5096         and added a verification  for TYPEDBYREF.
5097         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
5098         make native int interchangeable with int32 and some small cleanup and formating.
5099         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
5100         handle byref of byref.
5101         * verify.c (push_local): handle byref of byref.
5102         * verify.c (do_binop): invalid mix of values is unverifiable
5103         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
5104         added visibility checks
5105         * verify.c (field related method): added visibility checks
5106         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
5107
5108 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
5111         string.
5112
5113 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * profiler.c (mono_profiler_load): Fix an off-by-one error.
5116
5117         * marshal.c (emit_marshal_string): When returning a string from managed code,
5118         allways make a copy even for unicode strings. Fixes #81990.
5119
5120 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
5121
5122         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
5123         of byref generic inst types (bug #81997).
5124
5125 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
5126
5127         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
5128         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
5129
5130 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
5131
5132         * marshal.c (emit_marshal_string): Add support for unicode strings in
5133         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
5134
5135 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
5136
5137         * verify.c: field load/store are now verified, missing only access checks now
5138
5139 2007-06-28  Martin Baulig  <martin@ximian.com>
5140
5141         * mono-debug.c (mono_debug_debugger_version): New public variable.
5142
5143 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
5144
5145         * locales.c: When constructing DateTimeFormat or NumberFormat for
5146         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
5147         MonoCultureInfo contructed from the current locale is always
5148         read-only and has UseUserOverride set to true. All MonoCultureInfo
5149         instances returned for GetCultures have both IsReadOnly and
5150         UseUserOverride set to true. Fixes part of bug #81930.
5151
5152 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
5153
5154        * icall-def.h: Update System.__ComObject icalls
5155        * marshal.c: Avoid managed transition (and object creation)
5156        when looking up COM interface in RCW.
5157        * marshal.h: Ditto.
5158        
5159        Code is contributed under MIT/X11 license.
5160
5161 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
5164         to avoid crashes during assembly unloading.
5165
5166 2007-06-22  Raja R Harinath  <rharinath@novell.com>
5167
5168         Fix MethodInfo.IsGenericMethodDefinition
5169         * reflection.c (mono_reflection_bind_generic_method_parameters):
5170         Rearrange code to ensure we always uses a generic method definition.
5171         * class.c (mono_class_inflate_generic_method_full): Set
5172         'generic_container' field only for generic method definitions.
5173         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5174         Use presense of 'generic_container' field as indication of being a
5175         generic method definition.
5176
5177 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5180
5181         * object-internals.h: Reflect changes in the layout of the managed Delegate
5182         class.
5183         
5184         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
5185         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
5186         runtime memory used by the dynamic method. Fixes #77146.
5187
5188 2007-06-21  Dick Porter  <dick@ximian.com>
5189
5190         * file-io.h: 
5191         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
5192         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
5193         81767.
5194
5195 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5196
5197         * reflection.c (method_encode_methodspec): Add a tripwire.
5198         * class.c (inflate_generic_type): The fully open generic type is
5199         not the same as the generic type definition.
5200
5201 2007-06-21  Martin Baulig  <martin@ximian.com>
5202
5203         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
5204
5205         * mono-debug-debugger.h
5206         (MonoDebuggerBreakpointInfo): Removed.
5207         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
5208         (mono_debugger_remove_breakpoint): Likewise.
5209         (mono_debugger_breakpoint_callback): Likewise.
5210         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
5211
5212 2007-06-21  Raja R Harinath  <rharinath@novell.com>
5213
5214         * metadata.c (mono_metadata_lookup_generic_class): The fully open
5215         generic type is not the same as the generic type definition.
5216         * class.c (mono_generic_class_get_class): Likewise.
5217
5218 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
5219
5220         * icall.c: The second argument to 
5221         System.Reflection.MethodBase.GetMethodFromHandleInternalType
5222         is a MonoType not a MonoClass.
5223
5224 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5225
5226         * verify.c: support for function pointers in the verifier
5227
5228 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
5229
5230         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
5231
5232 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
5233
5234         * assembly.c: removed Mono.Data.SqliteClient from the list of
5235         forward-compatible assemblies as it breaks the ABI (bug #81899).
5236
5237 2007-06-19  Raja R Harinath  <rharinath@novell.com>
5238
5239         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
5240         lookup/update with the loader lock.
5241         * reflection.c (mono_class_bind_generic_parameters): No need to
5242         protect mono_metadata_lookup_* with the loader lock.
5243         * class.c (inflate_generic_type): Likewise.
5244         
5245         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
5246         on a generic instantiated type.
5247
5248 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
5249
5250         *verify.c: produce meanfull error messages on verification error
5251         *verify.c: fixed some cases of verification errors reported as validation errors
5252         *pedump.c: fixed the error name array, now it shows validation errors properly
5253         *verify.h: fixed the contant that should be used for verification errors
5254
5255 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
5256
5257         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
5258         for bug #77596, 81858 and 80743 (generics data structures on domain
5259         unload).
5260
5261 2007-06-15  Raja R Harinath  <rharinath@novell.com>
5262
5263         Avoid allocating 'MonoGenericContext' on the heap.
5264         * class-internals (_MonoMethodInflated::context): Make field
5265         inline, not a pointer.
5266         * loader.c (method_from_methodspec): Allocate 'new_context' on the
5267         stack.  Use the context embedded within the inflated method as the
5268         hash key, rather than 'new_context'.
5269         * class.c (inflate_generic_context): Simplify.  Return a struct
5270         rather than allocating on the heap.
5271         (mono_class_inflate_generic_method_full): Update to changes.  Now,
5272         doesn't salt away a copy of the context -- simplifying the
5273         lifetime rules of a 'MonoGenericContext *'.
5274         (mono_method_get_context): Return pointer to embedded context.
5275         (setup_generic_array_ifaces): Allocate temporary context on stack.
5276         * reflection.c (inflate_mono_method): Likewise.
5277         (mono_reflection_bind_generic_method_parameters): Likewise.
5278         Use the context embedded within the inflated method as the hash key.
5279
5280         Avoid a source of allocation of 'MonoGenericContext'.
5281         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
5282         and 'cached_context' fields into embedded 'MonoGenericContext' field.
5283         * class.c: Update to changes.
5284         (mono_generic_class_get_context): Simplify drastically.  Now just
5285         returns a pointer to the field.
5286         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
5287         argument as a const pointer.
5288         (mono_metadata_generic_context_equal): Likewise.
5289         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
5290         Update to changes.
5291
5292 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
5293
5294         * verify.c improved the handling of brtrue/brfalse, factored out common code
5295
5296 2007-06-14  Raja R Harinath  <rharinath@novell.com>
5297
5298         Kill MonoGenericMethod.
5299         * class-internals.h (MonoGenericContext::method_inst): Rename from
5300         'gmethod' and convert to a MonoGenericInst.
5301         (MonoGenericMethod): Remove.
5302         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
5303         * loader.c (method_from_methodspec): Update to changes.  Use a
5304         MonoGenericContext as the key to the hashtable.
5305         * metadata.c (mono_metadata_generic_context_equal): Rename from 
5306         'mono_metadata_generic_method_equal' and take MonoGenericContext.
5307         (mono_metadata_generic_context_hash): Likewise from
5308         'mono_metadata_generic_method_hash'.  Change hash function.
5309         (mono_metadata_load_generic_params): Update to changes.
5310         (mono_get_shared_generic_method): Remove.
5311         * metadata-internals.h (mono_get_shared_generic_method): Remove.
5312         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
5313         (inflate_generic_context): Likewise.
5314         (mono_class_inflate_generic_method_full): Likewise.
5315         (setup_generic_array_ifaces): Likewise.
5316         (mono_class_create_from_typespec): Likewise.
5317         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
5318         (method_encode_methodspec): Update callsite.
5319         (reflection_methodbuilder_to_mono_method): Update to changes.
5320         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
5321         MonoGenericContext as the key to the hashtable.
5322         (inflate_mono_method): Update to changes.
5323
5324         * class-internals.h (MonoGenericMethod::container): Remove.
5325         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5326
5327 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
5328
5329         * profiler-private.h, profiler.c, profiler.h: added API to profile
5330         exception events.
5331
5332 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5333
5334         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
5335
5336 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
5337
5338         * verify.c: method invocation is now validated, now we verify parameter types on stack.
5339         Fixed overflow and underflow not aborting the verification process.
5340
5341 2007-06-13  Mark Probst  <mark.probst@gmail.com>
5342
5343         * class-internals.h (MonoStats): Added stats entries for dynamic
5344         code allocations.
5345
5346 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * loader.c (mono_free_method): Free header->locals and header->clauses.
5349
5350         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
5351         dynamic case.
5352
5353         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
5354
5355         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
5356
5357 2007-06-12  Raja R Harinath  <rharinath@novell.com>
5358
5359         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
5360         the tables.
5361
5362 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5363
5364         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
5365
5366 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5367
5368         MonoGenericMethod on a diet
5369         * class-internals.h (_MonoMethodInflated::reflection_info): Move
5370         here ...
5371         (_MonoGenericMethod::reflection_info): ... from here.
5372         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
5373         Update to changes.
5374         * reflection.c (inflate_mono_method): Likewise.
5375         (mono_reflection_bind_generic_method_parameters): Likewise.
5376
5377 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5378
5379         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
5380         *verify.c: factored long ldarg forms to share code with short forms
5381
5382 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
5383
5384         *verify.c: fixed code formating factored some duplicate code
5385         into a new function
5386
5387         *verify.h: fixed binary incompatibility introduced earlier
5388
5389         *pedump.c: fixed formating
5390
5391 2007-06-11  Raja R Harinath  <harinath@gmail.com>
5392
5393         Fix assertion when disassembling Mono.C5.dll
5394         * loader.c (method_from_methodspec): Avoid inflating a method
5395         twice with the same context.  If the methodref is inflated, use
5396         the declaring method instead.
5397
5398         * class.c (mono_class_from_generic_parameter): Fix case similar to
5399         bug #81830 handled below, but for method containers.
5400
5401 2007-06-10  Raja R Harinath  <harinath@gmail.com>
5402
5403         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
5404         get_shared_generic_class.  Directly inflate the instance.
5405         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
5406         (inflate_generic_class): Delete.
5407         (get_shared_generic_class): Delete.  Move setting of
5408         'cached_class' and 'cached_context' ...
5409         * metadata.c (mono_metadata_lookup_generic_class): ... here.
5410
5411         * metadata.c (mono_metadata_lookup_generic_class): Change
5412         signature to take the components of a MonoGenericClass rather than
5413         an allocated MonoGenericClass.  Change semantics to be intern-like.
5414         * reflection.c (mono_class_bind_generic_parameters): Update to
5415         changes.  Make locking region tighter.
5416         * class.c (inflate_generic_class): Update to changes.
5417         (get_shared_generic_class): Likewise.
5418         * metadata-internals.h: Likewise.
5419
5420         * reflection.c (mono_class_bind_generic_parameters): Take and
5421         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
5422         (mono_reflection_bind_generic_parameters): Use
5423         'mono_class_bind_generic_parameters' rather than duplicate the code.
5424         * class.c (mono_bounded_array_class_get): Update to changes.
5425         * object-internals.h: Likewise.
5426
5427         * reflection.c (mono_class_bind_generic_parameters): Only support
5428         parameterizing generic type definitions.  Remove support for other
5429         open types.
5430
5431 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
5434
5435         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
5436         in the dynamic case.
5437
5438 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
5439
5440         * threads.c: When cleaning up thread, reset the Background bit.
5441         Fixes bug #81720.
5442
5443 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
5444
5445        * metadata.c: Move variable declarations to top of scope.
5446        * verify.c: Move variable declarations to top of scope.
5447
5448        Code is contributed under MIT/X11 license.
5449
5450 2007-06-08  Raja R Harinath  <rharinath@novell.com>
5451
5452         * reflection.c (mono_class_bind_generic_parameters): Replace
5453         open-coded loop with mono_metadata_inflate_generic_inst.
5454
5455         * class.c (get_shared_generic_class): Don't call
5456         mono_get_shared_generic_inst.  Use the container's own
5457         'class_inst'.
5458
5459         * metadata.c (mono_metadata_load_generic_params): Move
5460         initialization of 'context' field here from ...
5461         * class.c (mono_class_create_from_typedef): ... here, and ...
5462         * loader.c (mono_get_method_from_token): ... here.
5463
5464         * class.c (get_shared_generic_class): Rename from
5465         mono_get_shared_generic_class and make static.
5466         (mono_get_shared_generic_inst): Move to metadata.c.
5467         * loader.c (mono_get_shared_generic_method): Likewise.
5468         * class-internals.h, metadata-internals.h: Update to changes.
5469
5470         Fix #81830
5471         * class.c (mono_class_from_generic_parameter): Don't assume a
5472         generic container owner exists.  Generic containers from monodis
5473         don't have any.
5474
5475 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
5476
5477         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
5478         * verify.h: new typedefs to returns the non-verifiable status
5479         * verify.c: initial implementation of generics, stack merging and object compatibility check
5480
5481 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5482
5483         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5484         a MonoInternalHashTable again (fixed bug in internal hash table
5485         code).
5486
5487 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5488
5489         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5490         MonoInternalHashTable again (fixed bug in internal hash table
5491         code).
5492
5493 2007-06-06  Mark Probst  <mark.probst@gmail.com>
5494
5495         * class.c, image.c, class-internals.h, domain.c,
5496         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
5497         changes.  Have to figure out what makes them break the SWF
5498         regression.
5499
5500 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5501
5502         * class.c, image.c, class-internals.h (MonoImage): class_cache is
5503         a MonoInternalHashTable now.
5504
5505 2007-06-04  Mark Probst  <mark.probst@gmail.com>
5506
5507         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
5508         MonoInternalHashTable now.
5509
5510 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
5513         invoke_impl code.
5514
5515         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
5516
5517         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
5518         dependent trampoline.
5519
5520         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5521
5522         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
5523
5524 2007-05-29  Robert Jordan  <robertj@gmx.net>
5525
5526         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
5527
5528 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
5531
5532 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
5533
5534        * marshal.c: Fix interface lookup loops for
5535        cominterop_get_com_slot_for_method and 
5536        cominterop_get_method_interface. Only need to lookup
5537        if type is a class, else use interface type method is on.
5538
5539        Code is contributed under MIT/X11 license.
5540
5541 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
5542
5543         * reflection.c: HasSecurity can be present even if no specially 
5544         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
5545         SecurityAttribute). Fix CAS regression tests on buildbot.
5546
5547 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
5548
5549        * appdomain.c: Add configure checks for header files.
5550        * image.c: Add configure checks for header files.
5551        * file-io.c: Add configure checks for header files.
5552        * debug-mono-symfile.c: Add configure checks for header files.
5553        * threadpool.c: Add configure checks for header files.
5554        * console-io.c: Add configure checks for header files.
5555        * profiler.c: Add configure checks for header files.
5556        * rawbuffer.c: Add configure checks for header files.
5557        * icall.c: Add configure checks for header files.
5558        * rand.c: Add configure checks for header files.
5559        * socket-io.c: Add configure checks for header files.
5560
5561        Code is contributed under MIT/X11 license.
5562
5563 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * reflection.c (mono_custom_attrs_from_builders): Remove the 
5566         assertion as it breaks the build.
5567         
5568         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
5569
5570         * reflection.c (lookup_custom_attr): Make a copy here too.
5571
5572         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
5573         dynamic images.
5574
5575         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
5576         images.
5577
5578         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
5579         info.
5580
5581 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
5582
5583         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
5584         (load_cattr_value): Ditto.
5585
5586 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
5587
5588         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
5589
5590 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
5591
5592         * threads.c: In "start_wrapper", set apartment_state to MTA if
5593         apartment_state is Unknown and we're running on 2.0 profile or
5594         higher.
5595         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
5596         to main method, then set apartment_state to Unknown on 1.0 profile,
5597         and MTA on 2.0 profile.
5598
5599 2007-05-16  Jb Evain  <jb@nurv.fr>
5600
5601         * class-internals.h (MonoDefaults): Add an attribute_class and
5602           customattribute_data_class.
5603         * domain.c (mono_init_internal): Populate them.
5604         * reflection.c: Use them to remove duplicates. Make a vew
5605         MonoClass variables `static'.
5606
5607 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
5608
5609         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
5610         step in implementing IMT, so that all isinst checks now can go
5611         through the bitmap.
5612         This was needed because vtables for TransparentProxy need to look
5613         like the vtable of the "target" class, so they need to point to
5614         its interface bitmap directly.
5615
5616         * object.c: inside "mono_class_create_runtime_vtable" and
5617         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
5618
5619 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
5620
5621         * object-internals.h
5622           culture-info.h : added territory field in MonoCulture and
5623           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
5624         * locales.c : fill territory field above too.
5625         * culture-info-table.h : regenerated.
5626
5627 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
5630         Fixes #81599.
5631
5632 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
5633
5634         * object.c: Always initialize apartment, even if 
5635         there is no custom attributes on entry point.
5636         
5637         Code is contributed under MIT/X11 license.
5638
5639 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
5640
5641         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
5642         * metadata.c: If no encoding is set, check for unicode
5643         on class.
5644         
5645         Code is contributed under MIT/X11 license.
5646
5647 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5648
5649         * threads.c: Handle if mono_thread_current returns NULL 
5650         
5651         Code is contributed under MIT/X11 license.
5652
5653 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
5654
5655         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
5656         in start_wrapper. Added mono_thread_init_apartment_state and
5657         mono_thread_cleanup_apartment_state.
5658         * object.c: Initialize thread apartment state on main thread
5659         by checking for STAThreadAttribute on entry point.
5660         * object-internals.h: Add apartment_state field to MonoThread.
5661         * threads-types.h: Add unmanaged definition of 
5662         System.Threading.ApartmentState, MonoThreadApartmentState.
5663         
5664         Code is contributed under MIT/X11 license.
5665         
5666 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
5667
5668         * class.c: Fix windows build.
5669         * class-internals.h: Fix windows build.
5670         
5671         Code is contributed under MIT/X11 license.
5672
5673 2007-05-08  Robert Jordan  <robertj@gmx.net>
5674
5675         * process.c (CreateProcess_internal):
5676         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
5677         .CreateNoWindow was specified. Fixes #81496.
5678
5679 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5680
5681         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
5682         step in implementing IMT, replaced it with two compact arrays
5683         (interfaces_packed and interface_offsets_packed) and a bitmap that
5684         is used for isinst checks (interface_bitmap).
5685
5686         * class.c: (compare_interface_ids): compare function to pass to
5687         bsearch when looking for an interface with a given id.
5688         (mono_class_interface_offset): reimplemented using bsearch on
5689         interfaces_packed, getting the offset from interface_offsets_packed.
5690         (print_implemented_interfaces): utility debugging function.
5691         (setup_interface_offsets): reworked to initialize interfaces_packed,
5692         interface_offsets_packed and interface_bitmap.
5693
5694         * object.c: replaced all accesses to "MonoClass.interface_offsets"
5695         with uses of interfaces_packed and interface_offsets_packed.
5696
5697 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
5698
5699         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
5700         mono_class_interface_offset prototype to wrap all accesses to
5701         "MonoClass.interface_offsets".
5702
5703         * class.c: Implemented mono_class_interface_offset, and wrapped all
5704         accesses to "MonoClass.interface_offsets".
5705
5706         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
5707         "MonoClass.interface_offsets".
5708
5709 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5710
5711         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
5712         GetMethodFromHandle overloads (bug #78637).
5713
5714 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5715
5716         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
5717         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
5718
5719 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
5722         #81498.
5723
5724         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
5725         gracefully.
5726         (mono_custom_attrs_from_index): Ditto.
5727
5728         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
5729         Fixes #81501.
5730
5731 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
5734         is now allocated from a mempool.
5735
5736 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
5739         caller holds threads_lock, leading to deadlocks. Fixes #81476.
5740
5741 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
5742
5743         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
5744         mono_loader_clear_error () too late. Fixes #81463.
5745
5746 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
5747
5748         * culture-info-table.h : regenerated.
5749
5750 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
5753         is missing.
5754
5755 2007-04-25  Dick Porter  <dick@ximian.com>
5756
5757         * Makefile.am: Put the mingw enforced-optimisation back into the
5758         PLATFORM_WIN32 section.
5759
5760 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
5761
5762         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
5763         patch.
5764
5765         * image.c (mono_image_load_module): New API function to load a module reference.
5766
5767         * image.c (load_modules): Load modules lazily. Fixes #80812.
5768
5769         * class.c (mono_class_from_typeref): Use mono_image_load_module.
5770         
5771         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
5772
5773         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
5774         to mono_image_load_module_dynamic.
5775
5776 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
5777
5778         * marshal.c: Fix calling convention for CCW on non-windows
5779         platforms. STDCALL on windows, CDECL everywhere else to work 
5780         with XPCOM and MainWin COM.
5781         
5782         Code is contributed under MIT/X11 license.
5783
5784 2007-04-23  Martin Baulig  <martin@ximian.com>
5785
5786         Fix #80969.
5787
5788         * loader.c
5789         (method_from_memberref): Added `gboolean *used_context' argument.
5790         (mono_get_method_from_token): Likewise.
5791         (mono_get_method_full): Don't insert the method in the cache when
5792         `used_context' is true.
5793
5794 2007-04-23  Raja R Harinath  <rharinath@novell.com>
5795
5796         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
5797
5798         * reflection.c (mono_reflection_bind_generic_parameters): Don't
5799         create new MonoTypes for returned types.
5800         * class.c (mono_generic_class_get_class): Export mono-internal.
5801         * class-internals.h: Update to changes.
5802
5803 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
5804
5805         * threadpool.c, threadpool.h, icall-def.h: patch from
5806         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
5807
5808 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
5811         
5812         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
5813
5814         * threads.c (mono_thread_get_stack_bounds): New helper function.
5815
5816         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
5817         Correctly compute stack bounds when attaching. Fixes #81394.
5818
5819 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
5820
5821         * reflection.c: fix handling of doubles in custom attributes
5822         for the arm-fpa format (bug #81368).
5823
5824 2007-04-18  Raja R Harinath  <rharinath@novell.com>
5825
5826         * reflection.c (assembly_add_win32_resources): Mildly relax an
5827         bounds check to let the end pointer point just past the end of the
5828         allocated buffer.  (may fix #81384)
5829
5830 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5831
5832         * culture-info-table.h : regenerated.
5833
5834 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
5835
5836         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
5837         the thread is aborted early.
5838
5839 2007-04-05  Dick Porter  <dick@ximian.com>
5840
5841         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
5842         FindFirstFile()/FindNextFile() to find entries.  This lets the
5843         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
5844         81038.
5845
5846         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
5847         the parameters of
5848         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
5849
5850 2007-04-04  Martin Baulig  <martin@ximian.com>
5851
5852         * debug-helpers.c
5853         (mono_method_desc_full_match): Add support for nested classes.
5854
5855 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
5858
5859 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
5860
5861         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
5862         waiting for too many threads.
5863
5864 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
5865
5866         * environment.c: Fix return value check on uname so we can get the 
5867         executing version on Solaris operating systems.
5868
5869 2007-03-28  Jb Evain  <jbevain@gmail.com>
5870
5871         * class.c (mono_type_get_name_recurse): Complete the
5872         fix for the creation of assembly qualified names for
5873         pointer types. Fixes #81208.
5874
5875 2007-03-27  Dick Porter  <dick@ximian.com>
5876
5877         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
5878         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
5879         changed.
5880
5881         * threads.c
5882         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
5883         the value of ReleaseMutex().
5884
5885 2007-03-27  Dick Porter  <dick@ximian.com>
5886
5887         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
5888         in little-endian order, not network endian, so must be converted
5889         to host endian here.  Fixes bug 80593.
5890
5891 2007-03-22  Jb Evain  <jbevain@gmail.com>
5892
5893         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
5894         qualified names for pointer types. Fixes #81208.
5895
5896 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
5897
5898         * marshal.c: Add support for PreserveSigAttribute. 
5899         
5900         Code is contributed under MIT/X11 license.
5901
5902 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
5903
5904         * process.c: Fix endianness issues. Fixes #81126.
5905
5906         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
5907         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
5908
5909         * image.c (mono_image_lookup_resource): Make this work on big-endian
5910         machines.Change API contract so the caller needs to free the return value.
5911         
5912         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
5913         API change.
5914         
5915 2007-03-14  Martin Baulig  <martin@ximian.com>
5916
5917         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
5918         mono_type_get_desc() as well.
5919
5920 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
5921
5922         * icall.c:  Fix environ access in VS.  
5923         
5924 2007-03-13  Alp Toker  <alp@atoker.com>
5925
5926         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
5927         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
5928         #63841.
5929
5930 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
5933         circular references among dynamic methods. Fixes #81091.
5934
5935         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
5936
5937 2007-03-09  Martin Baulig  <martin@ximian.com>
5938
5939         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
5940
5941 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
5942
5943         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
5944         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
5945         
5946         Code is contributed under MIT/X11 license.
5947         
5948 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
5949
5950         * loader.c: Reapply patch for bug #79424.
5951
5952 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * metadata.c (mono_type_to_unmanaged): Only convert object to
5955         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
5956
5957 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
5958
5959         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
5960         (and incorrectly set) is_reference field from MonoGenericInst.
5961
5962 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
5965         a little earlier.
5966
5967         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
5968
5969         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
5970
5971 2007-03-05  Miguel de Icaza  <miguel@novell.com>
5972
5973         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
5974         FileOptions.1 value to mean "temporary", map that to
5975         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
5976
5977         Fixes 80688
5978
5979 2007-03-03  Marek Habersack  <mhabersack@novell.com>
5980
5981         * appdomain.c: implement MS .Net style shadow copying. Copies of
5982         the assemblies are made in a subdirectory of the dynamic base
5983         directory, the assembly names are preserved.
5984         Copy .mdb and .config files along with the assemblies being shadowed.
5985
5986 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
5987
5988         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
5989         (emit_marshal_handleref): Ditto.
5990
5991         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
5992         on Visual C++. Fixes #80671.
5993
5994 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
5995
5996         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
5997         for clone operations.
5998
5999 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
6000
6001         * marshal.c: Fix warnings.
6002
6003 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
6004
6005         * loader.c: allow case-insensitive matching of the dll name
6006         in dllmap handling when prefixed with "i:".
6007
6008 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
6009
6010         * threads.c: Fix #ifdef for dummy_apc function for VS.
6011
6012 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
6013
6014         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
6015
6016 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
6017         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
6018         giving precedence to the methods with a fully qualified name
6019         (InterfaceName.MethodName) when building the interface sections
6020         of the vtable.
6021
6022 2007-02-16  Dick Porter  <dick@ximian.com>
6023
6024         * threadpool.c (append_job): Fix fast-path array handling, so it's
6025         less likely the array will grow exponentially when the load is
6026         heavy.
6027
6028 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6029
6030         * metadata-internals.h, loader.c: fix dllmap lookup order
6031         for non-function maps, too, and prepare for fallback code.
6032
6033 2007-02-12  Robert Jordan  <robertj@gmx.net>
6034
6035         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
6036         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
6037         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
6038         GlobalFree. Fixes a part of bug #77075.
6039
6040 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
6041
6042         * loader.c: implemented typedef parent in field memberref.
6043
6044 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
6045
6046         * marshal.c: Fix warnings and remember to call Release on
6047         IUnknown of RCW.
6048         
6049         Code is contributed under MIT/X11 license.
6050
6051 2007-02-10  Miguel de Icaza  <miguel@novell.com>
6052
6053         * class-internals.h: Add MonoHandleRef definition, and
6054         handleref_class to mono_defaults. 
6055
6056         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
6057         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
6058
6059         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
6060         (do nothing on this stage)
6061         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
6062         (emit_marshal_handleref): New method, used for argument handling
6063         of HandleRefs. 
6064
6065 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
6066
6067         * class.c (mono_class_setup_parent): Lazily init com types.
6068         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
6069         init com types.
6070         * object.c (mono_remote_class_vtable): Lazily init com types.
6071         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
6072         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
6073         * domain-internals.h: Expose mono_init_com_types.
6074         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
6075         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
6076         Add support for COM Callable Wrapper marshalling.
6077         * marshal.h: Add icall definitions.
6078         * gc.c: Handle freeing of CCWs in finalizer code.
6079         
6080         Code is contributed under MIT/X11 license.
6081
6082 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
6083
6084         * reflection.c: changed all the signature encoding code to use
6085         a variable-sized buffer.
6086
6087 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6088
6089         * marshal.c: locking fixes: never take the loader lock
6090         or other runtime locks when holding the marshal lock
6091         (fixes bug#80664).
6092
6093 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
6094
6095         * marshal.c: make the delegate function pointer mapping
6096         work for the moving GC.
6097
6098 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
6099
6100         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
6101         for bug #80618.
6102
6103 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6104
6105         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
6106         gmodule.
6107
6108 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
6109
6110         * threadpool.c: made the code moving-GC safe.
6111
6112 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6113
6114         * assembly.c, boehm-gc.c, class-internals.h, class.c,
6115         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
6116         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
6117         warning cleanup.
6118         * reflection.c: warning cleanup, some threading and moving GC fixes.
6119
6120 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
6121
6122         * class.c, loader.c: create the needed Set/Get/Address array methods
6123         as well as the .ctors in mono_class_init (), fixes bug #80567.
6124
6125 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
6128         we doesn't decrease its alignment. Should fix the sparc build.
6129
6130 2007-01-24  Dick Porter  <dick@ximian.com>
6131
6132         * socket-io.c
6133         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
6134         Create the returned object if we need to ignore an unsupported
6135         socket option.  Fixes a segfault reported by Atsushi.
6136
6137 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6138
6139         * class.c, object.c: restrict GC-tracked fields to
6140         UIntPtr fields used inside corlib, so we provide better
6141         type info to the GC and also allow broken packing as in
6142         bug #80580.
6143
6144 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
6145
6146         * sgen-gc.c: removed duplicated function.
6147
6148 2007-01-19  Miguel de Icaza  <miguel@novell.com>
6149
6150         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
6151         value that means that the value is not supported, but that we
6152         should not return a failure, but instead report this as a
6153         successful operation.
6154
6155 2007-01-19  Raja R Harinath  <rharinath@novell.com>
6156
6157         Fix tests/bug79956.2.il
6158         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
6159         (mono_generic_class_get_class): If the generic definition in an
6160         enum, copy over other fields related to it.
6161
6162 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
6163
6164         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
6165         genericinst enums (bug #79215).
6166
6167 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
6168         * class.c: Fix bug 80307.
6169
6170 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
6171
6172         * image.c: if the file table is not present, try to load
6173         all the modules, since we don't have info about them
6174         having or not metadata (bug #80517).
6175         * assembly.c: allow mono_assembly_load_references () to
6176         work for netmodules.
6177
6178 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6179
6180         * image.c, metadata-internals.h, object.c: execute module
6181         cctors when running on the 2 runtime if present (bug #80487).
6182
6183 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6184
6185         * icall.c: optimized InitializeArray() on bigendian.
6186
6187 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
6188
6189         * icall.c: fix for the broken ARM FPA double format.
6190
6191 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
6192
6193         * icall.c: handle endian issues for r4 and r8 types, too, in
6194         the InitializeArray() icall.
6195
6196 2007-01-15  Miguel de Icaza  <miguel@novell.com>
6197
6198         * loader.c (mono_loader_error_prepare_exception): Clear the error
6199         once we have extracted the information from it, do this before we
6200         call into the JIT's class loading mechanisms.
6201
6202         * object.c (mono_class_create_runtime_vtable): Do not clear the
6203         loader error before calling mono_class_get_exception_for_failure
6204         as the loader error is needed inside
6205         mono_class_get_exception_for_failure to throw the error (thinko).
6206
6207         Fixes #80521
6208         
6209 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
6210
6211         * reflection.c: align fields rva data so it's faster to load at
6212         runtime.
6213
6214 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6215
6216         Prepare to simplify GenericMethod handling.
6217         * class-internals.h (mono_method_get_context): New accessor function.
6218         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
6219         rather than directly accessing '->context' field.
6220
6221         * class-internals.h (_MonoGenericParam.method): Move ...
6222         (_MonoGenericContainer): ... here.  Add into union with klass field.
6223         * class.c, icall.c, loader.c, metadata.c, reflection.c:
6224         Update to changes.
6225
6226 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
6227
6228         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
6229         the wrapper type enum and reduce relocations.
6230
6231 2007-01-12  Raja R Harinath  <rharinath@novell.com>
6232
6233         * reflection.c (inflate_mono_method): Reuse method instantiation
6234         from the generic method, if available.
6235
6236 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6237
6238         * marshal.c (emit_marshal_variant): Fix conv_arg
6239         type in last commit, based on whether parameter is byref.
6240         
6241 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6242
6243         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
6244         marshalling.
6245         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
6246         MONO_TYPE_OBJECT back for VARIANT support.
6247
6248 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
6249
6250         * marshal.c, marshal.h, icall-def.h: Implement 
6251         Marshal.ReAllocCoTaskMem.
6252
6253 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
6254
6255         * marshal.c: memory retention fixes: use the proper
6256         image cache for runtime_invoke method lookups.
6257
6258 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
6259
6260         * mempool.c: added code to help debug mempool allocations.
6261
6262 2007-01-11  Dick Porter  <dick@ximian.com>
6263
6264         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
6265         support (experimenting with faking it with IP_MTU_DISCOVER for
6266         systems that don't have IP_DONTFRAGMENT.)
6267         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
6268         icall.
6269
6270         * icall-def.h: new System.Net.Sockets.Disconnect icall.
6271
6272         * socket-io.h: Add new fields to MonoSocketAsyncResult
6273         corresponding to the new ones in Socket.cs.
6274
6275 2007-01-11  Raja R Harinath  <rharinath@novell.com>
6276
6277         Fix IronPython regression mentioned in #80249
6278         * metadata.c (do_mono_metadata_parse_generic_class): Clear
6279         'cached_context' field, since it may have been initialized as a
6280         side-effect of metadata parsing.
6281
6282         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
6283         (_MonoGenericClass.cached_class): Move here and rename from lone
6284         remaining field of ...
6285         (_MonoInflatedGenericClass): ... this.  Remove.
6286         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
6287         to changes.
6288
6289         Fix mcs/tests/test-128.cs regression.
6290         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
6291         2007-01-10 change below.
6292         [MONO_TYPE_OBJECT]: Recurse into array case.
6293
6294 2007-01-11  Raja R Harinath  <harinath@gmail.com>
6295
6296         * class-internals.h (mono_get_inflated_generic_class): Remove.
6297         * class.c (mono_get_inflated_generic_class): Remove.
6298         (mono_generic_class_get_class): Rename from
6299         mono_class_create_generic.
6300         (mono_class_from_mono_type) [GENERICINST]: Use it.
6301         * reflection.c, metadata.c: Update to changes.  Use
6302         'mono_class_from_mono_type'.
6303
6304 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
6305
6306         * reflection.c: use passed type when encoding an array element
6307         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
6308
6309 2007-01-09  Robert Jordan  <robertj@gmx.net>
6310
6311         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
6312         result arguments (someDelegate.EndInvoke (unrelatedAres)).
6313         Fixes bug #80392.
6314
6315 2007-01-09  Raja R Harinath  <rharinath@novell.com>
6316
6317         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
6318
6319         * object.c (set_value): Avoid aliasing between type->data.klass
6320         and type->data.generic_class.
6321
6322         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
6323
6324 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6325
6326         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
6327         between type->data.klass and type->data.generic_class.
6328
6329 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
6330
6331         * marshal.c: In MS.NET, StringBuilder objects are not copied by
6332         value in out parameters.
6333
6334 2007-01-08  Raja R Harinath  <rharinath@novell.com>
6335
6336         Simplify invariant for MonoGenericClass::klass field.
6337         * class.c (mono_class_create_generic): Verify 'klass' is null.
6338         * metadata.c (do_mono_metadata_parse_generic_class): Don't
6339         initialize 'klass' field.
6340
6341 2007-01-05  Raja R Harinath  <rharinath@novell.com>
6342
6343         Ongoing work to avoid redundant data and simplify invariants.
6344         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
6345         'generic_class', and change type to a GenericInst.
6346         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
6347         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
6348
6349 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
6350
6351         * class.c : skip io-layer under PLATFORM_WIN32.
6352
6353 2007-01-03  Tor Lillqvist  <tml@novell.com>
6354
6355         Fix #80305: In a bundled executable, look in the bundled exe
6356         assembly to determine the runtime version. Add the possibility to
6357         bundle also the machine.config file.
6358         
6359         * assembly.c (mono_assembly_open_from_bundle): Make
6360         non-static. Allow being called even if we have no bundled
6361         assemblies, and return NULL right away in that case.
6362
6363         * domain-internals.h: Declare mono_assembly_open_from_bundle()
6364         here.
6365
6366         * domain.c (app_config_parse): Take an assembly exe file name as
6367         parameter instead of a config file name. Check for a bundled
6368         config file for that assembly by calling
6369         mono_config_string_for_assembly_file() (see below) before looking
6370         for one in the file system.
6371         (get_runtimes_from_exe): Corrsponding change to call of
6372         app_config_parse().
6373         (get_runtimes_from_exe): Check for bundled assembly exe file first
6374         by calling mono_assembly_open_from_bundle(). If no bundled
6375         assembly exe file is found, call mono_image_open() as before to
6376         look it up in the file system.
6377
6378         * mono-config.c: Add variable bundled_machinec_onfig.
6379         (mono_config_string_for_assembly_file): New function.
6380         (mono_config_for_assembly): Move code snippet that looks for a
6381         bundled assembly .config file into the above new function. Call
6382         it.
6383         (mono_register_machine_config, mono_get_machine_config): New
6384         functions to set and retrieve
6385
6386         * assembly.h: Declare mono_register_machine_config().
6387
6388         * mono-config.h: Declare mono_get_machine_config() and
6389         mono_config_string_for_assembly_file().
6390
6391         * icall.c: No declaration of environ necessary on Win32. It is
6392         declared (as a macro expanding to a function call) in stdlib.h.
6393         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
6394         New internal mono function. Returns the value of
6395         mono_get_machine_config() as a Mono string.
6396
6397         * icall-def.h: Add get_bundled_machine_config().
6398
6399 2007-01-04  Raja R Harinath  <rharinath@novell.com>
6400
6401         Remove redundant field
6402         * class-internals.h (_MonoGenericContext.container): Remove field.
6403         * loader.c (mono_method_get_signature_full): Don't parse a
6404         "container" for a signature parse when the signature is inflated
6405         immediately.
6406         (method_from_methodspec): Likewise, for a generic_inst.
6407         * class.c, metadata.c, reflection.c: Update to changes.
6408
6409 2006-01-04  Raja R Harinath  <rharinath@novell.com>
6410
6411         * class-internals.h (_MonoGenericClass): Rename 'context' field to
6412         'cached_context', and change semantics -- it starts off NULL, and
6413         is initialized on demand.
6414         * class.c (mono_generic_class_get_context): New accessor to
6415         replace 'context' field accesses.
6416         (mono_class_get_context): New helper.
6417         (*): Update to changes.
6418         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
6419
6420 2007-01-03  Miguel de Icaza  <miguel@novell.com>
6421
6422         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
6423         before the memcpy.   Fixes Marshal2 regression.
6424
6425 2007-01-02  Jb Evain  <jbevain@gmail.com>
6426
6427         * blob.h: add a MONO_TYPE_ENUM definition
6428         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
6429         fix the encoding of arrays of enums in custom attributes.
6430
6431         Fixes #79666.
6432
6433 2007-01-01  Miguel de Icaza  <miguel@novell.com>
6434
6435         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
6436         string is null terminated, but only cut the string short if it
6437         overflows the buffer.   
6438         
6439         (mono_string_to_byvalstr): Also fix this routine.   The code here
6440         was not properly terminating a string (it was only terminated
6441         because of the previous catch-all memset). 
6442
6443         I left the memset, because I do not know if applications expect
6444         the runtime to clear this region. 
6445
6446         Fixes #79944.
6447
6448         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
6449         Clear the error before returning to unmanaged code to prevent the
6450         runtime from being confused later on (fixes  80420).
6451         (ves_icall_type_from_name): Always call mono_loader_clear_error
6452         after parsing a type that could have failed.
6453         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
6454
6455         * loader.c (mono_loader_clear_error): Fix indentation.
6456
6457 2006-12-28  Martin Baulig  <martin@ximian.com>
6458
6459         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
6460
6461 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
6462
6463         * reflection.c: patch from Rolf Bjarne Kvinge to fix
6464         getting a token for an EnumBuilder.
6465
6466 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
6467
6468         * reflection.c: be more careful in case resource generation
6469         fails to create the data array.
6470
6471 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
6472
6473         * sgen-gc.c: write barrier for clone and fix unregister handles.
6474
6475 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
6476
6477         * reflection.c: some fixes needed in the generics code for the moving GC.
6478
6479 2006-12-22  Robert Jordan  <robertj@gmx.net>
6480
6481         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
6482         account. Fixes bug #80299.
6483
6484 2006-12-21  Raja R Harinath  <rharinath@novell.com>
6485
6486         Fix WaitHandle usage in delegates.
6487         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
6488         * object.c (mono_wait_handle_new): Use the property set method to
6489         initialize the handle.
6490         (mono_wait_handle_get_handle): New.
6491         * threadpool.c (mono_async_invoke): Use it.
6492         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
6493         Likewise.
6494         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
6495
6496 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
6497
6498         * marshal.c (emit_marshal): Call emit_marshal_variant and
6499         emit_marshal_com_interface when applicable.
6500         (emit_marshal_variant, emit_marshal_com_interface): Add
6501         methods for this case and remove if's from emit_marshal_object.
6502         
6503 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
6504
6505         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
6506
6507 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
6508
6509         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
6510         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
6511         and GlobalFree on Windows. Remove FIXME.
6512
6513 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
6514
6515         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
6516         implementation for managed objects.
6517
6518 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
6519
6520         * object.c: implemented code to be used for checking
6521         that no reference field overlaps with non-references.
6522
6523 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6524
6525         * threadpool.c: fix queue code to be compatible with the
6526         moving GC.
6527
6528 2006-12-18  Miguel de Icaza  <miguel@novell.com>
6529
6530         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
6531         in structures by throwing ArgumentNullException.
6532
6533         (emit_marshal_safehandle): Also when they are null parameters.
6534
6535         (emit_marshal_safehandle): Add support for ref
6536         SafeHandles parameters
6537
6538 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
6539
6540         * profiler.c: updated to use the mono-dl API instead of
6541         gmodule.
6542
6543 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6544
6545         * profiler.c: updated to use the mono-dl dynamic loading
6546         API instead of gmodule.
6547
6548 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
6549
6550         * profiler.c: use readlink, older versions of glib don't have
6551         g_file_read_link ().
6552
6553 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6554
6555         * profiler.c: try to detect the path to mono if libc fails to provide
6556         a useful name (bug #80286).
6557
6558 2006-12-16  Raja R Harinath  <rharinath@novell.com>
6559
6560         Fix #80242
6561         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
6562         instance, use the generic type definition instead.
6563         (ves_icall_Type_GetNestedTypes): Likewise.
6564         * class.c (mono_class_create_generic): Always set the
6565         nested_classes of a generic instance to NULL, even if the generic
6566         type definition has nested types.
6567
6568 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
6569
6570         * marshal.c (mono_string_from_bstr): Revert previous Windows change
6571         and fix on Linux.
6572         
6573 2006-12-15  Miguel de Icaza  <miguel@novell.com>
6574
6575         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
6576         my arguments were in the wrong order.   I also fixed the Windows
6577         version which seems to have had the same issue.
6578
6579         (mono_free_bstr): On Unix, this is g_free.
6580         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
6581         conversions (for the tests in corlib to pass).
6582
6583 2006-12-14  Miguel de Icaza  <miguel@novell.com>
6584
6585         * marshal.c (emit_ptr_to_object_conv): For now, ignore
6586         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
6587         exception if a ref SafeHandle in a struct has changed).
6588         
6589         (emit_struct_conv): Do not perform layout checks for classes
6590         derived from SafeHandle, as those are specially handled. 
6591
6592         (emit_object_to_ptr_conv): Add support for
6593         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
6594
6595         (emit_marshal_safehandle): Implement conversion of return values
6596         of safehandles (MARSHAL_ACTION_CONV_RESULT).
6597         
6598         * threads.c: WaitHandle now is compiled with two different handles
6599         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
6600         for 2.0.
6601         
6602         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
6603         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
6604         these routines to cope with both kinds of fields.
6605
6606 2006-12-12  Miguel de Icaza  <miguel@novell.com>
6607
6608         * metadata.c (mono_type_to_unmanaged): Handle the case where
6609         type->data.klass is a SafeHandle, and in that case, return the
6610         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
6611         MONO_MARSHAL_CONV_SAFEHANDLE. 
6612
6613 2006-12-11  Miguel de Icaza  <miguel@novell.com>
6614
6615         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
6616         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
6617         calling emit_marshal_object.
6618
6619         (emit_marshal_safehandle): Implement marshalling of
6620         SafeHandle parameters (no ref support yet).
6621
6622         (MarshalAction): Document the defines as I implement
6623         them for SafeHandle.
6624
6625         (emit_marshal_object): indentation police.
6626
6627         * class-internals.h: Define MonoSafeHandle.
6628         Add safehandle_class to MonoDefaults type.
6629
6630         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
6631         list of classes to check for fields. 
6632
6633         * domain.c (mono_init_internal): Add SafeHandle to the list of
6634         mono_defaults loaded.
6635
6636 2006-12-15  Raja R Harinath  <rharinath@novell.com>
6637
6638         Fix #80253
6639         * reflection.c (mono_reflection_bind_generic_parameters): If the
6640         generic type definition is a type builder, ensure that it is fully
6641         initialized before instantiating it.  Kill some dead code.
6642
6643 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
6644
6645         * object.c: clear the loader_error () before loading
6646         more metadata stuff (bug #80258).
6647
6648 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
6649
6650         * icall.c, icall-defs.h: type modifiers icalls for
6651         parameters and properties.
6652
6653 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
6654
6655         * object.c, icall.c: fixed warnings.
6656
6657 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6658
6659         * marshal.c: fixed a couple of leaks and coding style in a few places.
6660
6661 2006-12-08  Dick Porter  <dick@ximian.com>
6662
6663         * process.c: Cope with NULL ProcessStartInfo arguments on windows
6664         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
6665         80173.
6666
6667 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
6668
6669         * process.c: ProcessStartInfo may have only filename set and
6670         arguments can be NULL.
6671
6672 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
6673
6674         * icall.c: fix leak found by Robert Jordan.
6675
6676 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
6677
6678         * marshal.c, marshal.h: generate managed method to access an element
6679         of a multi-dimensional array.
6680
6681 2006-11-30  Paolo Molaro (lupus@ximian.com)
6682
6683         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
6684
6685 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
6686
6687         * icall.c: back out GetFields () fix until the serialization code is
6688         fixed to not depend on the incorrect behaviour.
6689
6690 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
6691
6692         * profiler.c: provide defaults if none are set.
6693
6694 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
6695
6696         * Makefile.am, attrdefs.h: new public header file with
6697         constants for attributes for use by embedders.
6698
6699 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
6700
6701         * icall.c: GetFields () fix for bug #80064.
6702
6703 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
6704
6705         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
6706         removed long unused icalls.
6707
6708 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
6709   
6710         * marshal.c: 
6711                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
6712                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
6713                 can be generated without a delegate class.
6714                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
6715         
6716         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
6717
6718 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6719
6720         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
6721         #80069.
6722
6723 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
6724
6725         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
6726         icall-def.h: added icalls needed by System.GC.
6727
6728 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
6729
6730         * loader.c: ensure the class in catch clauses is handled
6731         correctly for generics methods (fixes bug#79980).
6732
6733 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
6734
6735         * monitor.h, monitor.c: added mono_locks_dump () function
6736         to help debug deadlocks involving managed locks.
6737
6738 2006-11-13  Dick Porter  <dick@ximian.com>
6739
6740         * file-io.c (get_file_attributes): If the file is a symlink try
6741         and get the stat data for the target, but also add the
6742         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
6743         the specs for the windows symlink support, but will probably have
6744         to be reworked when I have test data from a vista machine.  Fixes
6745         bug 79887.
6746
6747 2006-11-13  Dick Porter  <dick@ximian.com>
6748
6749         * gc.c (mono_domain_finalize): 
6750         * marshal.c (mono_delegate_begin_invoke): 
6751         * threadpool.c (socket_io_init, mono_thread_pool_init)
6752         (mono_thread_pool_finish): 
6753         * monitor.c (mono_monitor_try_enter_internal): 
6754         * threads.c (mono_thread_resume, mono_thread_init)
6755         (mono_thread_suspend_all_other_threads)
6756         (mono_thread_execute_interruption): 
6757         * appdomain.c (mono_domain_unload): Check for NULL error returns
6758         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
6759         75733.
6760
6761 2006-11-11  Miguel de Icaza  <miguel@novell.com>
6762
6763         * process.c
6764         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
6765         Only close the handle if the value of the handle is not
6766         INVALID_HANDLE_VALUE.  This just makes the process a bit more
6767         robust.
6768
6769         Improvement for #75733, so that we do not run into this problem. 
6770
6771         
6772         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
6773         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
6774         internal variables.  Fixes #79462 
6775         
6776
6777 2006-11-09  Dick Porter  <dick@ximian.com>
6778
6779         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
6780         Use poll() not select().  Fixes bug 79397.
6781
6782 2006-11-09  Raja R Harinath  <rharinath@novell.com>
6783
6784         Fix #79872
6785         * assembly.c (mono_assembly_load_from_full): Check that the given
6786         image has an assembly manifest.
6787
6788 2006-11-09  Ankit Jain  <jankit@novell.com>
6789
6790         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
6791         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
6792         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
6793
6794 2006-11-07  Dick Porter  <dick@ximian.com>
6795
6796         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6797         Put the old resolver behaviour back for pre-2.0 profiles.
6798
6799 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
6800
6801         * threadpool.c: precise GC and locking fixes.
6802
6803 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
6804
6805         * class.c: don't load types that have an explicit unaligned
6806         managed reference. Provide better info in the TypeLoad exception.
6807         Part of the fix for bug #79744.
6808         * object.c: use the correct check for class type load issues.
6809
6810 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
6811
6812         * class.c: enforce alignment of fields with managed references
6813         even when Pack=1 is forced by the user (bug #77788).
6814
6815 2006-11-03  Dick Porter  <dick@ximian.com>
6816
6817         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
6818         If the address reverse lookup fails, return it as the hostname
6819         anyway.  Fixes bug 79721.
6820
6821 2006-11-03  Dick Porter  <dick@ximian.com>
6822
6823         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
6824         Fix build on Windows.
6825
6826 2006-11-02  Dick Porter  <dick@ximian.com>
6827
6828         * icall-def.h: 
6829         * object-internals.h: 
6830         * exception.c (mono_get_exception_thread_interrupted): 
6831         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
6832         Fixes bug 74525.
6833
6834         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
6835         Check for pending Thread.Interrupt.
6836
6837 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
6838         * loader.c: Fixed bug 79684.
6839
6840 2006-10-27  Dick Porter  <dick@ximian.com>
6841
6842         * file-io.c (get_file_attributes): Force symlinks to directories
6843         to be returned as a regular file.  Fixes bug 79733.
6844 2006-10-26  Dick Porter  <dick@ximian.com>
6845
6846         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
6847         CreateFile to open a directory then we need to set the
6848         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
6849
6850 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
6851
6852         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
6853         friends.
6854
6855 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6856
6857         * sgengc.c: small cleanup of timer code.
6858
6859 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
6860
6861         * sgen-gc.c: fix some warnings and start adding support for
6862         complete object removal on domain unload.
6863
6864 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
6865
6866         * assembly.c: build_assembly_name should not consider a version
6867         number without build or revision number invalid. Fixes bug #79715.
6868
6869 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
6870
6871         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
6872         call kernel32 function OutputDebugString directly.
6873         
6874         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
6875         
6876 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
6877
6878         * reflection.c: small cleanup, using a function to insert a MonoString
6879         in the string heap.
6880
6881 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
6882
6883         * reflection.c: moving GC fixes.
6884
6885 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
6886
6887         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
6888         all the objects with finalizers belonging to an unloading appdomain.
6889
6890 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
6891
6892         * sgen-gc.c: added ability to allocate even when the nursery is fully
6893         pinned and fixed a couple of bugs.
6894
6895 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
6896
6897         * threads.h: Revert the last change for now.
6898
6899         * threads.h (mono_thread_get_pending_exception): Rename this to
6900         mono_thread_get_undeniable_exception ().
6901
6902 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
6903
6904         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
6905         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
6906         when fname does not refer to valid assembly. This result in a more
6907         meaningful error message.
6908         * exception.c: added mono_get_exception_bad_image_format2 which 
6909         constructs a BadImageFormatException using the ctor taking a custom
6910         message and the file name. Passing in a NULL msg results in a default
6911         message.
6912         * exception.h: define mono_get_exception_bad_image_format2 function.
6913         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
6914         when file name pointed to an invalid IL image. Use 
6915         mono_get_exception_file_not_found2 to construct FileNotFoundException,
6916         as this results in a more meaningful error message.
6917
6918 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
6921         #79465.
6922
6923 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
6924
6925         * metadata.c (mono_type_size): Change the align parameter to guint32 for
6926         consistency with the other _size functions.
6927         (mono_type_stack_size): Ditto.
6928
6929         * class.c object.c icall.c: Fix warnings caused by the above change.
6930
6931         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
6932
6933         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
6934
6935         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
6936
6937 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
6938
6939         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
6940         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
6941         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
6942         threadpool.h, threads-types.h: mark more internal functions.
6943
6944 2006-10-11  Dick Porter  <dick@ximian.com>
6945
6946         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
6947         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
6948         reproduce the bug even before applying the fix.)
6949
6950 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
6951
6952         * reflection.c: allow retrieving attributes for arguments in generic
6953         methods (bug #79241).
6954
6955 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
6956
6957         * debug-mono-symfile.c: properly check fopen () result (found by
6958         coverity).
6959
6960 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
6961
6962         * reflection.c: make error message clearer and fixed two
6963         issuelets found by Coverity.
6964
6965 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
6968
6969 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
6970
6971         * object-internals.h, gc-internal.h, profiler-private.h:
6972         mark internal functions.
6973
6974 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
6975
6976         * reflection.c: put data in the text section.
6977         * icall.c: recognize more types in type_from_typename ().
6978         * process.c, marshal.c: added some GC FIXMEs.
6979
6980 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
6981
6982         * loader.c: check for NULL before initializing.
6983
6984 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
6985
6986         * gc.c (finalizer_thread): Use a non-alertable wait here.
6987
6988         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
6989         until the correct solution is found.
6990
6991 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * reflection.c (mono_module_get_object): Avoid an assert when operating on
6994         modules with no metadata. Fixes #79596.
6995
6996         * image.c (load_metadata_ptrs): Put back the error message when
6997         the #- heap is encountered since the support is not complete yet.
6998
6999 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
7000
7001         * gc.c: do not allow the user to SuppressFinalize () a
7002         delegate because it would leak the trampoline if present.
7003
7004 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
7005
7006         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
7007         PropertyPtr table.
7008
7009 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
7010
7011         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
7012
7013         * metadata.c (mono_metadata_get_param_attrs): Ditto.
7014
7015         * row-indexes.h: Add definitions for *Ptr tables.
7016
7017         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
7018
7019         * metadata.c (mono_metadata_translate_token_index): New helper function to
7020         translate table indexes used in uncompressed metadata.
7021         (mono_metadata_decode_table_row): Ditto.
7022         (mono_metadata_decode_table_row_col): Ditto.
7023
7024         * metadata.c: Add table schema for *Ptr tables.
7025
7026         * class.c loader.c: Use the new helper function to access the affected metadata
7027         tables.
7028         
7029         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
7030         #38532.
7031         
7032 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
7035         sequences which can be unbounded in size. Fixes #79583.
7036
7037 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
7040         static initialization.
7041
7042         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
7043
7044         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
7045
7046         * domain.c (mono_domain_free): Free up type_init_exception_hash.
7047
7048         * object.c (mono_runtime_class_init): Implement correct semantics when a static
7049         ctor fails, i.e. throw the same exception on subsequent accesses.
7050         
7051 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
7052
7053         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
7054         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
7055         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
7056         Handle marshalling of interfaces and VARIANTs contained in structs.
7057         
7058         Code is contributed under MIT/X11 license.
7059         
7060 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
7063         
7064         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
7065         mempool.
7066
7067 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7068
7069         * console-io.c: ignore previous SIGINT handler.
7070
7071 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
7074         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
7075         #79460, #79461, #79485.
7076
7077         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
7078
7079         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
7080         #79217.
7081
7082 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
7083
7084         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
7085         could be generated from it.
7086
7087 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
7088
7089         * rand.c: fix read loop to correctly handle EINTR.
7090
7091 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7092
7093         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
7094         internal calls are defined to keep methods closer to the declaring
7095         type and allow a significant reduction in runtime relocations and
7096         memory usage.
7097
7098 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
7099
7100         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
7101         exception message to have FileNotFoundException use the default
7102         assembly load error message. Fixes bug #79426.
7103         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
7104
7105 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7106
7107         * threadpool.c: (start_thread_or_queue) use the root domain when
7108         creating the thread instead of the async object one.
7109
7110 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
7111
7112         * class.c, object.c, class-internals.h, reflection.c:
7113         for arrays, store element_size inside MonoClass (speedup
7114         for array object creation).
7115
7116 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
7117
7118         * icall.c: fixed CodeBase to use the file name and not the module
7119         name (bug #79365).
7120
7121 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7122
7123         * mono-debug.c, mono-debug.h: export find_method as
7124         mono_debug_find_method ().
7125
7126 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7127
7128         * debug-helpers.c, class-internals.h: added a few functions useful
7129         when debugging under gdb.
7130
7131 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7132
7133         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
7134         characters that need special handling.
7135
7136 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
7137
7138         * mono-config.c: make the os/cpu specification more flexible,
7139         allowing lists and negation.
7140
7141 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
7142
7143         * marshal.c: COM Interop fixes. Handle case where method->klass.
7144         is interface. Handle BSTR/MonoString when null. Use CDECL as 
7145         calling convention on non-windows platforms. This is for
7146         compatibility with XPCOM and MainWin COM.
7147         
7148         Code is contributed under MIT/X11 license.
7149         
7150
7151 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
7152
7153         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
7154         correctly. Fixes #79217.
7155
7156         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
7157
7158 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
7159
7160         * mono-config.c: allow both an os and cpu attribute for dllmap
7161         and dllentry elemnets to enable a single config file to be used
7162         for multiple architectures.
7163
7164 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
7165
7166         * loader.c: MonoLoaderError was cleared too soon on load failure.
7167         Fixes bug #79424.
7168
7169 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
7170
7171         * icall.c: use the defining class vtable when accessing a
7172         static field, not a pobblibly derived class.
7173
7174 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
7175
7176         * icall.c string-icalls.c: Remove references to unicode.h.
7177
7178         * unicode.h unicode.c Makefile.am: Remove these unused source files.
7179
7180         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
7181
7182         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
7183         indicating the image where custom marshaller types should be looked up.
7184         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
7185         custom marshallers, instead of corlib. Fixes #79425.
7186
7187 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
7188
7189         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
7190
7191 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
7192
7193         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
7194         Implement Environment.ProcessorCount.
7195         
7196         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
7197         Implement Environment.ProcessorCount.
7198         
7199         * icall.c: 
7200         Add Environment.ProcessorCount icall.
7201         
7202         Patch by Jason McFall.
7203
7204 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7205
7206         * assembly.c: don't append .exe/.dll when the filename already contains
7207         one of those extensions.
7208
7209 2006-09-12  Martin Baulig  <martin@ximian.com>
7210
7211         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
7212         to array interfaces.
7213
7214 2006-09-11  Martin Baulig  <martin@ximian.com>
7215
7216         * reflection.c (mono_image_build_metadata): Create the
7217         MethodImpl's after emitting all types and methods, so we don't
7218         need another fixup pass for them.
7219
7220 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
7221
7222         * class.c (mono_class_from_name_case): Fix regression introduced by the last
7223         change.
7224
7225 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
7226
7227         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
7228         unload.
7229
7230 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
7231
7232         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
7233         args is not set. Fixes #78926.
7234
7235 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
7236
7237         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
7238
7239         * image.c (load_class_names): Move this to class.c, and rename it to 
7240         'mono_image_init_name_cache'.
7241         (load_modules): Fix a warning.
7242
7243         * class.c icall.c image.c: Initialize image->name_cache lazily.
7244
7245         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
7246         on its name using information in the AOT file.
7247
7248         * class.c (mono_class_from_name): Use the new hook function.
7249
7250 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * reflection.c (mono_param_get_objects): Handle enum default parameter values
7253         correctly.
7254
7255         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
7256         Fixes #79289.
7257         
7258 2006-09-06  Martin Baulig  <martin@ximian.com>
7259
7260         * icall.c (mono_lookup_internal_call): Small fix.
7261
7262 2006-09-05  Raja R Harinath  <rharinath@novell.com>
7263
7264         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
7265         double g_free.
7266
7267 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
7268
7269         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
7270         when --debug is specified.
7271
7272 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
7273
7274         * class.c (setup_generic_array_ifaces): Fix a warning.
7275
7276 2006-09-04  Miguel de Icaza  <miguel@novell.com>
7277
7278         * Temporarily remove the patch to assemly.c that checks the
7279         assembly versions as it breaks our gacutil.
7280
7281 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
7282
7283         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
7284
7285         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
7286         a net 1.0 runtime.
7287
7288         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
7289         created using the default ctor. Fixes #79152.
7290         (mono_string_builder_to_utf16): Ditto.
7291
7292 2006-09-01  Martin Baulig  <martin@ximian.com>
7293
7294         Fix handling of the generic array interfaces.
7295
7296         * class-internals.h
7297         (MonoDefaults): Removed `generic_array_class' and added
7298         `generic_ilist' class.
7299
7300         * class.c
7301         (mono_bounded_array_class_get): Add the new generic array interfaces.
7302         (setup_generic_array_ifaces): New static method; create vtable
7303         entries for each method in the generic array interfaces.
7304
7305         * metadata.c
7306         (select_container): Allow "parent-less" generic methods.
7307
7308         * marshal.c
7309         (mono_marshal_get_generic_array_helper): New public method.
7310
7311         * icall.c
7312         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
7313         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
7314         moved the interncall into System.Array.
7315
7316 2006-09-01  Raja R Harinath  <rharinath@novell.com>
7317
7318         A few more cases of avoiding work on types with ->byref set.
7319         Has the real fix for #79238
7320         * icall.c (is_generic_parameter): New helper.
7321         (ves_icall_Type_GetGenericParameterPosition): Use it.
7322         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
7323         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
7324         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7325         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
7326         reference types.
7327         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
7328         reference types.
7329         (ves_icall_Type_get_IsGenericInstance): Likewise.
7330         (ves_icall_Type_get_IsGenericType): Likewise.
7331
7332 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
7333
7334         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
7335         class if possible.
7336
7337         * mempool.h (mono_mempool_get_allocated): New helper function.
7338
7339         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
7340         change.
7341
7342         * mempool.c: Fix warnings and the calculation of stats.
7343
7344         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
7345
7346         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
7347
7348         * loader.c (mono_get_method_from_token): Update method_count stat.
7349
7350         * class-internals.h (MonoStats): Add some stats.
7351
7352 2006-08-31 Robert Jordan  <robertj@gmx.net>
7353
7354         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
7355         with managed variants.
7356         All code is contributed under the MIT/X11 license.
7357         
7358 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
7359
7360         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
7361         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
7362
7363         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
7364
7365         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
7366         with cycles in classes.
7367
7368         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
7369
7370         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
7371         missing a [MarshalAs] directive. Fixes #79203.
7372
7373         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
7374         klass->marshal_info. Fixes #79217.
7375
7376 2006-08-30  Martin Baulig  <martin@ximian.com>
7377
7378         Committing a patch from Joachim Ante <joe@otee.dk>:
7379         Add support for binary data symbol stores.
7380
7381         * debug-mono-symfile.c
7382         (mono_debug_open_mono_symbol_file): Renamed into
7383         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
7384         arguments.
7385
7386         * mono-debug.c
7387         (mono_debug_open_image): Added `raw_contents' and `size' args.
7388         (mono_debug_init_2_memory): New public function.
7389
7390 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
7391
7392         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
7393
7394 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7395
7396         * appdomain.c: implement support for ShadowCopyFiles.
7397
7398 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
7399
7400         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
7401         when value is NULL (and should remove CID #51).
7402
7403 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7404
7405         * image.c: moved 2 functions to ../utils.
7406
7407 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
7408
7409         * gc.c: cope with the target object of a GC handle being NULL
7410         (bug #78877).
7411
7412 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
7413
7414         * class.c: recursively check parent's explicit implementations
7415         of interface methods (fixes bug #79125).
7416
7417 2006-08-19  Miguel de Icaza  <miguel@novell.com>
7418
7419         * filewatcher.c: Avoid warnings when building, do not redefine
7420         constants that are defined.
7421
7422         Remove warnings.
7423
7424 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7425
7426         * image.c: don't fail when the link points to an absolute path.
7427
7428 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
7429
7430         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
7431         Fix CID #3.
7432
7433 2006-08-17  Miguel de Icaza  <miguel@novell.com>
7434
7435         * image.c (full_path): A new method used to obtain the actual path
7436         of an assembly even in the presence of symbolic links.  
7437
7438         This is necessary for the case where we are running a binary that
7439         has been GACed, but we are using the "published" path name
7440         ($prefix/mono/1.0/blah.exe) which happens to point to the real
7441         file in the GAC.
7442
7443         This was the source of the failure for the `xsp' command with the
7444         recent AppDomain changes, as far as the runtime was concerned,
7445         there were two different assemblies: $prefix/mono/1.0/blah.exe and
7446         $prefix/mono/gac/blah/version/blah.exe.
7447
7448         (do_mono_image_open): use full path
7449
7450 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
7453
7454 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
7455
7456         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
7457         domain_id is supplied. Fix CID #241 and corlib's unit tests.
7458
7459 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
7462         small structures. Fixes #78990.
7463
7464 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
7467
7468         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
7469
7470 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7471
7472         * appdomain.c:
7473         * marshal.c: don't load all the assemblies from a domain into newly
7474         created ones. The new domains might have different rules and load
7475         assemblies from different locations. Fixes bug #76757.
7476
7477         Patch by Lluis. Conflicts resolved by Brian Crowell.
7478
7479 2006-08-16  Alp Toker  <alp@atoker.com>
7480
7481         * socket-io.c: First half of the fix for #79084.
7482         Set sa_size to the length of the content, not that of the struct.
7483         Don't add NULL suffix to the content, this should be done in
7484         managed code if needed.
7485
7486 2006-08-14  Raja R Harinath  <rharinath@novell.com>
7487
7488         Fix part of #79012
7489         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
7490         mono_metadata_parse_type returns NULL.
7491
7492 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
7493
7494         * normalization-tables.h : new file for string normalization data.
7495         * locales.c, locales.h, icall.c :
7496           added load_normalization_resource() for string normalization,
7497           and icall as well.
7498         * Makefile.am : added normalization-tables.h to the sources.
7499
7500 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * marshal.c: Add more helper functions to reduce code duplication and use them
7503         everywhere.
7504
7505 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
7506
7507         * marshal.c: Fix non-x86 stdcall warnings.
7508         
7509         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
7510         them everywhere.
7511
7512 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
7513
7514         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
7515         type check on multi-dimensional arrays. Fixes #79000.
7516
7517 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
7518
7519         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
7520         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
7521         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
7522         * class-internals.h: add is_com_object to class structure.
7523         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
7524         null checks to COM object marshalling. Fix .ctor call on RCW.
7525         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
7526         
7527         All code is contributed under the MIT/X11 license.
7528
7529 2006-08-09  Dick Porter  <dick@ximian.com>
7530
7531         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
7532         racing mono_monitor_allocator_lock() somewhere, so don't delete
7533         the critical section for now.  Found by running and exiting
7534         monodevelop.
7535
7536 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
7537
7538         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
7539         (ves_icall_System_ComObject_FindInterface): Ditto.
7540         (ves_icall_System_ComObject_CacheInterface): Ditto.
7541
7542         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
7543         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
7544
7545 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7546
7547         * threadpool.c: treat pipes from process asynchronous reads as sockets
7548         when reading from them, so we get select/poll or epoll to wait for
7549         data.
7550
7551 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
7552
7553         * loader.c: Fix a typo (CID #233) in the null check.
7554
7555 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
7556
7557         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
7558         Hopefully fixes #78949.
7559         
7560         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
7561         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
7562         bytes. Fixes #78972.
7563
7564 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7565
7566         * filewatcher.c: we need to set errno here.
7567
7568 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7569
7570         * filewatcher.c: let Win32Exception get the error value.
7571
7572 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7573
7574         * filewatcher.c: translate errno into win32 errors for Win32Exception
7575         to know what happened.
7576
7577 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
7578
7579         * threadpool.c: Fix more warnings.
7580
7581         * assembly.c (search_loaded): Fix warnings.
7582
7583         * threadpool.c (mono_thread_pool_finish): Fix warnings.
7584         (mono_async_invoke): Ditto.
7585
7586 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
7587
7588         * object.c (mono_remote_class_vtable): Need to create proxy vtable
7589         entries for __ComObject type in addition to ComImport types.
7590         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
7591         about hash table.
7592         
7593         All code is contributed under the MIT/X11 license.
7594
7595 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
7596
7597         * image.c: avoid tentative loading of modulerefs that contain
7598         no metadata (P/Invoke library names).
7599
7600 2006-07-28  Dick Porter  <dick@ximian.com>
7601
7602         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
7603         mono_loader_lock() somewhere, so don't delete the critical section
7604         for now.  Found by running and exiting monodevelop.
7605
7606 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7607
7608         * filewatcher.c: define the inotify syscalls when we're building on
7609         linux and have sys/syscall.h. The build system might not have support
7610         for inotify but the target system might have it.
7611
7612 2006-07-26  Miguel de Icaza  <miguel@novell.com>
7613
7614         * domain.c: Documentation updates.
7615
7616         * loader.c (mono_free_method): Do not release the method
7617         information if we are being profiled, as profilers will use this
7618         information at shut down to present some data to the user.
7619
7620         This is needed so that the profiler does not crash, as the
7621         profiler tends to keep MonoMethods around, and they might become
7622         invalid if we free these.
7623
7624         (mono_get_method_constrained): Return the original CIL stream
7625         method as well, so verification can be performed against it.
7626
7627 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7628
7629         * filewatcher.[ch]: support for inotify file system watcher.
7630         * icall.c: add new internal calls for the inotify file system watcher.
7631
7632 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7633
7634         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
7635         #78888.
7636
7637 2006-07-20  Dick Porter  <dick@ximian.com>
7638
7639         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
7640         warning.
7641
7642 2006-07-20  Dick Porter  <dick@ximian.com>
7643
7644         * threads.c (start_wrapper): Do the thread cleanup while we still
7645         hold a reference to its object.  Fixes bug 78123.
7646
7647 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
7648
7649         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
7650         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
7651           "managed-to-managed".
7652         * icall.c: Redirect string constructors that take sbyte* to
7653           ves_icall_System_String_ctor_RedirectToCreateString.
7654         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
7655           to CreateString () methods with matching signature.
7656         * reflection.c: Use original security informations for
7657           MONO_WRAPPER_MANAGED_TO_MANAGED.
7658         * security-manager.c: Use original security informations for
7659           MONO_WRAPPER_MANAGED_TO_MANAGED.
7660         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
7661           that is a placeholder and only its address should be used.
7662         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
7663           that is a placeholder and only its address should be used.
7664
7665 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
7666
7667         Begin implementing COM Interop.
7668         * appdomain.c: Increment corlib version.
7669         * class.c: Set ComImport classes' parent to __ComObject.
7670         * loader.c: Mark cominterop methods as such.
7671         * domain.c: Add __ComObject class to MonoDefaults structure.
7672         * image.c: Add 2 hashtables to the image for COM Interop related methods
7673         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
7674         using the mempool allocator
7675         
7676         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
7677         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
7678         declaration for mono_metadata_type_dup_mp.
7679         
7680         * debug-helpers.c: Added strings for two additional wrapper types
7681         * object.c: Create proxy objects for ComImport classes
7682         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
7683         and added __ComObject class to MonoDefaults structure.
7684         
7685         * object-internals.h: Finish MonoRealProxy definition, and add definition of
7686         MonoComInteropProxy and MonoComObject.
7687         
7688         * marshal.c: Added support for COM Interop
7689         (signature_cominterop): Converts managed signature to corresponding
7690         unmanaged COM signature.
7691         (cominterop_get_function_pointer): gets unmanaged function pointer via
7692         COM object vtable
7693         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
7694         (cominterop_get_method_interface): returns interface type that method is defined on
7695         (mono_mb_emit_cominterop_call): emits native call to function pointer
7696         gotten from vtable
7697         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
7698         that matches signature of unmanaged function.
7699         (cominterop_get_native_wrapper): wrapper around adjusted method call.
7700         (cominterop_get_invoke): forwards call from proxy to __ComObject
7701         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
7702         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
7703         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
7704         
7705         * marshal.h: Added Marshal icall declarations.
7706         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
7707         so we can access them in finalizer
7708         
7709 2006-07-14  Dick Porter  <dick@ximian.com>
7710
7711         * object.c (mono_type_initialization_cleanup): Fix a race
7712         condition by temporarily commenting out the critical section
7713         deletion.
7714
7715 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
7716
7717         * reflection.c (create_custom_attr): Fix some warnings.
7718         (create_custom_attr_data): Ditto.
7719         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
7720         types. Fixes #78855.
7721
7722 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
7725
7726         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
7727
7728 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * reflection.c (resolve_object): Add support for DynamicMethod.
7731
7732         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
7733         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
7734
7735 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
7736
7737         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
7738         don't leak GPtrArray's pdata has we have no use (nor free) for it.
7739
7740 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
7743         Fixes #77888.
7744
7745 2006-06-30  Raja R Harinath  <rharinath@novell.com>
7746
7747         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
7748         slightly: remove a shadow local variable.
7749
7750 2006-06-29  Raja R Harinath  <rharinath@novell.com>
7751
7752         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
7753         definition that introduces the virtual function slot.
7754         Also fix Coverity #105.
7755
7756 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
7759         for dynamic assemblies. Fixes #78724.
7760
7761 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
7764         Fixes #78722.
7765
7766 2006-06-21  Martin Baulig  <martin@ximian.com>
7767
7768         * reflection.c
7769         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
7770         fixes #76484.
7771
7772 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
7775
7776 2006-06-20  Raja R Harinath  <rharinath@novell.com>
7777
7778         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
7779         nor TYPEREFs.
7780         * class.c (mono_class_create_from_typespec): Add 'context' argument.
7781         Inflate result if necessary.
7782         (mono_class_get_full): Remove old version.  Rename from
7783         'mono_class_get' and add 'context' argument.  Pass it to
7784         ..._create_from_typespec.
7785         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
7786         (mono_ldtoken): Revert change below.
7787
7788 2006-06-20  Martin Baulig  <martin@ximian.com>
7789
7790         * class.c (mono_ldtoken): Don't pass the generic context to
7791         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
7792
7793 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
7794
7795         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
7796         and later freeing it. Fixes #78638.
7797
7798 2006-06-15  Miguel de Icaza  <miguel@novell.com>
7799
7800         * icall.c (mono_class_get_throw): Revert over-zealous error
7801         throwing, the caller for mono_class_get_throw will cope with
7802         errors when classes are not properly initialized already.
7803
7804         The code still copes with loader exceptions though.
7805
7806         Fixes the regression in reftype1 and reftype3 from the CAS tests.
7807         
7808 2006-06-14  Miguel de Icaza  <miguel@novell.com>
7809
7810         Fixes the `make run1' version of RuntimeAbort (to be commited,
7811         source is in Bugzilla).
7812         
7813         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
7814         FALSE on class loading failure instead of returning true.
7815
7816         * class.c (mono_class_create_from_typedef): It is possible for
7817         mono_metadata_interfaces_from_typedef_full to fail if a class is
7818         not found, cope with this.
7819         
7820
7821 2006-06-14  Dick Porter  <dick@ximian.com>
7822
7823         * socket-io.c: 
7824         * process.c: Fix a bunch of signed/unsigned warnings from gcc
7825         4.1.1
7826
7827 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
7828
7829         * culture-info-table.h : oops, forgot to make it nsync with r61548.
7830
7831 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7832
7833         * icall.c: Another fix for building mono in Visual Studio.
7834
7835 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
7836
7837         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
7838         
7839 2006-06-09  Martin Baulig  <martin@ximian.com>
7840
7841         * debug-mono-symfile.c: Put this back and really fix it this
7842         time. Sorry for all the trouble.
7843
7844 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * icall.c (mono_class_get_throw): Fix a warning.
7847         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
7848         ReflectionTypeLoadException if needed. Fixes #78606.
7849
7850         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
7851         (mono_class_init): Ditto.
7852
7853         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
7854         ref_only exceptions.
7855         (mono_loader_clear_error): Make this work even if there is no error.
7856
7857 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
7858
7859         * object-internals.h marshal.c marshal.h icall.c: Implement method 
7860         Marshal.GetComSlotForMethodInfo using internal call.
7861
7862 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
7863
7864         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
7865         a function for signalling it.
7866
7867         * class.c (mono_class_from_typeref): Use the new kind of loader error when
7868         a referenced assembly is not found.
7869
7870         * loader.c (mono_loader_error_prepare_exception): Add support for 
7871         LOADER_ERROR_ASSEMBLY. Fix formatting.
7872
7873 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
7874
7875         * domain.c appdomain.c class-internals.h marshal.c: Add support 
7876         for VARIANT marshalling on windows and increment corlib version
7877         since Variant struct was added.
7878
7879 2006-06-03  Miguel de Icaza  <miguel@novell.com>
7880
7881         * debug-mono-symfile.c: Revert Martin's previous patch which broke
7882         stack trace line information:
7883
7884         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
7885         (Martin) when looking up B which is between A and C, return A not C.
7886
7887         Bug is #78573.
7888
7889         Thanks to Alexander Olk for tracking this down.
7890
7891 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
7892
7893         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
7894         
7895         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
7896         avoid clobbering its value.
7897         (mono_string_to_lpstr): Fix a warning on windows.
7898
7899 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
7900
7901         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
7902
7903         * reflection.c loader.c: Removed references to 'dummy' flag.
7904
7905         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
7906
7907         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
7908         it gets GC tracking.
7909
7910         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
7911         GC tracking.
7912         
7913         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
7914
7915         * marshal.c threadpool.c: Update callers of mono_async_result_new.
7916
7917         * appdomain.c: Bump corlib version.
7918
7919 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
7922         CEE_STIND_REF when working with object references.
7923
7924 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
7925
7926         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
7927         Fixes #78539.
7928
7929 2006-05-30  Miguel de Icaza  <miguel@novell.com>
7930
7931         * loader.c (method_from_memberref): Fix argument value for
7932         mono_loader_set_error_method_load (I was passing the MonoClass
7933         instead of the class name char *).
7934
7935 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
7938         CEE_STIND_REF when working with object references.
7939
7940 2006-05-30  Martin Baulig  <martin@ximian.com>
7941
7942         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
7943         mono_method_full_name() change and replace the ':' with a '.'
7944         here.
7945
7946 2006-05-30  Martin Baulig  <martin@ximian.com>
7947
7948         * debug-mono-symfile.c
7949         (mono_debug_symfile_lookup_location): Fix the algorithm:
7950         when looking up B which is between A and C, return A not C.
7951
7952 2006-05-29  Martin Baulig  <martin@ximian.com>
7953
7954         * mono-debug.h
7955         (MonoDebugMethodInfo): Make the typedef public.
7956         (MonoDebugSourceLocation): New public struct.
7957
7958         * mono-debug.c
7959         (mono_debug_source_location_from_address): Removed.
7960         (mono_debug_source_location_from_il_offset): Removed.
7961         (mono_debug_il_offset_from_address): Removed.
7962         (mono_debug_address_from_il_offset): Removed.
7963         (mono_debug_lookup_method): New public function.
7964         (mono_debug_lookup_source_location): New public function; replaces
7965         the old mono_debug_source_location_from_*() functions; see the
7966         inline documentation.
7967         (mono_debug_free_source_location): New public function.
7968         (mono_debug_print_stack_frame): New public function; see the
7969         inline documentation.
7970
7971         * debug-mono-symfile.c
7972         (mono_debug_find_source_location): Renamed into
7973         mono_debug_symfile_lookup_location(); only take a
7974         `MonoDebugMethodInfo *' and an `offset' argument; added inline
7975         documentation.
7976         (mono_debug_find_method): Renamed into
7977         mono_debug_symfile_lookup_method().
7978
7979 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * assembly.c (mono_assembly_open_full): Dont overwrite the status
7982         returned by mono_image_open_full ().
7983
7984         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
7985         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
7986         #78517.
7987
7988         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
7989         #78518.
7990
7991 2006-05-27  Miguel de Icaza  <miguel@novell.com>
7992
7993         * class.c (mono_class_from_typeref): handle missing images
7994         earlier, deals with bug #78418.   Refactor code; 
7995
7996         Fix a warning introduced in my previous commit (some stale code
7997         from before I revisited my patch).
7998
7999         * class.c (mono_class_create_from_typedef): On failure, remove the
8000         class from the MonoImage->class_cache as the class is not
8001         initialized;   Fixes the leak pointed out by Paolo.
8002
8003 2006-05-25  Dick Porter  <dick@ximian.com>
8004
8005         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
8006         DeleteCriticalSections until I figure out which one may still be
8007         sometimes locked when mono_thread_cleanup is called.
8008
8009 2006-05-24  Dick Porter  <dick@ximian.com>
8010
8011         * threads.c (mono_thread_cleanup): Move the threading cleanup out
8012         of mono_thread_manage and back into its own function, so it can be
8013         called after the finalizer thread has finished.
8014
8015         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
8016
8017 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
8018
8019         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
8020         Fixes #78495.
8021
8022         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
8023         with non-blittable elements.
8024         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
8025
8026 2006-05-24  Martin Baulig  <martin@ximian.com>
8027
8028         * mono-debug-debugger.h (MonoDebuggerEvent): Added
8029         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
8030
8031         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
8032         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
8033         `mono_debugger_event_handler' to NULL.
8034
8035 2006-05-24  Martin Baulig  <martin@ximian.com>
8036
8037         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
8038
8039 2006-05-24  Martin Baulig  <martin@ximian.com>
8040
8041         * mono-debug-debugger.h
8042         (mono_debugger_create_notification_function): Added
8043         `MonoCodeManager *' argument.
8044
8045 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
8046
8047         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
8048
8049 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
8050
8051         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
8052         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
8053         implementation.
8054
8055 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
8056
8057         * icall.c: precise GC support: objects can't be stored in unmanaged
8058         memory anymore, even if they are kept alive by other references: since
8059         they can move the GC needs to be able to always find them.
8060
8061 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8062
8063         * object.c: precise GC support for static fields. Support
8064         for moving GCs: write barriers and pinned allocation for interned
8065         strings.
8066
8067 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8068
8069         * domain.c, domain-internals.h: precise GC support for the MonoDomain
8070         structure.
8071
8072 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8073
8074         * class.c, gc.c: sgen and precise GC updates.
8075
8076 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8077
8078         * marshal.h, marshal.c: added write barrier wrapper and precise type
8079         fixes.
8080
8081 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
8082
8083         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
8084         support.
8085
8086 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
8087
8088         * reflection.c: precise and sgen GC updates.
8089
8090 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8091
8092         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
8093
8094 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
8095
8096         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
8097
8098 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
8101         MONO_TYPE_OBJECT. Fixes #78462.
8102
8103 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8104
8105         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
8106         and blittable types.
8107
8108 2006-05-17  Miguel de Icaza  <miguel@novell.com>
8109
8110         * class.c (mono_class_get_exception_for_failure): Implement parts
8111         of a TODO: if the loader error is set (instead of the class
8112         error), we return a Loader exception that can be properly thrown
8113         elsewhere.
8114
8115         This was exposed by some Winforms 2.0 code that I tried to run
8116         (Atsushi pointed me to it).
8117
8118 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
8119
8120         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
8121         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
8122         
8123         * marshal.c (emit_marshal_vtype): Add limited support for 
8124         UnmanagedType.LPStruct. Fixes #78427.
8125
8126         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
8127         Applied a patch from kangaroo to fix #77523.
8128
8129 2006-05-17  Martin Baulig  <martin@ximian.com>
8130
8131         * threads.c
8132         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
8133         (debugger_thread_created): Removed.
8134         (debugger_thread_exited): Removed.
8135
8136 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
8137
8138         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8139
8140         * object-internals.h (MonoReflectionResource): Sync with managed version.
8141
8142 2006-05-12  Wade Berrier <wberrier@novell.com>
8143
8144         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
8145
8146 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
8149         functions try to allocate from the image mempool.
8150
8151 2006-05-12  Dick Porter  <dick@ximian.com>
8152
8153         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
8154
8155 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
8156
8157         * object.c: The FieldGetter and FieldSetter methods require the full
8158         name of the class, not only the name. Fixes bug #78277.
8159
8160 2006-05-11  Miguel de Icaza  <miguel@novell.com>
8161
8162         * loader.c (method_from_memberref): Do not pass the NULL klass to
8163         mono_loader_set_error_() methods.  Pass the non-NULL value
8164         (class). 
8165
8166 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
8169         (mono_assembly_close): Null out assembly->image->references after freeing it.
8170
8171         * image.c (mono_image_close): Free image->references.
8172         
8173         * reflection.c (mono_image_basic_init): Fix a small memory leak.
8174
8175 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8176
8177         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
8178         before checking if it's NULL (g_assert).
8179
8180 2006-05-10  Martin Baulig  <martin@ximian.com>
8181
8182         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
8183         I thought I already killed that two months ago, but now it somehow reappeared.
8184
8185 2006-05-10  Martin Baulig  <martin@ximian.com>
8186
8187         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
8188
8189 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * reflection.c: Allocate memory for dynamically created methods in the image
8192         mempools.
8193
8194 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
8195
8196         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
8197         don't use the ad pointer before checking if it's NULL (g_assert).
8198
8199 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8200
8201         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
8202         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
8203
8204         * marshal.c: Allocate all signatures from mempools.
8205
8206         * marshal.c: Allocate some more signatures from mempools.
8207
8208 2006-05-09  Miguel de Icaza  <miguel@novell.com>
8209
8210         * object.c (mono_load_remote_field): The code used to provide a
8211         temporary variable for returning results if the user did not
8212         provide a result pointer.  But our temporary variable was allocted
8213         on the satck.
8214
8215         Fix calling code to always pass a result area.   Coverity ID 103.
8216
8217 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
8220         value, not the old. Fixes #78312.
8221         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
8222
8223         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
8224         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
8225         per-image cache.
8226
8227         * assembly.c (mono_assembly_close): Free image->references.
8228
8229         * assembly.c (mono_assembly_names_equal): Fix a warning.
8230         (mono_assemblies_cleanup): Cleanup more global data.
8231
8232         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
8233
8234         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
8235         ptr_cache and image->modules.
8236
8237         * image.c (mono_image_init): Allocate array_cache lazily.
8238         
8239 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8240
8241         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
8242         behavior was changed recently and has bad side effects.
8243
8244 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8245
8246         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
8247         
8248         * assembly.c (mono_assembly_close): Remove a debug printf.
8249
8250         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
8251
8252         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
8253         to also allow for temporary references between mono_image_open ()/close ().
8254
8255         * domain.c (get_runtimes_from_exe): Add a FIXME.        
8256
8257 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8258
8259         * marshal.c: Fix support for dynamic methods.
8260
8261         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
8262
8263         * marshal.c (mono_marshal_cleanup): New cleanup function.
8264
8265         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
8266         image mempools.
8267
8268         * class.c (mono_class_init): Fix leaking class->nested_classes.
8269
8270         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
8271
8272         * image.c (mono_image_init): Initialize the new cashes.
8273
8274         * image.c (mono_image_close): Destroy the new cashes.
8275
8276         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
8277
8278         * mempool.c (mono_mempool_strdup): New helper function.
8279
8280         * class-internals.h: Add prototype for mono_loader_unlock ().
8281
8282         * domain.c (mono_jit_info_table_find): Fix a warning.
8283         (mono_debugger_check_runtime_version): Ditto.
8284
8285         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
8286         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
8287         functions to these modules.
8288
8289         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
8290         metadata modules.
8291         
8292         * marshal.c (mono_free_bstr): Fix a warning.
8293
8294         * assembly.c (mono_assembly_open_full): Fix another small leak.
8295
8296         * object.c: Fix some unload leaks in the remoting code.
8297
8298         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
8299         function.
8300
8301         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
8302
8303         * reflection.c: Fix some unload leaks in dynamic assemblies.
8304
8305 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
8306
8307         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
8308         * marshal.h: Add BSTR support on Win32
8309         * icall.c: Add BSTR icalls
8310         * metadata.h: Add BSTR enums
8311
8312 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8313
8314         Work to catch the crash from #76795 and turn it into an
8315         exception.   As I stubbed out pieces of the VisualBasic support,
8316         I found a number of places where the code was failing and I added
8317         checks to those places. 
8318         
8319         * metadata.c (do_mono_metadata_parse_generic_class): Make this
8320         function return a status code.  If we fail to parse the signature
8321         from mono_metadata_parse_generic_inst, return FALSE.
8322
8323         * loader.c (mono_get_method_from_token): If we fail to load the
8324         method (mono_class_get) return NULL.   
8325
8326         * (method_from_memberref): Return NULL if we are unable to parse
8327         the method signature
8328
8329         (mono_loader_error_prepare_exception): Since we now use the
8330         loader_error flag internally to stop processing, and obtaining
8331         exceptions that might be thrown will walk this code path the
8332         proper way of going from a MonoLoaderError into a
8333         MonoException was convoluted.   This new routine encapsulates the
8334         process of turning the error into an exception and *clearing* the
8335         error afterwards.
8336         
8337 2006-04-27  Miguel de Icaza  <miguel@novell.com>
8338
8339         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
8340         with missing assemblies), and to cope with:
8341
8342                 * Missing fieldref from a non-existing assembly.
8343                 * Missing methodref from a non-existing assembly.
8344
8345         The first batch of work to address *some* of the issues from 76661.
8346         
8347         * object.c (mono_class_create_runtime_vtable): If we fail to
8348         initialize the class raise the exception here. 
8349
8350         * metadata.c (mono_class_get_overrides_full): If any methods fail
8351         to load return the failure to the caller.
8352
8353         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
8354         flagging assemblies that failed to load.   
8355
8356         Do not crash if we are unable to load the assembly.
8357
8358         (mono_assembly_close): Do nothing with REFERENCE_MISSING
8359         assemblies. 
8360
8361         * loader.c (mono_loader_set_error_type_load): Change the
8362         convention to always pass unallocated strings, so we make our own
8363         copies (I know our own code had duplicated strings before, but
8364         this keeps the normal conventions).
8365         (method_from_memberref): Call mono_loader_set_error_method_load
8366         for all possible failures of loading the class. 
8367         Remove assert, turn into a loader error.
8368
8369         (mono_loader_error_to_exception): Move this routine from mini
8370         (mini_loader_error_to_exception) there was no need to have that in
8371         mini. 
8372
8373         * class.c (mono_class_from_typeref): If we were not able to load
8374         the assembly with mono_assembly_load_reference, call the
8375         mono_loader_set_error_type_load to register the problem.
8376
8377         (mono_class_setup_fields): If we fail to load the type from
8378         mono_metadata_parse_type_full, call mono_class_set_failure and
8379         break from the loop.
8380
8381         If class->exception_type is set, we do not layout the fields as
8382         that might crash the runtime, and instead return (from breaking
8383         from the previous loop).
8384
8385         (mono_class_setup_vtable): This now returns a boolean indicating
8386         whether the table was properly setup.   The decision is driven by
8387         mono_class_get_overrides_full which might run into non-existing
8388         methods. 
8389         
8390         (mono_class_init): Returns TRUE on success or FALSE if there was a
8391         problem in loading the type (incorrect assemblies, missing
8392         assemblies, methods, etc).
8393
8394         When we call mono_class_setup_fields we also check for a potential
8395         error inside this call (either a class exception or a general
8396         loader exception).
8397
8398         (mono_class_create_from_typedef): If the parent fails to load
8399         (calling mono_class_get_full) return NULL.
8400         
8401         ** Important **
8402
8403         calls to mono_metadata_parse_type_full should be checked
8404         everywhere and set the mono_class_set_failure
8405         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
8406
8407         The current patch checks the places where my manually constructed
8408         tests show the errors are showing up, but we should do it
8409         everywhere. 
8410
8411         ** Important2 **
8412
8413         mono_class_init return values should be tested everywhere, like
8414         the previous case this is something that we should audit
8415         everywhere and not only on the cases exposed by the tests I
8416         created. 
8417
8418 2006-04-26  Miguel de Icaza  <miguel@novell.com>
8419
8420         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
8421         boolean parameter and instead pass the information on `options'
8422         parameter (FileOptions).
8423
8424         * icall.c: Register the new signature for MonoIO.Open.
8425
8426         * debug-helpers.c (dis_one): Trying to understand how coverity
8427         works.  Fix Run 5, item 78.
8428
8429 2006-04-26  Dick Porter  <dick@ximian.com>
8430
8431         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
8432         dereference.
8433
8434 2006-04-25  Martin Baulig  <martin@ximian.com>
8435
8436         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
8437
8438         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
8439         debugger_thread_created().
8440         (debugger_gc_push_all_stacks): Don't handle the main thread in any
8441         special way.
8442         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
8443         (mono_debugger_finalize_threads): New function; undo the effects
8444         of mono_debugger_init_threads().
8445         (mono_debugger_create_all_threads): Removed.
8446
8447 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
8448
8449         * image.c (mono_image_close): Tidy up trace messages.
8450
8451         * assembly.c (mono_assembly_close): Ditto.
8452
8453         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
8454         no longer references an already freed assembly. Fixes #78168.
8455
8456 2006-04-21  Dick Porter  <dick@ximian.com>
8457
8458         * threads.c (mono_thread_detach): Fix reference counting when
8459         detaching threads.
8460
8461 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
8464         #78155.
8465
8466 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
8469         (mono_type_to_stind): Ditto.
8470
8471         * marshal.c: Use the new helper functions to simplify code.
8472
8473         * image.c (mono_image_close): Add some code for help debug assembly unloading
8474         problems.
8475
8476         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
8477         image mempool.
8478
8479         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
8480         assembly was already loaded in another appdomain. Fixes #78083.
8481
8482 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
8483
8484         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
8485         referenced assemblies.
8486         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
8487
8488         * domain.c (mono_domain_free): Add a trace message.
8489
8490         * appdomain.c (add_assemblies_to_domain): Ditto.        
8491
8492         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
8493         field.  
8494
8495 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8496
8497         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
8498
8499 2006-04-12  Martin Baulig  <martin@ximian.com>
8500
8501         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
8502         `USE_INCLUDED_LIBGC'.   
8503
8504 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
8507         the patch contains ../ and a small directory name later. Hopefully fixes
8508         #78035.
8509
8510 2006-04-10  Martin Baulig  <martin@ximian.com>
8511
8512         Clean up the debugger's thread-handling code.
8513
8514         The debugger's thread-handling code has been moved from
8515         ../mini/debug-debugger.c to threads.c.  We now iterate directly
8516         over the `threads' hash, keep track of exiting threads and also
8517         use proper locking.
8518
8519         We can now debug XSP and XSP based applications with the debugger.
8520
8521         * object-internals.h (MonoThread): Added `gpointer end_stack'.
8522
8523         * threads.h
8524         (MonoThreadCallbacks): Removed; this was only used by the debugger.
8525         (mono_install_thread_callbacks): Likewise.      
8526
8527         * threads.c (mono_thread_callbacks): Removed.
8528         (debugger_thread_created, debugger_thread_exited): New static functions.
8529         (start_wrapper): Call debugger_thread_created().
8530         (thread_cleanup): Call debugger_thread_exited().
8531         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
8532         (mono_debugger_init_threads): New public function.
8533         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
8534         iterate directly over the `threads' hash and also use proper locking.
8535
8536         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
8537
8538         * mono-debug-debugger.h
8539         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
8540
8541 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
8542
8543         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
8544         argument type=array. Fixes #78057.
8545
8546 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
8547
8548         * culture-info-table.h : regenerated. Fixed bug #69652.
8549
8550 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * loader.c metadata.c: Reapply a variant r59116.
8553         
8554         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
8555
8556         * class.c (mono_class_setup_interface_offsets): New internal function.
8557
8558         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
8559         interfaces too. Fixes #77398.
8560
8561         * reflection.c (encode_cattr_value): Add support for 
8562         parameter type=object, argument type=array.
8563         (load_cattr_value): Ditto. Fixes #77916.
8564
8565         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
8566         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
8567
8568         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
8569         a byval char array and CharSet is Ansi.
8570
8571         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
8572
8573 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
8574
8575         * metadata.c: Add some locking comments.
8576         
8577         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
8578         mempool.
8579         (mono_metadata_free_method_signature): Don't free the signature itself.
8580
8581         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
8582
8583         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
8584         reference the same MonoImage.
8585         (mono_assembly_load_from_full): Add an assert.
8586
8587 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * image.c (mono_image_close): Don't put the image we are about to free into the
8590         loaded_images_guid_hash.
8591
8592         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
8593         to reduce code duplication.
8594
8595         * marshal.c: Register the native functions called by this module as icalls, to
8596         somewhat centralize the creation of MonoMethodSignature's.
8597
8598         * loader.c (mono_method_signature): Add a cache for method signatures.
8599
8600         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
8601         the parameter attributes of a method.
8602         (mono_metadata_parse_method_signature_full): Refactored the computation of
8603         parameter attributes into a separate function. Also avoid one allocation in
8604         most cases.
8605
8606         * assembly.c (mono_assembly_close): Ditto.
8607
8608         * image.c (mono_image_close): Log trace messages with INFO level.
8609
8610         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
8611
8612         * image.c reflection.c: Correct reference counting of image modules.
8613         
8614         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
8615         of this function from the image mempool.
8616         
8617         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
8618         to allow more cached types to be used.
8619
8620         * mono-debug.c (mono_debug_add_method): Appled patch from
8621         David S. Miller  <davem@sunset.davemloft.net>: Access 
8622         minfo->lexical_blocks[] entry elements using read32().
8623
8624 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * loader.c (mono_free_method): No longer free the method header for non-dynamic
8627         methods as it is allocated from the mempool.
8628
8629         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
8630         image mempool.
8631
8632         * metadata-internals.h: Add comments describing the reference counting scheme
8633         used for MonoImage and MonoAssembly.
8634
8635         * image.c assembly.c reflection.c: Rework reference counting of images and 
8636         assemblies so they are freed when the runtime is shut down. Free some 
8637         additional memory structures when an image is unloaded.
8638         
8639 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * class.c loader.c reflection.c: Allocate more data structures in
8642         the image mempool.
8643
8644 2006-03-31  Miguel de Icaza  <miguel@novell.com>
8645
8646         * icall.c
8647         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
8648         build on pre glib 2.4 systems.
8649
8650 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
8653
8654         * icall.c: Fix some warnings.
8655
8656 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
8657
8658         * culture-info-table.h : regenerated.
8659
8660 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
8661
8662         * threads.c, object-internals.h, verify.c: changed the culture caching
8663         code to use a normal MonoArray for storage so the GC can keep track of
8664         them easily. Fixed bits of the cache logic, too and simplified the
8665         code.
8666
8667 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
8668
8669         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
8670         thread for non-Boehm GCs.
8671
8672 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
8673
8674         * domain.c, object.c, domain-internals.h: reduce the amount of memory
8675         needed to keep track of the data for static fields.
8676
8677 2006-03-29  Raja R Harinath  <rharinath@novell.com>
8678
8679         Fix #75172
8680         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
8681         for interface classes.  Use 'num_methods' instead.
8682         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
8683         before using '->vtable_size' field.
8684
8685 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8686
8687         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
8688         doesn't contain managed pointers, so use a normal hashtable.
8689
8690 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8691
8692         * reflection.c, class-internals.h, domain.c: fixed handling of types
8693         used as values for objects in custom attributes (bug #77915):
8694
8695 2006-03-24  Martin Baulig  <martin@ximian.com>
8696
8697         * class.c (mono_class_setup_fields): Added support for generic
8698         instances; fixes #77580.
8699
8700 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8701
8702         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
8703
8704 2006-03-24  Dick Porter  <dick@ximian.com>
8705
8706         * file-io.c (get_file_attributes): More stat macro breakage.
8707         Fixes bug 77759.
8708
8709 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
8710
8711         * profiler.c: added the file=filename option in the default profiler
8712         to output the profile data to filename.
8713
8714 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8715
8716         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
8717         bug #77877.
8718
8719 2006-03-22  Martin Baulig  <martin@ximian.com>
8720
8721         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
8722         allocated `MonoClassField *' in `fb->handle'.
8723
8724 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8725
8726         * class.c, image.c, metadata-internals.h: implemented new mechanism to
8727         allocate interface ID to save memory and allow better ID reuse on
8728         appdomain unload. setup_generic_vtable () removal from Martin.
8729
8730 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
8731
8732         * object.h, appdomain.c, domain.c, exception.c, icall.c,
8733         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
8734         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
8735         write barriers for reference stores with managed objects accessed with
8736         C structures in the runtime and in embedding programs.
8737
8738 2006-03-20  Raja R Harinath  <rharinath@novell.com>
8739
8740         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
8741         'interface_id' and 'max_interface_id' fields of MonoClasses
8742         representing open generic types.
8743
8744 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
8745
8746         * object.h, object.c, icall.c: added functions to deal with
8747         storing valuetypes that contain references in managed objects.
8748         * reflection.c, string-icalls.c, threads.c, marshal.c: small
8749         fixes and comments around uses of mono_array_addr ().
8750
8751 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
8752
8753         * object.h, icall.c, monitor.c: object.GetHashCode ()
8754         implementation that supports the moving garbage collector.
8755
8756 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8757
8758         * icall.c, threads-types.h, threads.c: implemented finalizer for
8759         LocalDataStoreSlot.
8760
8761 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * metadata.c (mono_type_size): Add a fixme.
8764         (mono_type_stack_size): Ditto.
8765
8766         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
8767         'type_forwarders' field.
8768
8769         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
8770         attribute from net 2.0.
8771
8772         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
8773         from class.c.
8774
8775         * class.c (mono_class_setup_fields): Fix a warning.
8776         
8777         * class.c (mono_class_from_name): Add support for assemblyref entries
8778         in the EXPORTEDTYPE table.
8779
8780         * reflection.c: Add support for handling type forwarders under net 2.0.
8781
8782         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
8783         
8784 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
8787         overwriting entries in ModuleBuild->types, also clean up the code
8788         a little. Fixes #77774.
8789
8790 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8791
8792         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
8793         load friend assembly info when present.
8794
8795 2006-03-14  Raja R Harinath  <rharinath@novell.com>
8796
8797         Fix crasher on gtest-158.cs.
8798         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
8799         the return value if the MonoClass we want is yet in an
8800         inconsistent state.
8801         * class.c (mono_class_create_from_typedef): Add an comment
8802         explaining an order dependency between mono_class_setup_parent and
8803         mono_class_setup_mono_type.
8804
8805 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8806
8807         * class.c: documentation updates and events bug fix.
8808
8809 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
8810
8811         * class.c: some cleanup, locking fixes.
8812
8813 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8814
8815         * class.c: fix the generics code to setup nested
8816         type info to the instantiated type (bug #77770).
8817
8818 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
8819
8820         * marshal.c: fixed a few type correctness issues.
8821
8822 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8823
8824         * loader.c: the Set/Get/Addrtess array methods should be public.
8825
8826 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
8827
8828         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
8829         
8830         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
8831         info->wrapper.
8832
8833 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
8834
8835         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
8836
8837         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
8838
8839         * mempool.c (mono_mempool_alloc): Speed this up a bit.
8840         (mono_mempool_alloc0): Ditto.
8841
8842 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8843
8844         * socket-io.c:
8845         (create_object_from_sockaddr): it was allocating 4 extra bytes
8846         for the AF_UNIX data. Fixes bug #77747.
8847
8848 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
8851
8852 2006-03-09  Dick Porter  <dick@ximian.com>
8853
8854         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
8855         Fixes bug 76966 again.
8856
8857 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
8858
8859         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
8860         names from r57532
8861         * appdomain.c: Bumped corlib version to 48 (due to r57532)
8862
8863 2006-03-07  Martin Baulig  <martin@ximian.com>
8864
8865         * object.c
8866         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
8867
8868 2006-03-07  Martin Baulig  <martin@ximian.com>
8869
8870         * class.c
8871         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
8872         regression introduced in r56970; see gtest-252.cs.
8873
8874         * loader.c (mono_get_method_constrained): Correctly handle generic
8875         methods; see gtest-253.cs.
8876
8877 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
8878
8879         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
8880
8881 2006-03-04  Martin Baulig  <martin@ximian.com>
8882
8883         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
8884         compute the parent type at runtime, just like we're already doing
8885         it for interfaces.
8886
8887         * reflection.c
8888         (mono_reflection_bind_generic_parameters): Don't compute the
8889         parent type anymore.
8890
8891         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
8892
8893 2006-03-04  Martin Baulig  <martin@ximian.com>
8894
8895         * mono-debug-debugger.h
8896         (mono_debugger_create_notification_function): Allocate memory at
8897         runtime and return a pointer to it.
8898
8899 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
8900
8901         * assembly.c: Fix windows build.
8902         
8903         * assembly.c: Fix build.
8904
8905         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
8906
8907         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
8908         
8909 2006-03-03  Dick Porter  <dick@ximian.com>
8910
8911         * process.c
8912         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
8913         Check parameters before dereferencing them.  Fixes Aaron's part of
8914         bug 77393.
8915
8916 2006-03-03  Raja R Harinath  <rharinath@novell.com>
8917
8918         Fix performance regression.
8919         * loader.c (find_method_in_class): Add 'from_class' argument.
8920         Rename 'klass' argument to 'in_class'.  The signature is compared
8921         against the method in 'in_class', and the corresponding method is
8922         returned from 'from_class'.
8923         (find_method): Walk both 'in_class' and 'from_class' in parallel.
8924         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
8925         type definition and generic instantiation in parallel.
8926         (mono_get_method_constrained): Update to changes.
8927
8928 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8929
8930         * threads.c: make sure the domain is correct, too when doing
8931         mono_thread_attach ().
8932
8933 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
8934
8935         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
8936         windows. Fixes #77683.
8937
8938 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
8939
8940         * object.h, *: introduced specific way to set elements of an array
8941         of references to be used as write barrier. Still need to audit the
8942         uses of mono_array_addr.
8943
8944 2006-03-01  Miguel de Icaza  <miguel@novell.com>
8945
8946         * object-internals.h: New field to cache the assmebly name, patch
8947         from Tambet Ingo (tambet@ximian.com)
8948
8949 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
8950
8951         * decimal.h, class-internals.h, metadata-internals.h,
8952         file-io.h: mark a few function declarations as internal, to
8953         reduce the number of PLT entries.
8954
8955 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8956
8957         * file-io.c: fix typo in warning message.
8958
8959 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
8960
8961         * loader.c: on unix, lookup the "*A" version of a function
8962         if charset is auto as a second option before failing.
8963
8964 2006-02-28  Raja R Harinath  <rharinath@novell.com>
8965
8966         * class.h (mono_class_inflate_generic_method): Revert to two
8967         argument version.
8968         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
8969         (mono_class_inflate_generic_method_full): Add.
8970         * class.c (mono_class_inflate_generic_method_full): Rename from
8971         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
8972         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
8973         * loader.c, reflection.c: Update to changes.
8974
8975 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
8976
8977         * icall.c: const fixes and small improvements.
8978
8979 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8980
8981         * threadpool.c: for asynchronous connect(), enable the same workaround
8982         for BSD 6 as for the Mac. Fixes bug #77637.
8983
8984 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
8985
8986         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
8987         formatted classes. Fixes #77524.
8988
8989 2006-02-24  Raja R Harinath  <rharinath@novell.com>
8990
8991         * class.c (inflate_generic_type): Add a couple more
8992         micro-optimizations.
8993         (inflate_generic_context): Don't use the 'gmethod' from
8994         'inflate_with'.
8995         (mono_class_inflate_generic_method): If the method has generic
8996         parameters, but the passed-in context doesn't have a 'gmethod',
8997         create one.  Use the possibly simplified generic instantiation
8998         from the declaring class instead of the one passed in.
8999
9000 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9001
9002         Make generic method signature and method header handling lazy.
9003         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
9004         (inflate_generic_header): Likewise.
9005         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
9006         parameter to avoid inflating types.
9007         (mono_get_inflated_method): Empty out.
9008         * class.h (mono_class_inflate_generic_method): Update to changes.
9009         * loader.c (mono_get_method_from_token): Don't parse signature for
9010         generic methods, nor methods of generic classes.
9011         (mono_method_signature): Rename from 'mono_method_signature'.
9012         Inflate signature on demand.
9013         (mono_method_get_header): Inflate method header on demand.
9014         * reflection.c: Update to changes.
9015
9016 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9017
9018         * metadata.c (mono_metadata_inflate_generic_inst): If the
9019         instantiation is closed, don't bother expanding it in the new
9020         context.
9021         * class.c (inflate_generic_class): If the generic instantiation
9022         doesn't change after inflation, return the argument itself.
9023         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
9024         Add bounds checks.
9025         (inflate_generic_context): If neither the generic class nor the
9026         generic method instantiations change, return the original context.
9027         * reflection.c (mono_method_get_object): Do
9028         'mono_get_inflated_method' before accessing the ->klass field.
9029         (inflate_mono_method): Don't create a MonoGenericMethod unless
9030         necessary.
9031         (inflate_method): Don't pass a constructed type as the declaring
9032         type of a methodbuilder.
9033
9034 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
9035
9036         * object.c: fix memory overwrite.
9037
9038 2006-02-22  Dick Porter  <dick@ximian.com>
9039
9040         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
9041         it doesn't work any more.
9042         (mono_threads_request_thread_dump): Fix unused variable warnings.
9043
9044 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9045
9046         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
9047         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
9048         the public header file.
9049
9050 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
9053
9054 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9055
9056         * class-internals.h, object.c: reduce the size of MonoVTable
9057         and store the interface_offsets array at negative offsets.
9058
9059 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
9060
9061         * metadata.c: tweak table descriptors data structures to reduce
9062         size and runtime relocations.
9063
9064 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9065
9066         * marshal.c: fix some types and opcodes to be type-safe
9067         in marshaling wrappers.
9068
9069 2006-02-21  Ankit Jain  <jankit@novell.com>
9070
9071         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
9072
9073 2006-02-21  Raja R Harinath  <rharinath@novell.com>
9074
9075         * metadata.c (get_constraints): Relax debugging checks for monodis.
9076
9077 2006-02-21  Ankit Jain  <jankit@novell.com>
9078
9079         * metadata.c (mono_metadata_load_generic_params): Move the code
9080         checking for ambiguous generic params from here to mono/dis/get.c
9081         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
9082
9083 2006-02-21  Raja R Harinath  <harinath@gmail.com>
9084
9085         Fix assertion triggered when compiling nemerle.
9086         * class.c (mono_get_shared_generic_inst): Rename from
9087         get_shared_inst and make non-static.
9088         * loader.c (mono_get_shared_generic_method): New.  Used to create
9089         the MonoGenericContext-equivalent of a MonoGenericContainer.
9090         (mono_get_method_from_token): Initialize the 'context' field of
9091         the created MonoGenericContainer.
9092         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
9093         * metadata.c (get_constraints): Add sanity check.
9094         * class-internals.h: Add new internal methods.
9095
9096         * reflection.c (verify_safe_for_managed_space): New sanity check.
9097         Currently checks that owner-less generic parameters aren't allowed
9098         in managed space.
9099         (mono_type_get_object): Use it.
9100         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
9101         that are now in mono_type_get_object.
9102         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
9103
9104 2006-02-19  Raja R Harinath  <harinath@gmail.com>
9105
9106         * metadata.c (mono_type_create_from_typespec): Rename from
9107         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
9108         argument and caching of types in the generic container.
9109         (unwrap_arrays, find_generic_param): Remove.
9110         * metadata-internals.h: Update.
9111         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
9112
9113 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * class.c (mono_class_get_exception_for_failure): Fix a warning.
9116
9117         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
9118         return values. Fixes #77581.
9119
9120         * class.c (mono_fnptr_class_get): Switch name and name_space.
9121
9122         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
9123         classes and add support for [In, Out] attributes.
9124         (mono_marshal_free_asany): Ditto. Fixes #77524.
9125
9126 2006-02-18  Raja R Harinath  <harinath@gmail.com>
9127
9128         * class.c (mono_class_from_generic_parameter): Make more robust to
9129         incomplete MonoGenericContainers from monodis.
9130
9131 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9132
9133         * class-internals.h: added some more exception types.
9134         * class.c, metadata.c: added a few checks to handle missing
9135         types.
9136
9137 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9138
9139         Use owner-less generic-params some more.
9140         * class.c (my_mono_class_from_generic_parameter): Remove.
9141         (mono_class_from_generic_parameter): Handle null image,
9142         param->name and param->owner.
9143         (mono_class_from_mono_type): Update.
9144         (mono_class_create_from_typespec): Remove 'container' parameter.
9145         If that parameter is non-null, the result is always inflated by
9146         'mono_class_get_full' anyway.
9147         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
9148         parameter.
9149         (mono_class_get_full): Update.
9150
9151         * class.c (inflate_generic_type) [GENERICINST]: If the generic
9152         instance is not open, don't bother inflating.
9153         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
9154         parse metadata for inflated classes.
9155         (_mono_class_get): Change GenericContext* parameter to
9156         GenericContainer*.
9157         (mono_class_create_from_typespec): Likewise.  Simplify, and
9158         implement trivially.  All the cases are handled in
9159         mono_class_from_mono_type.  Don't inflate returned class.
9160         (mono_class_get_full): Delegate GENERICINST optimization to
9161         inflate_generic_type.
9162         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
9163
9164 2006-02-16  Dick Porter  <dick@ximian.com>
9165
9166         * socket-io.c (create_object_from_sockaddr): Fix typo.
9167         (create_sockaddr_from_object): Check array lengths before
9168         potentially accessing items off the end.
9169         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
9170         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
9171         (ves_icall_System_Net_Sockets_Socket_Send_internal)
9172         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
9173         length checks to avoid wraparound overflows.
9174         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
9175         contents of the array of sockets
9176         (hostent_to_IPHostEntry2)
9177         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
9178         Check return value of inet_ntop ().
9179         (addrinfo_to_IPHostEntry): Fix typo
9180
9181 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9182
9183         Type metadata parsing doesn't use generic-instantiation information.
9184         * metadata.c (mono_metadata_parse_array_full): Change
9185         MonoGenericContext* parameter to MonoGenericContainer*.
9186         (mono_metadata_parse_type_full): Likewise.
9187         (mono_type_create_from_typespec_full): Likewise.
9188         (mono_metadata_parse_mh_full): Likewise.
9189         (mono_metadata_parse_generic_inst): Likewise.
9190         (do_mono_metadata_parse_generic_class): Likewise.
9191         (do_mono_metadata_parse_type): Likewise.
9192         * metadata-internals.h: Update to changes.
9193         * class.c (mono_class_find_enum_basetype): Likewise.
9194         (mono_class_setup_fields): Likewise.
9195         (mono_class_create_from_typespec): Likewise.
9196         * loader.c (method_from_methodspec): Likewise.
9197         (mono_get_method_from_token): Likewise.
9198         (mono_method_get_header): Likewise.
9199
9200 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9201
9202         * marshal.c: handle additional GENERICINST case (patch from
9203         Thong Nguyen <tum@veridicus.com>).
9204         Fix a few cases where LDIND_I/STIND_I was used for references.
9205
9206 2006-02-16  Raja R Harinath  <rharinath@novell.com>
9207
9208         * reflection.c (mono_reflection_get_token): Remove unused variable.
9209
9210 2006-02-16  Martin Baulig  <martin@ximian.com>
9211
9212         * reflection.c (mono_reflection_get_token): Add support for fields
9213         in instantiated generic types.
9214
9215         * icall.c
9216         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
9217
9218 2006-02-15  Martin Baulig  <martin@ximian.com>
9219
9220         * icall.c
9221         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
9222         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
9223         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
9224         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
9225
9226 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9227
9228         * class.c, metadata.c, metadata.h, object.c, icall.c,
9229         marshal.c: changed mono_type_get_underlying_type () to do
9230         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
9231         Fixed handling of instantiated generic valuetypes (bug #75479).
9232
9233 2006-02-15  Raja R Harinath  <rharinath@novell.com>
9234
9235         * metadata.c (mono_metadata_decode_signed_value): Simplify.
9236         Delegate to mono_metadata_decode_value, and work on the returned value.
9237
9238         * icall.c (ves_icall_MonoType_GetGenericArguments):
9239         Add consistency check here too.
9240         
9241 2006-02-15  Ankit Jain  <jankit@novell.com>
9242
9243         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
9244         char/short etc.
9245
9246 2006-02-15  Ankit Jain  <jankit@novell.com>
9247
9248         * metadata.c (mono_metadata_decode_signed_value): New function to decode
9249         signed values, used only for representing lower bounds of arrays.
9250         (mono_metadata_parse_array_full): Use new
9251         mono_metadata_decode_signed_value to decode lower bounds.
9252
9253 2006-02-14  Martin Baulig  <martin@ximian.com>
9254
9255         * reflection.c
9256         (mono_reflection_get_token): Support "MonoGenericMethod" and
9257         "MonoGenericCMethod" and allow generic instances / methods.
9258
9259 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
9262         to obtain the terminal size using an ioctl.
9263
9264         * object.c (mono_nullable_init): Revert this as nullable reference
9265         types are not valid.
9266         (mono_nullable_box): Ditto.
9267
9268 2006-02-09  Dick Porter  <dick@ximian.com>
9269
9270         * threads.c (mono_thread_detach): Drop a reference to the thread
9271         we're detaching.
9272
9273 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9274
9275         * object.c (mono_nullable_init): Handle nullable reference types.
9276         (mono_nullable_box): Ditto. Fixes #77446.
9277
9278 2006-02-07  Martin Baulig  <martin@ximian.com>
9279
9280         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
9281
9282 2006-02-07  Ankit Jain  <jankit@novell.com>
9283
9284         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
9285         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
9286         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
9287         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
9288         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
9289         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
9290
9291 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
9292
9293         * class.c (mono_class_create_generic): Set type_token as well.
9294
9295         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
9296         compatible with MS.
9297
9298 2006-02-02  Martin Baulig  <martin@ximian.com>
9299
9300         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
9301         has never been used so far.
9302
9303 2006-02-02  Martin Baulig  <martin@ximian.com>
9304
9305         * mono-debug-debugger.h: Changed comment at the top of this file;
9306         the header is not installed, but it's safe to #include it from
9307         within the JIT.
9308
9309         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
9310         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
9311
9312 2006-02-02  Martin Baulig  <martin@ximian.com>
9313
9314         * mono-debug.h
9315         (MonoSymbolTable): Removed the `metadata_info' field.
9316
9317         * mono-debug.c
9318         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
9319
9320         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9321         (mono_debugger_add_builtin_types): Removed.
9322         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
9323         (mono_debugger_create_notification_function): We now operate on a
9324         pre-allocated area; take a `gpointer' and return `void'.
9325
9326         * mono-debug-debugger.c
9327         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
9328         (mono_debugger_add_builtin_types): Removed.
9329
9330 2006-02-02  Martin Baulig  <martin@ximian.com>
9331
9332         * threads.c (mono_debugger_create_all_threads): New public method.
9333
9334 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9335
9336         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
9337         breaks on several platforms.
9338
9339 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
9340
9341         * assembly.c: the VS.NET build doesn't supply default values for
9342         MONO_ASSEMBLIES and MONO_CFG_DIR.
9343
9344 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
9345
9346         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
9347         helper function.
9348
9349         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
9350
9351         * loader.c (method_from_memberref): Fix a warning.
9352
9353         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
9354
9355         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
9356         with explicit layout. Fixes #77433.
9357
9358 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
9359
9360         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
9361         max_interface_id is initialized before using it. Fixes #77398.
9362         (ves_icall_Type_GetInterfaces): Ditto.
9363
9364 2006-01-30  Raja R Harinath  <rharinath@novell.com>
9365
9366         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9367         allocate memory for parameter attributes when parsing memberref
9368         signatures.
9369         * loader.c (mono_loader_set_error_method_load): Don't warn.
9370         (method_from_memberref): Ensure MissingMethodException gets thrown
9371         if method is not found.  Make warning more informative.
9372
9373 2006-01-29  Raja R Harinath  <harinath@gmail.com>
9374
9375         Fix #77397
9376         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
9377         return true if is byref.
9378         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9379         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
9380         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
9381
9382 2006-01-27  Raja R Harinath  <rharinath@novell.com>
9383
9384         Fix tests/find-method.2.il
9385         * loader.c (find_method, find_method_in_class): Remove is_inflated
9386         argument.  Revert 2006-01-18 change.
9387         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
9388         is generic, search for method in its generic definition.
9389         * class.c (mono_class_setup_vtable_general): Print generic
9390         arguments of generic types in debugging printf.
9391
9392 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
9395
9396         * threads.c (mono_threads_request_thread_dump): New helper function.
9397
9398 2006-01-25  Raja R Harinath  <rharinath@novell.com>
9399
9400         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
9401
9402 2006-01-25  Ankit Jain  <jankit@novell.com>
9403
9404         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
9405         move definition to ..
9406         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
9407         
9408 2006-01-25  Ankit Jain  <jankit@novell.com>
9409             Raja R Harinath  <rharinath@novell.com>
9410
9411         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
9412         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
9413         as necessary.
9414
9415 2006-01-25  Martin Baulig  <martin@ximian.com>
9416
9417         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
9418         `MonoDebuggerThread' into debug-debugger.c.
9419
9420 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9421
9422         * profiler.c: fix printing of data.
9423
9424 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
9425
9426         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
9427           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
9428
9429 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9430
9431         * object.c: fix deadlock related to string interning.
9432
9433 2006-01-23  Martin Baulig  <martin@ximian.com>
9434
9435         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
9436
9437         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
9438
9439 2006-01-23  Martin Baulig  <martin@ximian.com>
9440
9441         * mono-debug.h: Moved the prototypes of some functions which are
9442         used by the JIT here from mono-debug-debugger.h.
9443
9444 2006-01-21  Martin Baulig  <martin@ximian.com>
9445
9446         * Makefile.am: Don't install mono-debug-debugger.h.
9447
9448 2006-01-21  Martin Baulig  <martin@ximian.com>
9449
9450         * mono-debug-debugger.h: Enforce the private status of this header
9451         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
9452         Moved some stuff from mono-debugger-jit-wrapper.h here.
9453
9454 2006-01-20  Raja R Harinath  <rharinath@novell.com>
9455
9456         * class.c (mono_class_from_typeref): Add a sanity test to help
9457         catch lack of assembly load/search hooks.
9458
9459 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
9460
9461         * marshal.c (emit_struct_conv): Relax the fields with same offset
9462         check even more. Fixes #77230.
9463
9464 2006-01-18  Martin Baulig  <martin@ximian.com>
9465
9466         * loader.c (find_method_in_class): Added `gboolean is_inflated'
9467         argument; if false, we compare the uninstantiated signatures.
9468         (method_from_memberref): Compare the uninstantiated signatures;
9469         fixes #76417.
9470
9471 2006-01-18  Robert Jordan  <robertj@gmx.net>
9472
9473         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
9474         Clear the weak link. Fixes bug #77170.
9475
9476         * gc.c (mono_gchandle_free):
9477         Reflect *-gc.c changes (tiny optimization).
9478
9479 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * metadata.c (mono_metadata_signature_dup): Applied patch from
9482         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
9483         Fixes #77288.
9484
9485 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
9486
9487         * marshal.c (emit_struct_conv): Allow fields with the same offset when
9488         marshalling from native to managed code. Fixes #77230.
9489
9490 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9491
9492         * threadpool.c: fix problem (Mac only) when more than one asynchronous
9493         connect. Fixes bug #77020.
9494
9495 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
9496
9497         * class.c: fixed id assignement for nested interfaces (bug #77275).
9498         Added also better info for --print-vtable debugging.
9499
9500 2006-01-12  Martin Baulig  <martin@ximian.com>
9501
9502         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
9503         interfaces on-the-fly; fixes #76625.
9504
9505         * class-internals.h
9506         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
9507         don't need that anymore.
9508
9509 2006-01-12  Miguel de Icaza  <miguel@novell.com>
9510
9511         * socket-io.c
9512         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
9513         To avoid initing the nested_classes when not needed I turned the
9514         PeerCredData as a toplevel internal class, as it has to be shared
9515         anyways. 
9516
9517         Fixes the CASA issue.
9518
9519 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
9520
9521         * domain.c: Accessors for MonoJitInfo
9522
9523         * profiler-private.h: Add jitinfo to the end jit hook
9524
9525         * profiler.[ch]: Define new hooks, called after jitting which give
9526         the MonoJitInfo that was compiled
9527
9528 2006-01-10  Martin Baulig  <martin@ximian.com>
9529
9530         * class.c (mono_class_setup_events): Add support for generic
9531         classes; fixes #76440.
9532
9533 2006-01-06  Raja R Harinath  <rharinath@novell.com>
9534
9535         Fix #77160.
9536         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
9537         on passed-in method.
9538
9539 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9540
9541         * object.c (mono_runtime_invoke_array): Add Nullable support.
9542
9543         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
9544
9545 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
9546
9547         * file-io.c: Don't consider sockets as directory and avoid an endless
9548         loop. Fix bug #76966.
9549
9550 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9551
9552         * object.c (mono_nullable_init): New helper function.
9553         (mono_nullable_box): Ditto.
9554
9555         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
9556
9557         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
9558
9559         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
9560         
9561 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * class.c (mono_class_is_assignable_from): Make T assignable to 
9564         Nullable<T>.
9565
9566 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
9567
9568         * appdomain.c: Bump corlib version to 46.
9569         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
9570         serialization purpose) and changed ves_icall_System_Reflection_
9571         Assembly_get_code_base signature to accept a boolean (to escape, or 
9572         not, the assembly code base).
9573
9574 2005-12-23  Dick Porter  <dick@ximian.com>
9575
9576         * icall.c: 
9577         * threads-types.h: 
9578         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
9579         CreateEvent icall now returns "created" boolean parameter.
9580
9581 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
9582
9583         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
9584         #76967.
9585
9586         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
9587         when attr_klass is an interface. Fixes #77045.
9588
9589 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * marshal.c (emit_struct_conv): Fix previous patch.
9592         
9593         * marshal.c (emit_struct_conv): Add a check for fields with the same
9594         offset.
9595
9596 2005-12-20  Raja R Harinath  <rharinath@novell.com>
9597
9598         Fix regression in Mono.C5.
9599         * class.c (mono_class_create_generic): If 'klass' is an interface
9600         set up the interface offsets.
9601         (mono_class_is_assignable_from): Don't throw away generic arguments.
9602
9603 2005-12-19  Raja R Harinath  <rharinath@novell.com>
9604
9605         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
9606         type parameters.
9607
9608 2005-12-15  Raja R Harinath  <rharinath@novell.com>
9609
9610         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
9611         dead store.
9612         (do_mono_metadata_parse_generic_class): Don't pass the current
9613         generic context when parsing the type being instantiated: it
9614         cannot use it, anyway.
9615
9616         * loader.c (method_from_memberref): Don't inflate a signature if
9617         it doesn't contain any type parameters.
9618
9619 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
9620
9621         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
9622
9623 2005-12-14  Martin Baulig  <martin@ximian.com>
9624
9625         * class.c
9626         (mono_type_get_name_recurse): Don't return null for type
9627         parameters and open generic classes.
9628         (mono_class_setup_methods): Don't exclude generic instances.
9629         (mono_get_unique_iid): Use different IDs for different
9630         instantiations of the same generic type.
9631         (mono_class_setup_vtable): Only use setup_generic_vtable() for
9632         open generic instances; create a normal vtable for closed generic
9633         instances.
9634         (mono_class_setup_vtable_general): We're now also called for
9635         closed generic instances.
9636
9637         * reflection.c
9638         (mono_reflection_bind_generic_parameters): Correctly use
9639         mono_metadata_lookup_generic_inst() everywhere.
9640
9641 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * object.c (mono_class_create_runtime_vtable): Call 
9644         mono_class_setup_vtable ().
9645
9646         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
9647         function.
9648         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
9649         #76959.
9650
9651         * loader.c (mono_loader_set_error_type_load): Print the type load
9652         warnings to the console so they are more visible to the user.
9653         (mono_loader_set_error_method_load): Ditto.
9654
9655         * reflection.c (ensure_runtime_vtable): Revert the last change as it
9656         is still broken.
9657         
9658         * reflection.c (ensure_runtime_vtable): Fix build.
9659
9660         * reflection.c (ensure_runtime_vtable): Disable an optimization which
9661         doesn't work in all cases.
9662
9663 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
9664
9665         * object.c (mono_array_new_full): Treat a single dimensional array
9666         with 0 lower bounds as an szarray. Fixes #76973.
9667
9668         * reflection.c (custom_attr_visible): Really fix this.
9669
9670 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
9671
9672         * reflection.c (custom_attr_visible): Allow nested public attributes
9673         as well.
9674
9675         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
9676         interface check.
9677
9678 2005-12-12  Raja R Harinath  <harinath@gmail.com>
9679
9680         * class.c (set_generic_param_owner): Delete.
9681         (mono_class_create_from_typedef): Don't set ->owner field of
9682         generic parameters to "param containers" of enclosing classes.
9683         * reflection.c (mono_reflection_initialize_generic_parameter):
9684         Likewise.
9685
9686 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * reflection.c (custom_attr_visible): Fix build.
9689
9690 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
9691
9692         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
9693         private attributes.
9694         
9695         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
9696         handling of null parameter defaults.
9697
9698 2005-12-09  Raja R Harinath  <rharinath@novell.com>
9699
9700         * class.c (mono_class_from_generic_parameter): Don't set
9701         klass->generic_container.
9702         (my_mono_class_from_generic_parameter): Likewise.
9703
9704 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * reflection.c (load_public_key): Fix a warning.
9707         (method_encode_code): Fix unaligned accesses.
9708
9709 2005-12-07  Martin Baulig  <martin@ximian.com>
9710
9711         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
9712
9713         * reflection.c
9714         (write_generic_param_entry): Encode our custom attrs.
9715
9716         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
9717
9718 2005-12-07  Martin Baulig  <martin@ximian.com>
9719
9720         * reflection.c (encode_new_constraint): Removed; we don't use the
9721         `NewConstraintAttribute' anymore.
9722
9723 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
9726         not fire a TypeResolve event when Assembly.GetType () is called.
9727
9728 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
9729
9730         Beginning of support for nullable types in the runtime. Parts of
9731         this patch are from Martin.
9732
9733         * appdomain.c (MONO_CORLIB_VERSION): Bump
9734
9735         * domain.c (mono_init_internal): get the nullable type
9736
9737         * class.c (mono_class_is_nullable): New method
9738         (mono_class_get_nullable_param): New mehod
9739         (mono_class_create_generic): In types T? set cast_class to T
9740
9741         * class-internals.h (MonoDefaults): new nullable default class
9742         (mono_class_get_nullable_param, mono_class_get_nullable_param):
9743         new methods.
9744
9745 2005-12-05  Raja R Harinath  <rharinath@novell.com>
9746
9747         * metadata.c (select_container): New.  Refactor code to select the
9748         appropriate GenericContainer given the type of generic parameter
9749         we are looking for.
9750         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
9751         not a MonoGenericContext.  Use select_container.  Update parameters.
9752         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
9753         and MONO_TYPE_MVAR.
9754         (unwrap_arrays): Remove duplicate tests.
9755         (find_generic_param): Rename from 'has_same_context'.  Now walks a
9756         generic instantiated class to find any arguments that are generic
9757         parameters.
9758         (mono_type_create_from_typespec_full): Use find_generic_param to
9759         avoid evicting some generic instantiations from the typespec
9760         cache.
9761
9762 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
9763
9764         * reflection.c: fixed writing of doubles on ARM FPA.
9765
9766 2005-12-02  Robert Jordan  <robertj@gmx.net>
9767
9768         * icall.c: Fixed EventInfo.ReflectedType (#76829).
9769
9770 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9771
9772         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
9773         least on SUSE 10 they are not the same (on debian, they are just the
9774         same thing).
9775
9776 2005-12-01  Raja R Harinath  <rharinath@novell.com>
9777
9778         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
9779         DeclaringType for VARs and MVARs.
9780         * class.c (set_generic_param_owner): Fix initialization of owner
9781         fields.
9782
9783 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
9784
9785         * icall.c: fixed Enum.ToObject() to correctly convert the values.
9786
9787 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9788
9789         * threadpool.c: workaround for a bug that shows up on the Mac:
9790         select()+connect() on a blocking socket is not like it should
9791         be, so we proceed to connect() in that case, wasting the I/O
9792         threadpool thread until connect succeedes. Fixes bug #75436.
9793
9794 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9795
9796         * threadpool.c: fix typo when setting file descriptor states.
9797
9798 2005-11-28  Raja R Harinath  <rharinath@novell.com>
9799
9800         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
9801         * metadata.c (mono_metadata_parse_method_signature_full): Don't
9802         create a temporary signature container.
9803         (mono_metadata_parse_generic_param): Update to changes.
9804         (mono_type_create_from_typespec_full): Update to changes.
9805         * loader.c (method_from_memberref): Don't use a
9806         MonoGenericContainer while parsing a memberref signature.
9807         (method_from_methodspec): Remove dead-store of the 'container'
9808         variable.  It's overwritten before use.
9809
9810         * metadata.c (mono_type_create_from_typespec_full): Make debugging
9811         checks tighter.
9812         (mono_metadata_parse_generic_param): Likewise.
9813         * loader.c (find_method_in_class): Does not need a
9814         MonoGenericContainer.  Use 'mono_method_signature' rather than
9815         'mono_method_signature_full'.
9816         (find_method, mono_get_method_constrained, method_from_memberref):
9817         Update to changes.
9818
9819         * metadata.c (mono_type_create_from_typespec_full): Ensure that
9820         owner-less generic-parameters are never evicted from the typespec
9821         cache.
9822
9823         * loader.c (method_from_memberref): Don't use the current context
9824         when parsing signatures.
9825         (method_from_methodspec, mono_get_method_from_token): Update to changes.
9826
9827         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
9828         side-effects in g_assert.
9829         * loader.c (mono_get_method_from_token): Resolve klass earlier so
9830         that we don't potentially lose information.
9831
9832 2005-11-26  Dick Porter  <dick@ximian.com>
9833
9834         * icall.c:
9835         * threads.c: icalls to implement basic (ie, not named)
9836         System.Threading.Semaphore.
9837
9838 2005-11-24  Dick Porter  <dick@ximian.com>
9839
9840         * process.c
9841         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9842         Use GetProcessId() if it's available.
9843
9844 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
9847
9848 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9849             Ankit Jain  <jankit@novell.com>
9850
9851         * loader.c (mono_get_method_from_token): Initialize 'method' field
9852         of all generic parameters before parsing the signature.  Remove
9853         code that "fixed"-up MVAR references.
9854
9855 2005-11-23  Ankit Jain  <jankit@novell.com>
9856
9857         * metadata.c (mono_metadata_has_generic_params):
9858         (mono_metadata_load_generic_param_constraints):
9859         (mono_metadata_load_generic_params): Move duplicate code ...
9860         (mono_metadata_get_generic_param_row): ... here. Returns the
9861         first row-id in GenericParam table for a given owner (token).
9862         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
9863         prototype.
9864
9865 2005-11-23  Raja R Harinath  <rharinath@novell.com>
9866             Ankit Jain  <jankit@novell.com>
9867
9868         * metadata.c (mono_metadata_class_equal): Pass signature_only when
9869         comparing VARs too.
9870         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
9871         type->data.generic_param only if the type is an MVAR.
9872         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
9873         leak owner-less VARs and MVARs into managed space.
9874
9875 2005-11-21  Martin Baulig  <martin@ximian.com>
9876
9877         * class-internals.h
9878         (MonoMethod): Moved the `generic_container' here from
9879         `MonoMethodNormal' since we now also need it for
9880         `MonoMethodPInvoke';
9881         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
9882         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
9883         an union containing both `MonoMethodNormal' and
9884         `MonoMethodPInvoke'.
9885
9886         * loader.c
9887         (mono_get_method_from_token): Allow implementing generic methods
9888         as interncalls.
9889
9890         * threads.c
9891         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
9892         icall.
9893
9894 2005-11-17  Dick Porter  <dick@ximian.com>
9895
9896         * icall.c: 
9897         * process.h: 
9898         * process.c: Split the Process Start_internal icall into
9899         ShellExecuteEx_internal and CreateProcess_internal, which are
9900         called depending on whether UseShellExecute is true.  Fixes bug
9901         76670.
9902
9903         * appdomain.c (MONO_CORLIB_VERSION): Incremented
9904
9905 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
9908         'msize' parameters, use the information in 'mspec' instead.
9909         (emit_object_to_ptr_conv): Ditto.
9910
9911         * marshal.c (emit_struct_conv): Handle explicit layout structs with
9912         fields out of order. Fixes #76733.
9913
9914 2005-11-17  Ankit Jain  <jankit@novell.com>
9915
9916         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
9917
9918 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
9919
9920         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
9921           bug #76575.
9922
9923 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
9926         for types with non-auto layout. Fixes #76717.
9927
9928 2005-11-16  Ankit Jain  <jankit@novell.com>
9929
9930         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
9931         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
9932         if generic_context is null.
9933           (mono_metadata_generic_param_equal): param->owner can be null.
9934           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
9935         null.
9936
9937 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
9940         the correct value.
9941
9942 2005-11-15  Martin Baulig  <martin@ximian.com>
9943
9944         * object.c (set_value): Use mono_class_from_mono_type() instead of
9945         the hack for generic instances; fixes #76136.
9946
9947 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
9950         fields.
9951
9952         * image.c (load_metadata_ptrs): Initialize the new fields.
9953
9954         * reflection.c (create_dynamic_mono_image): Ditto.
9955
9956         * reflection.c (build_compressed_metadata): Use the new fields.
9957
9958         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
9959         icall.
9960
9961         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
9962         icall.
9963         
9964 2005-11-15  Ankit Jain  <jankit@novell.com>
9965             Raja R Harinath  <harinath@gmail.com>
9966
9967         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
9968         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
9969         new per-generic_container cache if the cached MonoType's context matches
9970         the current context.
9971           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
9972         to the expected context.
9973           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
9974
9975 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9976
9977         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
9978         we changed the signature of an icall.
9979         * icall.c: Modify to mono_double_ParseImpl return true/false 
9980         depending on the success, instead of throwing the exception. This will
9981         help us in Double.TryParse methods.
9982         
9983 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
9984
9985         * marshal.c (emit_marshal_object): Throw an exception when
9986         marshalling 'object' instead of crashing. Fixes #76696.
9987
9988 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * class-internals.h: Add prototype for mono_type_get_full_name ().
9991
9992 2005-11-11  Dick Porter  <dick@ximian.com>
9993
9994         * threads.c (mono_thread_manage): Make sure the main thread has
9995         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
9996
9997 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
9998
9999         * loader.c (mono_loader_set_error_type_load): Log a warning to the
10000         console about the missing type.
10001         (mono_loader_set_error_method_load): Ditto.
10002
10003 2005-11-09  Miguel de Icaza  <miguel@novell.com>
10004
10005         * mono-config.c (mono_get_config_dir): Set the system defaults if
10006         none is specified.
10007
10008         * assembly.c (mono_set_dirs): New API entry point to set the
10009         assembly and the config directory in one call
10010
10011 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
10014         the ftnptr was created from a delegate in a domain other than the
10015         current domain. Fixes #75377.
10016
10017         * exception.h exception.c: Add mono_get_exception_not_supported ().
10018
10019 2005-11-08  Martin Baulig  <martin@ximian.com>
10020
10021         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
10022
10023 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
10024
10025         * security-manager.h: Added definitions to deal with strongname key 
10026         pairs bigger (and smaller) than 1024 bits.
10027         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
10028         adjust wrt the public key length being used.
10029
10030 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
10031
10032         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
10033           Windows build (r51396-51397).
10034
10035 2005-11-03  Martin Baulig  <martin@ximian.com>
10036
10037         * class.c (mono_class_setup_vtable_general): Also add generic
10038         methods to the vtable; fixes #76581.
10039
10040 2005-11-01  Miguel de Icaza  <miguel@novell.com>
10041
10042         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
10043         sure that we lookup GetString method from the System.Text.Encoding
10044         class, not the derived class or we get an empty method.
10045
10046         Fixed class #76612.
10047
10048 2005-10-25  Miguel de Icaza  <miguel@novell.com>
10049
10050         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
10051         if it has been previously set (embedders). 
10052
10053         Make mono_set_rootdir available also on Unix.
10054
10055 005-10-24  Robert Jordan  <robertj@gmx.net>
10056
10057         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
10058
10059 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10060
10061         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
10062         only calls which are made to native code use this flag.
10063
10064         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
10065
10066 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10067
10068         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
10069         Add support for FieldBuilders.
10070
10071 2005-10-29  Martin Baulig  <martin@ximian.com>
10072
10073         * mono-debug.c
10074         (mono_debug_using_mono_debugger): New public method; returns
10075         whether we're running inside the debugger.
10076
10077 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
10080         for Method/Constructor/FieldBuilders.
10081
10082 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * reflection.c (module_add_cattrs): Save custom attributes for global methods
10085         and fields as well.
10086
10087 2005-10-26  Martin Baulig  <martin@ximian.com>
10088
10089         * mono-debug-debugger.c
10090         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
10091
10092 2005-10-24  Raja R Harinath  <harinath@gmail.com>
10093
10094         * icall.c (base64_to_byte_array): Don't pass an out-of-range
10095         integer to isspace.
10096
10097 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10098
10099         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
10100         when passing valuetypes byref. Fixes #76502.
10101
10102 2005-10-19  Jackson Harper  <jackson@ximian.com>
10103
10104         * profiler.c: Don't put a . in front of types that are not in a
10105         namespace.
10106
10107 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10108
10109         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
10110
10111 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
10112
10113         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
10114         #76436.
10115         (mono_marshal_get_ldflda_wrapper): Fix a warning.
10116
10117 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10118
10119         * assembly.c metadata-internals.h icall.c: Define an additional
10120         parameter for mono_assembly_name_parse_full, so we can avoid creating
10121         S.R.AssemblyName.Version when no version info wasn't passed.
10122         
10123 2005-10-09  Miguel de Icaza  <miguel@novell.com>
10124
10125         * class.c (mono_type_get_full_name): Reimplement method that was
10126         removed. 
10127
10128         * image.c: Some docs
10129
10130 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10131
10132         * profiler.c (output_newobj_profile): Fix printing of Total memory
10133         on x86.
10134
10135 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10136
10137         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
10138
10139 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
10140
10141         * threads.c: remove debug output.
10142
10143 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10144
10145         * threads.c (mono_thread_manage): Fix crashes if more than 64
10146         threads need to be aborted. Hopefully fixes #75899.
10147
10148         * assembly.c (mono_stringify_assembly_name): New helper function.
10149
10150         * class.c: Use mono_stringify_assembly_name instead of the similar
10151         static function.
10152
10153         * assembly.h assembly.c: Add support for calling a postload search 
10154         hook if an assembly cannot be loaded.
10155
10156         * appdomain.c: Register new search hooks which call the AssemblyResolve
10157         events in AppDomain. Fixes #75231
10158
10159 2005-10-07  Martin Baulig  <martin@ximian.com>
10160
10161         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
10162         methods without debug info.
10163
10164 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10165
10166         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
10167         wrappers.
10168
10169 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10170
10171         * file-io.c: now that we return symlinks, use lstat and, when the file
10172         is a symbolic link, stat, to get the file attributes. Also avoid the
10173         conversion to/from utf16/external.
10174
10175 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
10176
10177         * class.c (mono_class_layout_fields): Compute klass->has_references
10178         correctly if an embedded valuetype is not yet initialized. Fixes
10179         #76331.
10180
10181 2005-10-04  Martin Baulig  <martin@ximian.com>
10182
10183         * metadata.c
10184         (mono_metadata_load_generic_param_constraints): New public
10185         function; splitted the constraints loading out from
10186         mono_metadata_load_generic_params().
10187
10188         * class.c (mono_class_create_from_typedef): Call
10189         mono_metadata_load_generic_param_constraints() after setting up
10190         the type and creating our parent; fixes #75329.
10191
10192 2005-10-04  Martin Baulig  <martin@ximian.com>
10193
10194         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
10195         non-dynamic parent classes.
10196
10197 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
10198
10199         * file-io.c : win32 build fix (ETXTBSY seems not found).
10200
10201 2005-10-04  Martin Baulig  <martin@ximian.com>
10202
10203         * reflection.c
10204         (mono_image_get_methodspec_token): Make the cache actually work;
10205         fixes #75974.
10206
10207 2005-10-04  Martin Baulig  <martin@ximian.com>
10208
10209         * class.c (mono_class_name_from_token): Removed the unneccessary
10210         `MonoGenericContext *' argument.
10211
10212 2005-10-04  Martin Baulig  <martin@ximian.com>
10213
10214         * loader.c
10215         (method_from_methodspec): Make the caching work again; fixes the
10216         performance regression from #76262.
10217
10218 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10219
10220         * file-io.c:
10221         * file-io.h:
10222         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
10223         GetFileSystemEntries that performs the same work but without going
10224         into io-layer, locking, etc.
10225
10226 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10227
10228         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
10229         ThreadState_Stopped as well. Fixes #76047.
10230
10231 2005-09-29  Martin Baulig  <martin@ximian.com>
10232
10233         * class.c
10234         (inflate_generic_context): If the new context has a `gmethod', set
10235         its `container' that that gmethod's `container'.
10236
10237         * metadata.c
10238         (mono_metadata_parse_generic_param): Simplify things;
10239         `generic_container = generic_context->container;' is just fine.
10240
10241         * loader.c (method_from_methodspec): Code cleanups.
10242
10243 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
10244
10245         * decimal.c: fix warning (and let gcc generate correct
10246         code on ARM with optimizations).
10247
10248 2005-09-28  Martin Baulig  <martin@ximian.com>
10249
10250         * loader.c
10251         (method_from_memberref): Added `MonoGenericContext *class_context'
10252         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
10253         (method_from_methodspec): If we're a memberref, use the enclosing
10254         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
10255
10256 2005-09-28  Martin Baulig  <martin@ximian.com>
10257
10258         * object.c (mono_runtime_invoke_array): Added support for
10259         MONO_TYPE_GENERICINST; fixes #75917.
10260
10261 2005-09-27  Martin Baulig  <martin@ximian.com>
10262
10263         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
10264         `k->byval_arg.type' to determine the actual type.
10265
10266         * loader.c (method_from_methodspec): Removed some hacks.
10267
10268 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10269
10270         * class-internals.h (mono_field_is_deleted): Do the test for
10271         rtspecialname before we check the actual name of the field. This
10272         prevents us from dereferencing a pointer into the string table,
10273         saving us from accessing a few pages
10274
10275         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10276         macros. This will allow a deadlock debugger to easily be plugged
10277         in.
10278
10279 2005-09-27  Martin Baulig  <martin@ximian.com>
10280
10281         * loader.c (method_from_methodspec): Create a "signature"
10282         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
10283
10284 2005-09-27  Martin Baulig  <martin@ximian.com>
10285
10286         * class.c
10287         (inflate_generic_class): Correctly set the new context's
10288         container.
10289
10290         * loader.c
10291         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
10292         instead of a `MonoGenericContext *'.
10293         (mono_method_signature_full): Take a `MonoGenericContainer *'
10294         instead of a `MonoGenericContext *'.
10295
10296         * metadata.c
10297         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
10298         instead of a `MonoGenericContext *'.
10299         (mono_metadata_parse_method_signature_full): Likewise.
10300
10301 2005-09-26  Martin Baulig  <martin@ximian.com>
10302
10303         * class.c
10304         (mono_class_from_generic_parameter): Set `klass->generic_container'
10305         (mono_class_from_generic_parameter): Likewise.
10306         (mono_bounded_array_class_get): We inherit the generic container
10307         from the element class.
10308
10309         * loader.c
10310         (find_method, find_method_in_class): Take a `MonoGenericContext *'
10311         argument rather than computing it here.
10312         (method_from_memberref): Correctly set the generic context before
10313         parsing the signature.  Fixes #75681.
10314
10315 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * object.c (mono_class_has_special_static_fields): Fix warnings.
10318
10319 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10320
10321         * assembly.c: Add parse_public_key function, to
10322         par the public keys. Also added mono_assembly_name_parse_full,
10323         to define it the parsed key should be freed or not.
10324         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
10325         to parse a long format assembly name.
10326         * metadata-internals.h: Keep mono_assembly_name_parse_full as
10327         private, since calling it to preserve the key requires
10328         freeing it manually.
10329         
10330 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
10331
10332         * locales.c : removed HAVE_ICU part.
10333
10334 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10335
10336         * object.c (mono_class_create_runtime_vtable): Avoid calling 
10337         field_is_special_static if the klass has no special static fields.
10338
10339         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
10340         (MonoCachedClassInfo): Likewise.
10341
10342         * object.c (mono_class_has_special_static_fields): New helper function.
10343
10344 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * class.c (mono_class_create_from_typedef): Don't call 
10347         interfaces_from_typedef_full for enums.
10348         (mono_class_create_from_typedef): Compute the base types of enums directly
10349         without calling mono_class_setup_fields ().
10350         (mono_class_find_enum_basetype): New helper function.
10351
10352         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
10353         one place inside the string heap.
10354         
10355 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
10356
10357         * class.c: locking fixes, code cleanups, some docs added.
10358         Allocate some data structures in the image mempool.
10359
10360 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10363         the example code.
10364         
10365 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
10366
10367         * class-internals.h, class.c, reflection.c: reduce memory taken by
10368         MonoClass.
10369
10370 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
10371
10372         * metadata.c, metadata.h, loader.h: documentation updates, code and
10373         API cleanups.
10374
10375 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10376
10377         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
10378         the example code.
10379
10380         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
10381         page faults caused by the runtime while reading metadata.
10382
10383 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10384
10385         * socket-io.c: the field names were changed 3 months ago and no one
10386         realized until bug #76077 got filed!
10387
10388 2005-09-20  Martin Baulig  <martin@ximian.com>
10389
10390         * icall.c (assembly_icalls): Removed some unused debugger icalls.
10391
10392 2005-09-20  Martin Baulig  <martin@ximian.com>
10393
10394         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
10395         write the rank into the class entry.
10396
10397 2005-09-20  Martin Baulig  <martin@ximian.com>
10398
10399         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
10400
10401 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10404
10405         * icall.c (custom_attrs_defined_internal): New icall.
10406
10407         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
10408         function.
10409         (mono_custom_attrs_construct_by_type): New helper function.
10410
10411 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
10412
10413         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
10414         terminate the resulting string. Fixes #76123.
10415
10416 2005-09-16  Martin Baulig  <martin@ximian.com>
10417
10418         * mono-debug.c
10419         (mono_debug_add_method): Ignore inflated methods for the moment.
10420
10421 2005-09-14  Martin Baulig  <martin@ximian.com>
10422
10423         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
10424
10425 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
10428         return a success/failure indication.
10429         (mono_metadata_interfaces_from_typedef_full): Ditto.
10430         (get_constraints): Ditto.
10431
10432 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * marshal.c (emit_marshal_array): Fix handling of null arrays.
10435         
10436         * marshal.c (emit_marshal_array): Add support for returning string
10437         arrays from delegates. Fixes #76063.
10438
10439         * marshal.c: Use the emit_ldloc/stloc macros where possible.
10440
10441 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
10444         icall.
10445
10446 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * reflection.c icall.c: Fix after mono_get_exception_type_load
10449         signature change.
10450
10451         * assembly.c (mono_assembly_get_assemblyref): New helper function.
10452         (mono_assembly_load_reference): Use the new helper.
10453
10454         * class-internals.h (MonoLoaderError): New structure containing 
10455         information about type loading errors.
10456
10457         * class-internals.h loader.c: Add APIs to store per-thread loader
10458         error information.
10459
10460         * loader.c class.c: Set the loader error if needed.
10461
10462         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
10463
10464 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
10465
10466         * decimal.c: fixed to handle the broken ARM fp format.
10467
10468 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
10469
10470         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
10471         broken.
10472
10473 2005-09-06  Martin Baulig  <martin@ximian.com>
10474
10475         * domain.c (supported_runtimes): Added v2.0.50727.
10476
10477 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
10478
10479         * culture-info.h: reduce the size of some structures.
10480
10481 2005-09-05  Martin Baulig  <martin@ximian.com>
10482
10483         Reflect latest API changes in the August CTP.
10484
10485         * icall.c
10486         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
10487         ("MonoType.HasGenericArguments"): Removed.
10488         ("MonoMethod.BindGenericParameters"): Renamed to
10489         "MakeGenericMethod".
10490         ("MethodBuilder.BindGenericParameters"): Renamed to
10491         "MakeGenericMethod".    
10492
10493 2005-09-05  Martin Baulig  <martin@ximian.com>
10494
10495         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
10496
10497 2005-09-05  Martin Baulig  <martin@ximian.com>
10498
10499         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10500
10501         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
10502         generic_container is non-NULL.
10503
10504 2005-09-05  Martin Baulig  <martin@ximian.com>
10505
10506         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10507
10508         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
10509
10510 2005-08-29  Michal Moskal  <malekith@nemerle.org>
10511
10512         * reflection.c (encode_locals,
10513         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
10514         for large generic types.
10515
10516 2005-09-05  Martin Baulig  <martin@ximian.com>
10517
10518         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10519
10520         * class.c (mono_dup_array_type): New public method.
10521         (mono_metadata_signature_deep_dup): New public method.
10522         (dup_type): Correctly duplicate array and function types.
10523
10524 2005-09-05  Martin Baulig  <martin@ximian.com>
10525
10526         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10527
10528         * reflection.c (get_default_param_value_blobs): Handle generic types
10529         and generic methods.
10530
10531 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
10532
10533         * class.c: Fixed error reporting (method/class were inversed) for 
10534         inheritance demands.
10535         * security-manager.c|h: Added the AppDomain when calling the managed
10536         System.Security.SecurityManager.InheritanceDemand method.
10537
10538 2005-09-01  Raja R Harinath  <rharinath@novell.com>
10539
10540         * reflection.c (encode_marshal_blob): 'marshaltype' and
10541         'marshaltyperef' are alternate sources for the custom marshaler
10542         name.
10543
10544 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
10545
10546         * class.c: fix creation of array classes with rank == 1
10547         (patch by Ankit Jain <jankit@novell.com>).
10548
10549 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
10550
10551         * object.c: fix check for creating the bound data for arrays vs
10552         szarrays.
10553
10554 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10555
10556         * object.c: configuration file name is now based on the executable name,
10557         not the image name. Fixes bug #75931.
10558
10559 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
10560
10561         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
10562         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
10563
10564 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * rand.c: Use wincrypt.h instead of WinCrypt.h.
10567
10568 2005-08-24  Ankit Jain  <jankit@novell.com>
10569             Raja R Harinath  <rharinath@novell.com>
10570
10571         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
10572           called by it recursively.
10573           (mono_class_init): Remove special case in pending_init handling, since it's
10574           superseded by the fix to mono_class_from_typeref.
10575
10576 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10577
10578         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
10579         BROKEN_THREAD_START stuff.
10580
10581 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
10582
10583         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
10584         trampoline.
10585
10586         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
10587         
10588         * object.c (mono_delegate_ctor): Replace the original function address with
10589         a delegate trampoline.
10590
10591 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
10592
10593         * icall.c: add boolean argument to base64_to_byte_array and 
10594         InternalFromBase64String to control whether a whitespace-only string
10595         is allowed (or should casue a FormatException to be thrown). We need
10596         this as the behavior has changed between MS.NET 1.x and 2.0, and we
10597         to match the MS behaviour in both profiles.
10598         * appdomain.c: Bump corlib version.
10599
10600 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10601
10602         This patch implements a big portion of publisher policy
10603         support, used to bind assembly versions and redirect
10604         one assembly from version A to version B.
10605
10606         * assembly.c:
10607         New GSList loaded_assembly_bindings, for storing the cached
10608         assembly bindings.
10609         (assembly_binding_maps_name): New static function for checking if a 
10610         assembly binding information maps an assembly name.
10611         (mono_assembly_binding_info_free): New function for freeing
10612         assembly binding information resources.
10613         (get_publisher_policy_info): New static function for retrieving 
10614         assembly binding information from a MonoImage.
10615         (compare_versions): New static function for comparing an assembly
10616         binding information data and the version of an assembly name.
10617         (check_policy_versions): New static function for checking if an
10618         assembly binding info mapping an assembly name is valid for it.
10619         (mono_assembly_load_publisher_policy): New static function for
10620         loading the 'policy.major.minor.MyAssembly' image for an assembly
10621         with an assembly name 'aname'.
10622         (mono_assembly_bind_version): New static function for updating
10623         assembly redirection.
10624         (mono_assembly_apply_binding): New static function for applying
10625         assembly binding.
10626         (search_binding_loaded): New static function for searching 
10627         loaded assembly binding infos in the cache domain.
10628         (mono_assembly_load_full): Don't apply assembly binding for
10629         reflection only assemblies.
10630
10631         * metadata-internals.h: Add MonoAssemblyBindingInfo,
10632         which contains information about assembly binding. Also
10633         declare signature for mono_config_parse_publisher_policy ()
10634         function, used to retrieve pub policy info.
10635         
10636         * mono-config.c:
10637         (publisher_policy_start): New static function used to parse publisher 
10638         policy config files.
10639         (publisher_policy_parser): New static MonoParseHandler containing 
10640         the functions used when parsing config files.
10641         (mono_config_parse_publisher_policy): New function for parsing
10642         publisher policy files.
10643         
10644 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
10645
10646         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
10647
10648         * marshal.c (mono_delegate_free_ftnptr): Ditto.
10649
10650         * object.c (mono_get_addr_from_ftnptr): New helper function.
10651
10652         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
10653
10654         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10655
10656 2005-08-19  Dick Porter  <dick@ximian.com>
10657
10658         * threads.c, threads.h, appdomain.c, appdomain.h,
10659         profiler-private.h, monitor.c, object.c, object-internals.h,
10660         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
10661         store the thread ID, so it can hold a 64 bit value if needed.
10662
10663 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
10664
10665         * reflection.c (mono_reflection_create_dynamic_method): Store the
10666         handle class into the method references as well so ldtoken works in
10667         dynamic methods.
10668
10669         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
10670         types.
10671
10672 2005-08-19  Ankit Jain <jankit@novell.com>
10673
10674         Fix #75847.
10675         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
10676           here rather than using the method signature of a arbitrary function
10677           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
10678           two arguments.
10679           Hack done with Harinath.
10680
10681 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10682
10683         * threadpool.c: disable printing stack traces when we get a exception
10684         in a threadpool thread. I need to do more testing to figure out which
10685         cases actually print this. Fixes bug #75828.
10686
10687 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10688
10689         * icall.c: there might be ignored whitespace after the last '='. This
10690         fixes length computation and bug #75840.
10691
10692 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
10693
10694         * assembly.c (mono_assembly_load_full): Consider .exe extension as
10695         well. Fixes #75809.
10696
10697         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
10698         #75784.
10699         
10700         * reflection.c (create_custom_attr_data): Ditto.
10701
10702 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
10703
10704         * locales.c, culture-info.h : removed RegionLCIDMap.
10705         * culture-info-tables.h : regenerated.
10706
10707 2005-08-16  Martin Baulig  <martin@ximian.com>
10708
10709         * class.c (mono_type_get_name_recurse): Small fix.
10710
10711 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
10712
10713         * locales.c : indentation fixie.
10714
10715 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
10716
10717         * object-internals.h,
10718           locales.h,
10719           locales.c,
10720           culture-info.h,
10721           icall.c : added RegionInfo table support.
10722         * culture-info-table.h : regenerated for region support.
10723
10724 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
10725
10726         * reflection.c (resolve_object): handle all kinds of MonoMethod
10727         including generic ones
10728
10729 2005-08-12  Ankit Jain <jankit@novell.com>
10730
10731         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
10732           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
10733
10734 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
10735
10736         * process.c: Don't close a thread handle when it's NULL. This is a
10737         workaround for bug #75733.
10738
10739 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
10740
10741         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
10742
10743 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
10744
10745         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
10746
10747 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10748
10749         * threadpool.c: if a work item in the thread pool has a callback that
10750         catches a exception, don't propagate it after invoking the callback.
10751         Fixes bug #75336.
10752
10753 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
10754
10755         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
10756
10757         * class-internals.h (MonoCachedClassInfo): Add some new fields.
10758
10759         * class.c (mono_class_init): Load field info lazily in the AOT case.    
10760
10761         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
10762
10763 2005-08-03  Ankit Jain  <jankit@novell.com>
10764
10765         Fix #75683.
10766         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
10767           PInvoke calling convention is 0.
10768
10769 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
10770
10771         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
10772         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
10773
10774 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
10775
10776         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
10777         to handle threads not started by the GC (patch by Michael Meeks
10778         <michael.meeks@novell.com>).
10779
10780 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
10781
10782         * reflection.c: Make buffer used in emitting types larger for some
10783         big generic types (patch by Michal Moskal).
10784
10785 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
10786
10787         * mono-debug.c: Fix some (not all) alignment problems.
10788
10789 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10790
10791         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
10792         Invoke mono_image_load_from_data_full passing the refonly
10793         parameter.
10794
10795         * assembly.c
10796         (mono_assembly_open_from_bundle): Add the refonly argument, 
10797         in order to pass it to other methods it calls to.
10798         (do_mono_assembly_open): Add the refonly argument, in order 
10799         to pass it to other methods it calls to.
10800         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
10801         the refonly parameter to it.
10802
10803         * image.c: Add loaded_images_refonly_hash and
10804         loaded_images_refonly_guid_hash to cache the reflection
10805         only loaded images.
10806         (mono_images_init): Initialize the hash tables used for
10807         caching the reflection only images.
10808         (load_modules): Invoke mono_image_open_full passing the refonly
10809         parameter to load the modules the correct way.
10810         (build_guid_table): Add the refonly argument, to re-build the 
10811         correct hash table.
10812         (do_mono_image_open): Added the refonly argument, in order to
10813         define it for the loaded image.
10814         (mono_image_loaded_full): New function, which receives an
10815         additional parameter to look for the image in the refonly or
10816         non-refonly section.
10817         (mono_image_loaded): Updated, using mono_image_loaded_full.
10818         (mono_image_loaded_by_guid_full): The same case that happens
10819         with mono_image_loaded_full.
10820         (mono_image_loaded_by_guid): Likewise.
10821         (register_image): Use the ref_only variable inside MonoImage
10822         to decide in which hash table store the current image.
10823         (mono_image_open_from_data_full): Rename
10824         mono_image_open_from_data to mono_image_open_from_data_full,
10825         adding the refonly argument, to define the ref_only variable 
10826         inside MonoImage.
10827         (mono_image_open_from_data): Return 
10828         mono_image_open_from_data_full.
10829         (mono_image_open_full): Rename mono_image_open to
10830         mono_image_open_full, receiving the new refonly argument,
10831         to pass it to inner methods.
10832         (mono_pe_file_open): Update this function, to open
10833         a MonoImage as a non-refonly image.
10834         (mono_image_close): Use the refonly variable inside
10835         MonoImage to remove the image from the correct caches.
10836
10837         * image.h: Add the signatures of mono_image_open_full,
10838         mono_image_open_from_data_full, mono_image_loaded_full,
10839         mono_image_loaded_by_guid_full.
10840
10841         * metadata-internals.h: Add the ref_only field to 
10842         MonoImage.
10843         
10844 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10845
10846         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
10847         Fix the last behavior, which used to load the assemblies and
10848         extract MonoReflectionAssemblyName information, instead of
10849         extract it from the metadata tables. Needed for Reflection
10850         Only assemblies.
10851         
10852 2005-07-29  Martin Baulig  <martin@ximian.com>
10853
10854         * mono-debug-debugger.c
10855         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
10856         not initialized.
10857
10858         * mono-debug.c
10859         (mono_debug_address_from_il_offset): Check whether we have
10860         debugging support before attempting to take the lock.
10861         (mono_debug_source_location_from_address): Likewise.
10862         (mono_debug_source_location_from_il_offset): Likewise.
10863         (mono_debug_il_offset_from_address): Likewise.
10864         (mono_debug_address_from_il_offset): Likewise.
10865
10866 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
10867
10868         * class.c (mono_class_from_name_case): Add support for dynamic images.
10869         Fixes #75650.
10870
10871         * object.c (mono_class_compute_gc_descriptor): Add a workaround
10872         for #75479.
10873
10874 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
10875         
10876         * reflection.c (mono_method_get_object): Fix warning.
10877
10878 2005-07-28  Martin Baulig  <martin@ximian.com>
10879
10880         * mono-debug.c
10881         (mono_debug_add_wrapper): Also write the wrapper type.
10882
10883 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
10884
10885         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
10886         
10887         * class.c (mono_class_init): Avoid reading nested classes if the AOT
10888         data indicates the class has none.
10889
10890 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
10891
10892         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
10893         loader lock with the debugger lock. Prevents deadlocks for beagle.
10894
10895         Beagle can now run on an smp box for a weekend without any
10896         issues. Woohoo!
10897
10898 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
10899
10900         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
10901         in a module. Fixes #75629.
10902
10903 2005-07-26  Martin Baulig  <martin@ximian.com>
10904
10905         * mono-debug.c (mono_debug_add_wrapper): New static method.
10906         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
10907         interncall or a wrapper.
10908
10909         * mono-debug.h (MonoDebugWrapperData): New public typedef.
10910         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
10911         (MONO_DEBUGGER_VERSION): Bump to 51.
10912
10913         * mono-debug-debugger.c
10914         (mono_debugger_add_type): Removed this empty function.
10915         (mono_debugger_add_method): Likewise.
10916
10917 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
10918
10919         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
10920         before accessing method->slot.
10921
10922 2005-07-21  Jb Evain  <jbevain@gmail.com>
10923
10924         * reflection.c (method_encode_clauses/class): Handle filters clauses.
10925         Fixes #75010.
10926
10927 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
10928
10929         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
10930         #75587.
10931
10932 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
10933
10934         * image.h image.c: Add mono_image_get_guid () API function.
10935
10936 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
10937
10938         There were issues when multiple threads tried to load
10939         assemblies. A deadlock was created between assemblies_mutex and
10940         mono_domain_assemblies_lock. This fixes the issue by making the
10941         assembly ref counting be lock free. See bug 75586.
10942         
10943         * image.c (mono_image_close): The add ref function here was using
10944         Interlocked operations while the unref was using a mutex and a
10945         --. I don't think this was ever a bug that would be exposed in a
10946         non-pendantic way (ie, by an embedder doing a ref on one thread
10947         and an unref on another), but for the sake of correctness, this is
10948         now Interlocked.
10949
10950         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
10951         (mono_assembly_load_reference): Call mono_assembly_addref rather
10952         than touching the refcount ourselves.
10953         (mono_assembly_close): Use InterlockedDecrement to unref the
10954         assembly. Don't acquire the lock unless it is actually needed.
10955
10956 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
10957
10958         * class.c (mono_class_layout_fields): Fix calculation of has_references
10959         for generic types.
10960
10961 2005-07-12  Martin Baulig  <martin@ximian.com>
10962
10963         Applying a patch from Michal Moskal <malekith@nemerle.org>.
10964
10965         * metadata.c
10966         (mono_type_hash): Provide better hashing for generic instances.
10967         (mono_generic_inst_hash): Improve hashing.
10968         (mono_generic_class_hash): Likewise.
10969
10970         * reflection.c (mymono_metadata_type_hash): Improve hashing for
10971         generic instances.
10972
10973 2005-07-12  Martin Baulig  <martin@ximian.com>
10974
10975         * reflection.c (mono_reflection_create_runtime_class): Remove the
10976         hack for generic type definitions and non-`Run' assemblies.
10977         (mono_reflection_bind_generic_parameters): Also use
10978         `klass->wastypebuilder' to check for TypeBuilders.
10979
10980 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
10981
10982         * class.c (mono_class_layout_fields): Fix calculation of has_references
10983         for generic types.
10984
10985         * class.c (inflate_generic_class): Fix a leak.
10986         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
10987         for generic types.
10988
10989 2005-07-11  Martin Baulig  <martin@ximian.com>
10990
10991         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
10992         on error.
10993
10994 2005-07-11  Martin Baulig  <martin@ximian.com>
10995
10996         * loader.c (find_method): Also lookup in
10997         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
10998
10999 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11000
11001         * appdomain.c (mono_domain_unload): Don't free the error message
11002         before passing it to mono_get_exception_...
11003
11004         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
11005         
11006 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
11007
11008         * threads.c: try to better guess an available RT signal (bug #75387).
11009
11010 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11011
11012         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
11013         and CACHE_OBJECT.
11014
11015 2005-07-07  Martin Baulig  <martin@ximian.com>
11016
11017         * class.c (mono_type_get_name_full): Return NULL for
11018         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
11019         fixes #75408.
11020
11021 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11022
11023         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
11024         exit the appdomain as well being aborted.
11025
11026         * threadpool.c: Create all threadpool threads inside the root appdomain, and
11027         change back to the root domain after calling managed code. This enables
11028         appdomains using threadpools to be unloaded.
11029
11030 2005-07-07  Martin Baulig  <martin@ximian.com>
11031
11032         * class-internals.h
11033         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
11034         into `MonoDynamicGenericClass' since we only need it for dynamic
11035         types.
11036
11037         * reflection.c (mono_class_bind_generic_parameters): We don't need
11038         to compute the `parent' here.
11039
11040 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
11041
11042         * culture-info-table.h : regenerated.
11043
11044 2005-07-06  Martin Baulig  <martin@ximian.com>
11045
11046         * icall.c
11047         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
11048
11049         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
11050
11051 2005-07-06  Martin Baulig  <martin@ximian.com>
11052
11053         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
11054         we're doing a signature-only comparision; fixes #74945.
11055
11056 2005-07-06  Martin Baulig  <martin@ximian.com>
11057
11058         * class-internals.h (MonoGenericClass): Moved some things out into
11059         a new `MonoInflatedGenericClass' type.  
11060         (MonoInflatedGenericClass): New type; the `klass' of a
11061         `MonoGenericClass' is now computed lazyly in
11062         mono_get_inflated_generic_class().      
11063
11064         * class.c (mono_get_inflated_generic_class): New public function.
11065         (mono_class_inflate_generic_method): Removed the unused
11066         `MonoClass *' argument.
11067         (setup_generic_vtable): Don't call mono_get_inflated_method() on
11068         all the methods.
11069         (mono_class_create_generic): Make this static and merge it with
11070         mono_class_create_generic_2(); we're now called automatically from
11071         mono_get_inflated_generic_class().
11072
11073         * loader.c (mono_method_signature): Call
11074         mono_get_inflated_method() here.
11075
11076 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
11077
11078         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
11079         type of fields with RVA.
11080
11081         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
11082         for this pseudo class.
11083         (my_mono_class_from_generic_parameter): Likewise.
11084         (mono_class_init): Allow interfaces to have cctors.
11085
11086 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11087
11088         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
11089         lazily for AOT methods.
11090
11091 2005-07-05  Martin Baulig  <martin@ximian.com>
11092
11093         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
11094         returns FALSE for a successful match, not TRUE.
11095
11096 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11097
11098         * loader.c (mono_method_get_index): Optimize this a bit.
11099
11100 2005-07-04  Martin Baulig  <martin@ximian.com>
11101
11102         * class.c
11103         (class_compute_field_layout): Move the check for generic type
11104         definitions into mono_class_layout_fields().  Fixes #74684.
11105         (mono_class_from_generic_parameter): Correctly compute
11106         `klass->parent'; fixes #75457.
11107
11108         * reflection.c (register_assembly, register_module): Make sure
11109         `domain->rejobject_hash' is already created.
11110
11111 2005-07-02  Martin Baulig  <martin@ximian.com>
11112
11113         * class-internals.h
11114         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
11115         `MonoDynamicGenericClass'.      
11116
11117 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
11118
11119         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
11120         returned by a field getter is null, since null is a valid value.
11121
11122 2005-07-01  Martin Baulig  <martin@ximian.com>
11123
11124         * reflection.c (mono_reflection_generic_class_initialize): Update
11125         the `dgclass->fields [i].parent' to the correct class.
11126         (mono_image_get_fieldref_token): Use the declaring type, not the
11127         reflected type.
11128
11129 2005-07-01  Martin Baulig  <martin@ximian.com>
11130
11131         * loader.c (find_method): Also look in the interfaces; fixes #75429.
11132
11133 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
11134
11135         * threads.c (thread_cleanup): assert that thread != NULL
11136         (wait_for_tids_or_state_change): We were using the wrong variable
11137         when accessing wait->threads. `i' was always out of the bounds of
11138         the array.
11139
11140 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11141
11142         * loader.c: map user32 and kernel32 to libMonoSupportW
11143
11144 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11145
11146         * appdomain.c (unload_thread_main): Mark this as WINAPI.
11147
11148 2005-06-28  Martin Baulig  <martin@ximian.com>
11149
11150         * loader.c (method_from_methodspec): Fix #75334.
11151
11152 2005-06-28  Martin Baulig  <martin@ximian.com>
11153
11154         Fix #74953 - Arrays now implement the generic IList<T> interface
11155         on the 2.0 platform.
11156
11157         * class-internals.h (MonoDefaults): Added `generic_array_class'.
11158
11159         * reflection.c (mono_class_bind_generic_parameters): New public
11160         function; similar to mono_reflection_bind_generic_parameters(),
11161         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
11162
11163         * domain.c (mono_init_internal): Try to initialize.
11164         `mono_defaults.generic_array_class' here; this'll only succeed if
11165         we're using the 2.0 corlib.
11166
11167         * icall.c
11168         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
11169         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
11170         (mono_lookup_internal_call): Added support for nested classes.
11171
11172         * loader.c
11173         (mono_get_method_from_token): Set `result->signature->pinvoke' if
11174         we're an interncall and have generic arguments.
11175
11176         * class.c
11177         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
11178         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
11179         instance of System.Array.InternalArray<T> for arrays, so they
11180         implement the generic IList<T> interface.
11181
11182 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
11183
11184         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
11185         (chastamar@yahoo.com). Fixes #75374.    
11186
11187 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
11188
11189         * culture-info-table.h: regenerated.
11190
11191 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11192
11193         * icall.c: handle spaces correctly for base64 strings.
11194
11195 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11196
11197         * *.c: Kill some warnings.
11198
11199 2005-06-23  Duncan Mak  <duncan@novell.com>
11200
11201         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
11202         that this builds on Solaris 10 (x86).
11203
11204 2005-06-23  Martin Baulig  <martin@ximian.com>
11205
11206         * class.c
11207         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
11208         generic type definitions.
11209
11210 2005-06-23  Martin Baulig  <martin@ximian.com>
11211
11212         Fix #75331.
11213
11214         * metadata.c (mono_class_get_overrides): Renamed to
11215         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
11216         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
11217         pass it to mono_get_method_full().
11218
11219 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
11220
11221         * reflection.c (mono_reflection_create_runtime_class): take the
11222         mono_domain_lock in this method. Prevents deadlocks
11223
11224 2005-06-22  Martin Baulig  <martin@ximian.com>
11225
11226         * loader.c (method_from_methodspec): Fix #75330.
11227
11228 2005-06-22  Martin Baulig  <martin@ximian.com>
11229
11230         * reflection.c (type_get_qualified_name): Use
11231         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
11232         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
11233         argument; use it if we don't have an assembly name.
11234
11235 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
11236
11237         * object.c: In mono_message_init, set "copy out" flag for in
11238         parameters with the [Out] flag.
11239
11240 2005-06-21  Martin Baulig  <martin@ximian.com>
11241
11242         * class.c
11243         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
11244         and MONO_TYPE_PTR.
11245
11246 2005-06-21  Martin Baulig  <martin@ximian.com>
11247
11248         * class.c (mono_class_init): Don't initialize `class->fields' for
11249         generic instances since they're initialized again in
11250         compute_field_layout(). 
11251         (compute_field_layout): Set the field's `generic_info' here; fix
11252         #75320. 
11253
11254 2005-06-21  Martin Baulig  <martin@ximian.com>
11255
11256         * class-internals.h
11257         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
11258
11259         * metadata.c (mono_metadata_generic_method_equal): Also
11260         distinguish the `generic_class'; fixes #75334.
11261
11262 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11263
11264         * domain.c:
11265         * appdomain.c:
11266         * domain-internals.h:
11267         * reflection.c: 'domain_assemblies' field is now protected by its own
11268         lock. Don't call into managed code to run the AssemblyLoad event if we
11269         now there are no registered delegates for it.
11270
11271 2005-06-20  Martin Baulig  <martin@ximian.com>
11272
11273         * class.c (mono_class_is_assignable_from): Use a custom version of
11274         mono_class_has_parent() to make things work for generic instances;
11275         fix #75300.
11276
11277 2005-06-20  Martin Baulig  <martin@ximian.com>
11278
11279         * loader.c (method_from_methodspec): Apply a patch from
11280         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
11281
11282 2005-06-20  Martin Baulig  <martin@ximian.com>
11283
11284         * class.c (mono_class_init): Reverted Zoltan's last change; it
11285         breaks generics.
11286
11287 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11288
11289         * threads.c (wait_for_tids_or_state_change): Add missing locking.
11290
11291 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11292
11293         * socket-io.c: fix the index in the socket array for writable/error
11294         sockets. Fixes bug #75306.
11295
11296 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11297
11298         * class.c (mono_class_init): Allow interfaces to have static ctors.
11299
11300 2005-06-17  Martin Baulig  <martin@ximian.com>
11301
11302         * loader.c (method_from_methodspec): Use `context->container' when
11303         parsing the `gmethod->inst'.
11304
11305 2005-06-17  Martin Baulig  <martin@ximian.com>
11306
11307         * class.c (mono_type_get_name_recurse): Don't add the assembly
11308         name for type arguments.
11309
11310 2005-06-15  Martin Baulig  <martin@ximian.com>
11311
11312         * reflection.c (mono_image_get_inflated_method_token): Encode
11313         correct klass; fixes #75260.
11314
11315 2005-06-13 Michal Moskal <malekith@nemerle.org>
11316
11317         * icall.c: Make GetCorrespondingMethod/Constructor take
11318         MonoReflectionMethod method not MonoMethod. Removed
11319         MonoType.GetCorrespondingField, and make
11320         MonoGenericType.GetCorrespondingField take name not
11321         MonoClassField.
11322
11323 2005-06-13  Michal Moskal <malekith@nemerle.org>
11324
11325         * reflection.c (field_encode_signature, encode_locals):
11326          Make sizes of buffers for types larger (for big generic types).
11327          (create_generic_typespec,
11328          mono_reflection_sighelper_get_signature_local,
11329          mono_reflection_sighelper_get_signature_field):
11330          Add asserts for too small buffers.
11331
11332 2005-06-15  Martin Baulig  <martin@ximian.com>
11333
11334         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
11335         if our parent is not a dynamic type.
11336
11337 2005-06-15  Martin Baulig  <martin@ximian.com>
11338
11339         * class-internals.h (MonoTypeNameFormat): New enum.
11340
11341         * class.c
11342         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
11343         (mono_type_get_full_name): Removed.
11344         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
11345         argument instead of the boolean's.
11346
11347         * icall.c (ves_icall_System_MonoType_getFullName):
11348         Added `gboolean assembly_qualified'.    
11349
11350         * reflection.h
11351         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
11352
11353         * reflection.c (mono_reflection_parse_type): Parse the new type
11354         name format.
11355
11356 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11357
11358         * icall.c: no need to convert from utf16 to utf8 and then back again
11359         after the call to GetLogicalDrives.
11360
11361 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11362
11363         * icall.c: frombase64. Fix problems exposed by new tests.
11364
11365 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11366
11367         * icall.c: added internal calls for converting char [] and strings in
11368         base64 into byte [].
11369
11370 2005-06-10  Martin Baulig  <martin@ximian.com>
11371
11372         * class.c (mono_class_create_generic_2): Read the nested classes
11373         from the metadata rather than from `gklass->nested_classes' since
11374         `gklass' might not be initialized yet.
11375
11376 2005-06-09  Duncan Mak  <duncan@novell.com>
11377
11378         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
11379         all public headers. Fixes #74919.
11380
11381 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
11382
11383         * domain.c: The key for proxy_vtable_hash is now a pointer
11384         array. Added new GHashFunc and GCompareFunc functions for this.
11385
11386         * class.h: The list of interfaces in MonoRemoteClass is known in
11387         advance and can't grow (we create a new MonoRemoteClass if needed),
11388         so now the interface array can be allocated together with
11389         MonoRemoteClass.
11390         
11391         * object.c: Added a new method create_remote_class_key.
11392         Fixed mono_remote_class so it does not depend on
11393         mono_upgrade_remote_class.
11394         Removed extend_interface_array.
11395         Added new method clone_remote_class(), which makes a copy of a remote
11396         class and adds a new interface or class to it.
11397         mono_upgrade_remote_class() now creates a new remote class (or gets
11398         it from the cache) if an vtable upgrade is needed. In this way
11399         we make sure that other objects sharing the same remote class
11400         don't get the new vtable with unwanted interfaces.
11401         
11402         * object-internals.h:
11403         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
11404         
11405         * marshal.c: Track changes in mono_upgrade_remote_class().
11406
11407 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
11408         * icall.c: Add runtime methods for obtaining members of inflated
11409         class, which were created from supplied non-inflated members. It
11410         is used in internal Get{Method,Constructor,Field} methods in
11411         System.Type
11412
11413 2005-06-09  Martin Baulig  <martin@ximian.com>
11414
11415         * reflection.c
11416         (mono_reflection_bind_generic_method_parameters): Fix #75169.
11417
11418 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11419         * reflection.c (mono_image_basic_init): Define
11420         Version in MonoDynamicAssembly. 
11421         
11422 2005-06-08  Martin Baulig  <martin@ximian.com>
11423
11424         Fix #75136.
11425
11426         * loader.c
11427         (mono_method_signature_full): New public method; takes a
11428         `MonoGenericContext *'.
11429         (find_method): Use mono_method_signature_full() and pass the
11430         klass'es context to it.
11431
11432         * class.c (mono_class_is_inflated_method): Use
11433         mono_method_signature_full() and pass the context to it.
11434
11435 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
11436
11437         * object.c: add proper locking in mono_remote_class_vtable(),
11438         fixes possible memory corruption.
11439
11440 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
11441
11442         * marshal.c (mono_remoting_marshal_init): set
11443         initialized after initialization.
11444
11445 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
11446
11447         * locales.c : hush.
11448
11449 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
11450
11451         * object.c (extend_interface_array): fix really silly
11452         memory corrupting / comparison bug.
11453
11454 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11455
11456         * reflection.c: Functions added to support the creation
11457         of CustomAttributeData, which includes Attribute data
11458         used by ReflectionOnly methods.
11459
11460         * reflection.h:  mono_reflection_get_custom_attrs_data and
11461          mono_custom_attrs_data_construct added (functions exposed).
11462
11463          * icall.c: Added mono_reflection_get_custom_attrs_data
11464          as icall.
11465         
11466 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11467
11468         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
11469         lupus's request.
11470
11471 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
11472
11473         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
11474
11475         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
11476         dynamic DllImportAttribute.
11477
11478         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
11479         dynamic DllImportAttribute.
11480
11481         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
11482         Fixes #75162.
11483
11484 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11485
11486         * threads.c: avoid segfault when an unstarted thread is aborted.
11487
11488 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
11489
11490         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
11491         Returns the name and version of the runtime for reporting.
11492
11493 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11494
11495         * appdomain.c: bump corlib version.
11496         * object-internals.h: new field in MonoReflectionAssembly.
11497
11498 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11499
11500         * object-internals.h: Carlos forgot to add this field.
11501
11502 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11503
11504         * icall.c: Added create_version to create instances
11505         of Version of MonoReflectionAssemblyName. This change helps
11506         the AssemblyName tests to keep running fine.
11507         
11508 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
11509   
11510         * object.c (mono_method_return_message_restore): A somehow less
11511         intrusive fix for #75138.
11512
11513 2005-06-03  Raja R Harinath  <rharinath@novell.com>
11514
11515         * object.c (mono_method_return_message_restore): Fix computation
11516         of expected number of out args.
11517
11518 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11519
11520         * reflection.c (mono_image_get_method_info): Fix the case when the
11521         charset is empty.
11522
11523 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
11524
11525         * object.c: Added missing null check in
11526           mono_method_return_message_restore.
11527
11528 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
11529
11530         * reflection.c (mono_image_get_method_info): Handle the case when
11531         dllentry is empty.
11532
11533 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
11534
11535         * object.c: When creating the vtable for a proxy, take into account
11536         all inherited interfaces, not only the ones registered in
11537         iclass->interfaces. This fixs bug #74996.
11538         Also, in mono_method_return_message_restore, verify that the array
11539         of out args has the expected lengh.
11540
11541 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11542
11543         * socket-io.c: update the timeout in Poll when the call is interrupte.
11544
11545 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11546
11547         * socket-io.c: support abort/suspend in Select_internal after last
11548         change.
11549
11550 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11551
11552         * threadpool.c: remove warning.
11553
11554 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11555
11556         * icall.c:
11557         * socket-io.[ch]: Select_internal uses poll() now when available, thus
11558         removing the 1024 limit from select(). Runtime part of the fix for
11559         bug #71203.
11560
11561 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11562
11563         * socket-io.c: when resolving the addresses for the same
11564         host returned by gethostname(), get the local IPs from the interface
11565         list. Loopback addresses are discarded if the are interfaces up with
11566         non-loopback ones. Fixes bug #63265.
11567
11568 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
11569
11570         * appdomain.c, verify.c, object-internals.h, reflection.c:
11571         bumped corlib number to 36, and added new extra_flags field
11572         to ReflectionMethodBuilder and friends.  Fixes #75060.
11573
11574 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
11575
11576         * gc.c: register a new weak link only if the object is non-null
11577         (fixes bug#75047).
11578
11579 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11580
11581         * culture-info.h : short time pattern too.
11582
11583 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
11584
11585         * culture-info.h : expand long time pattern string length.
11586
11587 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11588
11589         * culture-info-table.h : update (more French date format; #72788).
11590
11591 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
11592
11593         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
11594         the method is static. Fixes #75029.
11595
11596 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
11597
11598         * reflection.c: Update the table_idx field of method builders after
11599         saving the module, since it can change. This is a workaround for
11600         bug #74914. 
11601
11602 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
11603
11604         * culture-info-table.h : update (additional French date format).
11605
11606 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11607
11608         * icall.c (ves_icall_type_Equals): Revert last change.
11609         
11610         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
11611
11612         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
11613
11614 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
11615
11616         * class-internals.h: Added executioncontext_class field to 
11617         MonoDefaults structure.
11618         * domain.c: Cache System.Threading.ExecutionContext class in 
11619         mono_defaults.
11620         * object.c: Capture the ExecutionContext for asynchroneous calls in
11621          mono_async_result_new.
11622         * object-internals.h: Added execution_context and original_context 
11623         fields to MonoAsyncResult. Added execution_context to MonoThread.
11624         * security-manager.c|.h: Added mono_get_context_capture_method to 
11625         return the capture method (if required by the security manager or by
11626         the framework version used).
11627         * threadpool.c: Apply capture (if present) ExecutionContext in 
11628         mono_async_invoke and revert to original context after it completes.
11629
11630 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
11631
11632         * culture-info-table.h : updated (real hacky solution for zh-CHT).
11633
11634 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
11635
11636         * culture-info-table.h : zh-CHT related workaround.
11637
11638 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11639
11640         * marshal.c (emit_marshal_custom): Add some error checking and call the
11641         methods in the ICustomMarshaler interface. Fixes #74875.
11642         
11643         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
11644         native->managed wrappers.
11645
11646 2005-05-12  Martin Baulig  <martin@ximian.com>
11647
11648         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
11649         here and use the loader lock.
11650
11651         * mono-debug.c: Properly lock when the debugger is not attached.
11652         (mono_debug_init): Release the initial lock if we're not running
11653         in the debugger.
11654
11655 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
11656
11657         * marshal.c (emit_marshal_custom): Pass through NULL values without
11658         calling the custom marshalling routines.
11659
11660         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
11661         conversion in structures. Fixes #74882.
11662
11663 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
11664
11665         * culture-info-table.h : zh-* cultures were missing.
11666
11667 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
11668
11669         * threads.c: Added a new event background_change_event which is signaled
11670         when a thread changes its background mode.
11671         Moved here several checks previously done in managed code. The checks
11672         require the thread lock, and using the thread lock in managed code
11673         can result in deadlocks.
11674         Merged Start_internal and Thread_internal into a single method. Now 
11675         Thread_internal does all work of creating and starting a thread.
11676         Added icalls for setting and getting the state of the object. Moved from
11677         managed code to avoid locking there.
11678         Added wait_for_tids_or_state_change() which is called instad of
11679         wait_for_tids when waiting for non-backround threads to end. This method
11680         will return if one of the threads ends or the background_change_event
11681         is signaled.
11682         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
11683         the background mode. This method signals the background_change_event
11684         event.
11685         * icall.c:
11686         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
11687         removed Start_internal.
11688         
11689 2005-05-11  Martin Baulig  <martin@ximian.com>
11690
11691         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
11692         to order of some fields to get proper alignment on 64-bit machines.
11693
11694 2005-05-11  Martin Baulig  <martin@ximian.com>
11695
11696         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
11697         changes as they're broken and completely fuck up the debugger.
11698
11699         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
11700
11701 2005-05-10  Martin Baulig  <martin@ximian.com>
11702
11703         * reflection.c (mono_reflection_generic_class_initialize): Don't
11704         call mono_class_setup_parent() here.
11705
11706 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11707
11708         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
11709         send/receive timeout use an integer in milliseconds. We were using a
11710         struct timeval.
11711
11712 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11713
11714         * locales.c:
11715         (internal_get_cultures): reserve the first slot of the array for the
11716         InvariantCulture, which will be filled in managed code.
11717
11718 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
11719
11720         * reflection.c (mono_image_fill_module_table): Initialize the
11721         GENERATION field as well.
11722
11723 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11724
11725         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
11726         Monitor.Enter on the object.
11727
11728 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11729
11730         * threads.c: Enable the wait for running threads when exiting.
11731         * icall.c: Suspend all threads before exiting.
11732
11733 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11734
11735         * assembly.c (mono_assembly_load_reference): Fix warning.
11736
11737 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11738
11739         * threadpool.c: changed the default number of threads per cpu. From now
11740         on, the default will be 20 + (5 * number of cpus) instead of 50.
11741
11742 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
11743
11744         * loader.c (mono_method_get_signature_full): Add locking here.
11745
11746 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
11747
11748         * appdomain.c: Moved methods for parsing and freeing assembly
11749         names to assembly.c.
11750         * assembly.c, domain-internals.h: Created public methods for parsing
11751         assembly names. Fixed mono_assembly_load_with_partial_name:
11752         it now finds the best match, taking into account the version,
11753         token and culture specified in the partial name. Also return
11754         the latest version if no version information is specified.
11755
11756 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
11757
11758         * threadpool.c: replace check for SocketAsyncCall class.
11759
11760 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11761
11762         * threadpool-internals.h:
11763         * Makefile.am: added threadpool-internals.h
11764
11765         * threadpool.c: call mono_unhandled_exception on exceptions not handled
11766         that happen in threadpool threads (tested on MS).
11767         (mono_thread_pool_remove_socket): new function that dispatch any pending
11768         AIO call on a socket that is closing. By now only epoll really needs it,
11769         as select/poll wake up when the socket closes.
11770
11771
11772         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
11773
11774 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
11775
11776         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
11777
11778 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
11779
11780         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
11781
11782 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
11783
11784         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
11785         has an abort request, convert it into a suspend request.
11786
11787 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
11788
11789         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
11790         warning for the usage of `UnmanagedFunctionPointerAttribute' which
11791         is not supported yet.
11792
11793 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11794
11795         * image.c: register assemblies loaded from data (bundles) in the loaded
11796         assemblies hash. Fixes bug #74772.
11797
11798 2005-04-29  Martin Baulig  <martin@ximian.com>
11799
11800         * class.c (mono_type_get_name_recurse): Update to the new naming
11801         schema from the latest .NET 2.x beta2.
11802         (mono_class_setup_vtable_general): If we're a generic instance,
11803         copy the vtable from our generic type definition and inflate all
11804         the methods in it.
11805
11806         * loader.c (find_method): Update to the new naming schema from the
11807         latest .NET 2.x beta2.
11808
11809 2005-04-29  Raja R Harinath  <harinath@gmail.com>
11810
11811         * class.c (mono_class_init): Add a mono_loader_unlock to the
11812         #74734 fix.
11813
11814 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11815
11816         * icall.c (ves_icall_System_Environment_Exit): Remove the 
11817         suspend_all_other_threads () call for the time being, since it can hang.
11818
11819         * threads.c (mono_thread_manage): Similarly, disable the waiting for
11820         the background threads to exit, since it can also hang.
11821
11822         * class.c (mono_class_init): Applied patch from Ankit Jain 
11823         (radical@gmail.com). Avoid pending init errors when a field refers
11824         to a nested class using a typeref. Fixes #74734.
11825
11826         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
11827         this for dynamic modules.
11828
11829 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11830
11831         * threads.c: don't wait for threads that are in the process of aborting
11832         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
11833         and waiting for background threads to finish. This makes xsp and
11834         mod-mono-server exit without random length delays and/or hangs.
11835
11836 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11837
11838         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
11839
11840 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
11841
11842         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
11843         dynamic types to prevent infinite loops. Fixes #74727.
11844
11845         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
11846         ..._is_assignable_to.
11847
11848 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
11849
11850         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
11851
11852 2005-04-25  Martin Baulig  <martin@ximian.com>
11853
11854         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
11855
11856         * domain.c
11857         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
11858
11859         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
11860
11861         * reflection.c (build_compressed_metadata): Set metadata header
11862         version to 2.0.
11863
11864 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11865
11866         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
11867         number into an integral and a decimal part. Fixes #70473.
11868
11869         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
11870
11871 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
11872
11873         * culture-info-table.h : reflected the latest locale-builder output.
11874
11875 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11876
11877         * threadpool.c: check for SuspendRequested too when deciding if
11878         mono_thread_interruption_checkpoint should be called.
11879
11880 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11881
11882         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
11883         * threads.c: remove interruption_mutex and use Interlocked instead. When
11884         suspending all the threads, wait for all the suspended events at once.
11885         If we're shutting down and get an APC that is going to be queued,
11886         call mono_thread_execute_interruption immediately, as the thread might
11887         be sleeping on a pthread condition or mutex.
11888
11889         * icall.c: call mono_runtime_set_shutting_down before suspending the
11890         threads.
11891
11892         Fixes bug #74693. And now xsp is happier when exiting.
11893
11894 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11895
11896         * loader.c (mono_stack_walk): Fix #74690.
11897
11898 2005-04-22  Martin Baulig  <martin@ximian.com>
11899
11900         * mono-debug.h (MonoDebugMethodJitInfo): Added
11901         `MonoDebugMethodJitInfo *jit'.
11902
11903         * mono-debug.c (mono_debug_read_method): Cache the
11904         MonoDebugMethodJitInfo in `address->jit'.
11905         (mono_debug_free_method_jit_info): New public method.
11906
11907 2005-04-22  Martin Baulig  <martin@ximian.com>
11908
11909         * class.c (mono_class_is_assignable_from): Disallow
11910         type parameter -> interface.
11911
11912 2005-04-21  Dick Porter  <dick@ximian.com>
11913
11914         * threads.c (mono_thread_create): Turn an assertion into an error.
11915
11916 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11917
11918         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
11919         
11920         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
11921         Fix some gcc 4.0 warnings.
11922
11923 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
11924
11925         * file-io.c: fix alt dir separator char on unix systems
11926         and cleanup (fixes bug #71214).
11927
11928 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
11929
11930         * marshal.c: Use CALLVIRT instead of CALL when dispatching
11931         a call to a remote domain, since the method may be an
11932         interface method in the client domain. This fixes bug #74192.
11933
11934 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11935
11936         * threadpool.c: recv/send are now performed before going back to managed
11937         code to save one transition.
11938
11939 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11940
11941         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
11942
11943         * metadata/threadpool.c: removed hack to workaround the bug above.
11944
11945         Fixes bug #74618.
11946
11947 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
11948
11949         * reflection.c reflection.h: Fix handling of parameter defaults in
11950         dynamic methods. Also fixes handling of parameter attributes.
11951         Fixes #74609.
11952
11953         * mono-debug.c (mono_debug_close_image): Fix warning.
11954
11955 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11956
11957         * socket-io.h: replaced old unused field with new 'blocking'.
11958         * threadpool.c: restore socket blocking state on windows(tm).
11959
11960 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
11961
11962         * icall.c: don't return the codebase in the AssemblyName[] returned by
11963         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
11964         * object-internals.h: Removed FIXME (fields were presents) and fixed
11965         versioncompat declaration.
11966
11967 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11968
11969         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
11970         not closed, so don't cleanup when it happens.
11971
11972 2005-04-13  Chris Toshok  <toshok@ximian.com>
11973
11974         * mono-debug-debugger.h: change prototype for
11975         mono_debugger_lookup_type.
11976
11977         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
11978         this function, although it should probably be named
11979         mono_debugger_init_type.
11980
11981 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11982
11983         * threadpool.c: fix non-AIO case.
11984
11985 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
11986
11987         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
11988         the built-in profiler to measure just JIT compilation times.
11989
11990 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11991
11992         * threadpool.c: the epollfd might be closed by another thread at
11993         any time, so ignore EBADF at treat it as a "we're closing" sign.
11994
11995 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11996
11997         * threadpool.c: release the semaphores with a count equals to the number
11998         of working threads in both IO and regular pools. Fixed typo that messed
11999         up the count of IO pool threads. Don't initialize the pipe handles if
12000         we're using epoll.
12001
12002 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12003
12004         * threadpool.c: some systems don't like a NULL when deleting the socket
12005         from epoll.
12006
12007 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12008
12009         * threadpool.c: fix semaphore allocation.
12010
12011 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12012
12013         * threadpool.c: added epoll() based implementation for asynchronous IO
12014         that is used instead of the default poll() when available.
12015         It can be disabled by setting MONO_DISABLE_AIO.
12016
12017 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12018
12019         * threadpool.c: windows needs 'closesocket' and instead of returning
12020         0 when the stream is closed while in select, it returns -1. Fixes bug
12021         #74573.
12022
12023 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
12024
12025         * class.c (class_compute_field_layout): Fix the regression caused by
12026         the previous try.
12027
12028 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12029
12030         * threadpool.c: separate pool for socket async. IO.
12031         * threadpool.h: mono_max_worker_threads is not a global any more.
12032
12033 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
12034
12035         * class.c (class_compute_field_layout): Fix #74549.
12036
12037 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12038
12039         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
12040         use 2 connected sockets instead.
12041
12042 2005-04-08  Miguel de Icaza  <miguel@novell.com>
12043
12044         * mono-config.c: Add new entry point for mkbundle
12045         mono_config_parse_memory. 
12046
12047 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12048
12049         * threadpool.c: removed another unused function.
12050
12051 2005-04-08  Ankit Jain  <radical@corewars.org>
12052
12053         * reflection.c (get_default_param_value_blobs): Add 'types'
12054         parameter to get the types encoded in the constant table.
12055         (mono_param_get_objects): Use the type from the constant table,
12056         not the type of the parameter, when creating default values.
12057         Handle null default values correctly.
12058
12059 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12060
12061         * file-io.c:
12062         * file-io.h:
12063         * threadpool.c:
12064         * threadpool.h:
12065         * icall.c:
12066         * socket-io.c: removed dead code for async IO.
12067
12068 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12069
12070         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
12071
12072         * threadpool.c: intercept socket async. calls and pass them to a thread
12073         that is polling and dispatching the job items to the threadpool as
12074         socket become ready. Fixes bugs #71217, #71933.
12075
12076         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
12077         between char and short/ushort arrays.
12078
12079         * socket-io.c: remove dead code.
12080
12081 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12082
12083         * locales.c,
12084           icall.c : removed InternalToUpper_Comp() and
12085           InternalToLower_Comp().
12086
12087 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
12088
12089         * char-conversions.h : The tables were incorrectly generated. Should
12090           be generated against invariant culture.
12091
12092 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
12093
12094         * object.c (mono_runtime_invoke_array): Fix return value when 
12095         passing pre-created valuetype objects to ctors.
12096
12097         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
12098         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
12099         Fixes #74338.
12100
12101 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
12102
12103         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
12104         only used with --security and hides the wrong corlib version error.
12105
12106 2005-03-30  Joshua Tauberer  <tauberer@for.net>
12107
12108         * class.c: Changed mono_class_name_from_token so that types
12109         outside of a namespace don't have an initial period.  Improved
12110         the g_warning message used in _mono_class_get when loading
12111         fails.
12112         * assembly.c: In mono_assembly_load_reference, when an assembly
12113         can't be found, "No such file or directory" is misleading and
12114         unhelpful because a few paths were checked for the presence of
12115         the assembly.  When that happens (ENOENT), display a nicer
12116         message indicating the directories that were searched.  In all
12117         cases, the warning is made easier to read for non-hackers.
12118
12119 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
12120
12121         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
12122         project/solution.
12123         * appdomain.h|domain.c: Removed inline from functions.
12124         * appdomain.c: Reduced warnings when compiling on windows.
12125         * icall.c: Fixed output_debug declaration to gunichar2*.
12126         * mono-config.c: Reduced warnings when compiling on windows.
12127         * rand.c: Added missing "windows.h". Added missing return value.
12128         * rawbuffer.c: Added missing winsock2.h for windows.
12129         * sysmath.h: Added mono-compiler.h header to allow/ease 
12130         compilation with non-GCC compilers.
12131         * threads.c: Fixed declarations to compile with VS.NET C compiler.
12132         Removed cast warnings.
12133
12134         Adapted from the work of J Lothian (for VC6).
12135
12136 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
12137
12138         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
12139         from default_path.
12140
12141 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
12142
12143         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
12144         the 2.0 profile.
12145
12146 2005-03-27  Raja R Harinath  <harinath@gmail.com>
12147
12148         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
12149         has to be in $(exec_prefix).  $(prefix) is for arch-independent
12150         stuff, and it would probably use $(prefix)/share rather than
12151         $(prefix)/lib.
12152
12153 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12154
12155         * console-io.c: added 2 includes that might be missing.
12156
12157 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
12158
12159         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
12160         profile.
12161
12162         * reflection.c (create_custom_attr): Allocate the params array using
12163         alloca so it gets GC tracking.
12164
12165 2005-03-23  Chris Toshok  <toshok@ximian.com>
12166
12167         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
12168         out some spew.
12169
12170 2005-03-24  Raja R Harinath  <rharinath@novell.com>
12171
12172         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
12173         changes to pick up any changes in prefix, etc.
12174
12175 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12176
12177         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
12178         
12179         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
12180         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
12181
12182 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
12183
12184         * class-internals.h object-internals.h class.c reflection.c: Extend the
12185         mono_lookup_dynamic_token () function to return the class of the
12186         token as well. 
12187
12188         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
12189         well. Fixes #73848.
12190
12191 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
12192
12193         * security-manager.c: Skip inheritance checks for intra-corlib
12194         class inheritance and method overrides. This skips a lot of checks
12195         and (anyway) permissions cannot work until corlib is loaded.
12196
12197 2005-03-23  Martin Baulig  <martin@ximian.com>
12198
12199         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
12200         MONO_TYPE_GENERICINST.  
12201
12202 2005-03-23  Martin Baulig  <martin@ximian.com>
12203
12204         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
12205
12206 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12207
12208         * class.c: added locking comments to some functions.
12209         Cache the interface offsets arrays (saves about 20 KB
12210         of runtime memory in a typical app).
12211         Reduce the time overhead in mono_class_setup_supertypes ().
12212
12213 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
12214
12215         * icall.c: speedup and fix leaks in GetMethodsByName and
12216         GetPropertiesByName.
12217
12218 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12219
12220         * reflection.c: some locking fixes.
12221
12222 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12223
12224         * metadata.c: added missing break in case statement.
12225
12226 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
12227
12228         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12229         typedbyref return values. Fixes #73941.
12230
12231 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
12232
12233         * security-manager.c|h: Added demandunmanaged method and 
12234         suppressunmanagedcodesecurity class to MonoSecurityManager.
12235         Renamed aptc class to allowpartiallytrustedcallers.
12236
12237 2005-03-17  Martin Baulig  <martin@ximian.com>
12238
12239         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
12240
12241 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12242
12243         * file-io.c: disabled file async. IO using aio_*. It uses the
12244         threadpool now. Workaround for bug #73718.
12245
12246 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12247
12248         * assembly.h, mono-config.c: added code to deal with bundled configs
12249         for bundled assemblies.
12250
12251 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
12252
12253         * *.c, private.h: cleanup, removing old private.h header file.
12254
12255 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
12256
12257         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
12258         and throw_on_unmappable_char attributes.
12259
12260 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
12261
12262         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
12263         _ProcessName_internal.
12264
12265 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
12266
12267         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
12268         #73631.
12269
12270         * icall.c threads.c threads-types.h: Remove slothash icalls as they
12271         are no longer used.
12272
12273 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
12274
12275         * object.c (compute_class_bitmap): Add support for generics. Fixes
12276         #73527.
12277
12278 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12279
12280         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
12281
12282 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12283
12284         * filewatcher.c: commented out the code for windows watcher, as we don't
12285         use it (we use the managed implementation instead).
12286
12287 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
12288
12289         * object-internals.h (MonoThread): Remove 'unused1' field.
12290
12291         * appdomain.c: Bump corlib version.
12292
12293         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
12294
12295         * reflection.c (mono_reflection_create_runtime_class): Remove the
12296         AssemblyBuilder.Save optimization since it causes too many problems.
12297
12298 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
12299
12300         * exception.c|h: Added mono_get_exception_reflection_type_load to
12301         create a ReflectionTypeLoadException object.
12302         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
12303         to return NULL is a InheritanceDemand fails during reflection. Updated
12304         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
12305         ReflectionTypeLoadException if an InheritanceDemand fails during 
12306         reflection. Added icall mapping for GetLinkDemandSecurity.
12307         * security-manager.c|h: Added ves_icall_System_Security_
12308         SecurityManager_GetLinkDemandSecurity internal call to return the
12309         class and methods permissions set for a LinkDemand. Removed unused
12310         fields in MonoSecurityManager.
12311
12312 2005-03-10  Martin Baulig  <martin@ximian.com>
12313
12314         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
12315         it's a generic instance.
12316
12317 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
12318
12319         * reflection.c (mono_get_object_from_blob): Applied patch from
12320         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
12321
12322         * class.c (mono_class_is_assignable_from): Another try at fixing 
12323         #73469 without breaking anything.
12324
12325 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12326
12327         * class.c: (mono_class_is_assignable_from): Revert the last changes
12328         since they don't work with generics.
12329         
12330         * class.c (mono_class_is_assignable_from): Fix build bustage.
12331
12332         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
12333         the managed IsAssignableFrom method. Fixes #73469.
12334
12335         * reflection.c (mono_reflection_call_is_assignable_from): New helper
12336         function.
12337
12338 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12339
12340         * object.c (mono_load_remote_field_new): Fix returning uninitialized
12341         memory when the remoting callback does not sets the out arguments.
12342         Fixes #73007.
12343
12344         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
12345         by mistake.
12346
12347         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
12348
12349         * object-internals.h (MonoStackFrame): Sync with managed object layout.
12350
12351         * appdomain.c: Bump corlib version.
12352
12353 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12354
12355         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
12356         function.
12357
12358         * threads.c (mono_thread_attach): Detect threads which are not started
12359         by the GC pthread wrappers.
12360
12361 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
12362
12363         * icall.c: Added new icall for RNG.
12364         * rand.c|h: Added new icall to open the RNG. This allows to share a 
12365         single handle on Linux to access /dev/urandom and fix #73183.
12366
12367 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
12368
12369         * object.c: setting the new vtable in a transparent proxy object must
12370         not change the GC descriptor.
12371
12372 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12373
12374         * object.c: fixed compilation without GCJ support.
12375         * reflection.c: for runtime-created types ensure klass->has_references
12376         is correct (bug #73215).
12377
12378 2005-03-02  Martin Baulig  <martin@ximian.com>
12379
12380         * class.c (mono_class_is_assignable_from): Make this work if
12381         `oklass' is a generic instance; fixes #72831.
12382
12383 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12384
12385         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
12386         with hasthis set.
12387         
12388         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
12389
12390         * marshal.c: Reorganize native->managed marshalling code to also use
12391         the emit_marshal_... functions.
12392
12393 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12394
12395         * object.c: typed allocs have issues with bitmap sizes > 30,
12396         so check for max_set >= 30.
12397
12398 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
12399
12400         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
12401         managed code. Fixes #73012.
12402
12403         * metadata.h (MonoMarshalSpec): Add elem_mult field.
12404
12405         * metadata.c reflection.c: Load/Emit elem_mult as well.
12406         
12407         * metadata.h (MonoMarshalSpec): Add comment.
12408
12409         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
12410
12411         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
12412         num_elem to -1 if not given.
12413
12414         * object-internals.h (MonoReflectionMarshal): Add has_size field.
12415
12416         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
12417         given values.
12418
12419 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
12420
12421         * null-gc.c (mono_gc_free_fixed): Was not compilable.
12422
12423 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
12424
12425         * reflection.c (encode_marshal_blob): Encode param_num field as well.
12426
12427         * object-internals.h (MonoReflectionMarshal): Add param_num field.
12428
12429 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
12430
12431         * object.c: generalized the reference bitmap creation
12432         and added hooks for the new GC.
12433         * class-internals.c: removed the gc_bitmap field from MonoClass.
12434
12435 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12436
12437         * domain.c: help the compiler to produce better code
12438         in mono_jit_info_table_find ().
12439
12440 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12441
12442         * object.c: make all allocations look typed.
12443
12444 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12445
12446         * socket-io.c: load Mono.Posix if it's not loaded already
12447         (fixes bug#73033).
12448
12449 2005-02-24  Martin Baulig  <martin@ximian.com>
12450
12451         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
12452         * reflection.c (dup_type): Likewise.
12453
12454 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
12455
12456         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
12457         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
12458
12459 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12460
12461         * domain.c, threads.c, object-internals.h: make the critical thread
12462         local vars use the fast access mode (even when we're compiled in
12463         a lib). Provide accessors to be used by the jit during codegen.
12464
12465 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12466
12467         * appdomain.c: Changed hook functios behavior to include
12468         support for the reflection only assemblies. Some icalls were changed
12469         to support the mentioned assemblies too. Signatures of static methods
12470         try_assembly_resolve and real_load now have an additional parameter:
12471         refonly.
12472
12473         * assembly.c: General changes to mono_assembly_ methods to support
12474         reflection only api. Functions mono_assembly_open, mono_assembly_load,
12475         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
12476         suffix, to support an additional gbool parameter to specify whether
12477         the assembli is reflection only or not. Created some new hook functions 
12478         to add support for reflection only assemblies. Signatures of static 
12479         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
12480         have now an additional parameter: refonly.
12481
12482         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
12483         indicating whether the assembly is reflection only or not.
12484
12485         * exception.c: Add mono_get_exception_invalid_operation.
12486
12487         * icall.c: Throw an InvalidOperationException when trying to invoke
12488         a property/method/event, or trying to set/get the value of a field.
12489         Also add an icall to retrieve the ref_only flag to the
12490         MonoReflectionAssembly.
12491
12492 2005-02-23  Chris Toshok  <toshok@ximian.com>
12493
12494         Part of fix for #72827.
12495         * mono-debug.c (mono_debug_add_method): add lexical block data to
12496         the info we write.  Kind of a hack at the moment - we copy the
12497         lexical block info from the MonoDebugMethodInfo to the
12498         MonoDebugMethodJitInfo here, before writing it.
12499         (mono_debug_read_method): read the lexical block info.
12500
12501         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
12502
12503         * debug-mono-symfile.h: add lexical block support.
12504
12505         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
12506         support.
12507
12508 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12509
12510         * loader.c (mono_lookup_pinvoke_call): Fix warning.
12511
12512         * object.c (mono_runtime_free_method): Call mono_free_method () and
12513         put the TODOs there.
12514
12515         * loader.c (mono_free_method): Free up most memory allocated for 
12516         dynamic methods.
12517
12518 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12519
12520         * reflection.c: properly flag a Type argument to a
12521         named custom attr value (bug #72248).
12522
12523 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12524
12525         * reflection.c: reduce code duplication in named custom
12526         attribute encoding.
12527
12528 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
12529
12530         * reflection.c: properly encode custom attrs of type object
12531         (bug #72649).
12532
12533 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12534
12535         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
12536
12537 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
12538
12539         * socket-io.c: load System.dll if it's not loaded already
12540         (bug #72850 and #70477).
12541
12542 2005-02-21  Martin Baulig  <martin@ximian.com>
12543
12544         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
12545         generic instances.
12546
12547 2005-02-21  Martin Baulig  <martin@ximian.com>
12548
12549         * reflection.c (mono_image_build_metadata): We also need to
12550         "fixup" the MethodImpl table after we computed the final method
12551         indices.  Call fixup_methodimpl() to do that.
12552         (fixup_methodimpl): New private method.
12553
12554 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
12555
12556         * assembly.c: special case mscorlib.dll (bug#72536),
12557         patch from Carlos Alberto Cortez.
12558
12559 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12560
12561         * threads-types.h threads.c: Fix build bustage.
12562
12563         * threads.c: Use a union for long<->double conversions.
12564
12565         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
12566         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
12567
12568         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
12569         containing the checkpoint call with NOT_TAKEN.
12570         
12571         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
12572         checkpoint before pushing the arguments, so they won't have to be
12573         spilled to stack.
12574
12575 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12576
12577         * domain.c, assembly.c, domain-internals.h: make some data
12578         const and relocation-free.
12579
12580 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12581
12582         * object.c, appdomain.c, class-internals.h: introduce the
12583         MonoClassRuntimeInfo structure to hold the info needed to
12584         use a class at runtime. Made mono_class_vtable() lock-free
12585         for all the appdomains.
12586
12587 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
12588
12589         * metadata-internals.h, image.c: introduce a per-image mempool to
12590         be used for memory that has the same lifetime as the image.
12591
12592 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
12593
12594         * domain.c: In mono_init_internal(), instead of selecting the first
12595         runtime version supported by an executable, get a list of all
12596         supported versions and select the one for which an mscorlib exists
12597         (since even if the runtime supports a given version, it doesn't mean
12598         that the framework for that version is installed).
12599         Modified get_runtimes_from_exe to support this behavior.
12600         In supported_runtimes, added information about additional system
12601         assembly versions.
12602         
12603         * assembly.c: Added support for more than one system assembly version
12604         per runtime version. Updated the assembly list.
12605         In mono_assembly_remap_version, removed the initial version check,
12606         since we don't know to which version we need to compare until we
12607         get the version set on which the assembly is based.
12608         Moved the code for loading corlib into the new method
12609         mono_assembly_load_corlib(), so it can be used by the initialization
12610         code.
12611         
12612         * domain-internals.h: Updated data structures and added declaration
12613         for mono_assembly_load_corlib.
12614
12615 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12616
12617         * reflection.c (resolve_object): Fix the creation of the signature in 
12618         the SignatureHelper case.
12619
12620         * assembly.c (mono_assembly_remap_version): Fix binary search.
12621         
12622 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
12623  
12624         * class.c: Added inheritance check when a method is overloaded (from a
12625         virtual method or when implementing an interface) and when a class is
12626         inherited. Added functions to set a failure for a class and to 
12627         retreive the exception from a failure.
12628         * class-internals.h: Added fields to MonoClass to keep the exception
12629         information status for inheritance (or other exceptions) to be thrown
12630         later (i.e. not at load time).
12631         * object.c: Throw the inheritance SecurityException when a type is to 
12632         be created with either class or method inheritance violations.
12633         * reflection.c|h: Fix when getting declsec from a class. Removed 
12634         unrequired code for class. Improved sanity in parameter naming.
12635         * security-manager.c|h: Added functions to check for class and method
12636         inheritance.
12637
12638 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12639
12640         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
12641         and has_finalize in dynamic types as well.
12642
12643 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
12644
12645         * culture-info-table.h : fixed currency format for en-GB (and so on).
12646
12647 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
12648
12649         * gc.c: ensure the GC handles never have 0 as a value.
12650
12651 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12652
12653         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
12654         a pointer to a struct to unmanaged code. Fixes #72625.
12655
12656 2005-02-16  Martin Baulig  <martin@ximian.com>
12657
12658         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
12659
12660 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
12661
12662         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
12663
12664 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12665
12666         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
12667
12668         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
12669         UnmanagedFunctionPointerAttribute, use it for determining calling convention
12670         etc. Fixes #71471.
12671
12672         * reflection.c (mono_custom_attrs_get_attr): New helper function.
12673
12674         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
12675
12676 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
12677
12678         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
12679         changes to make the current context a field in MonoThread.
12680
12681 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
12682
12683         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
12684         the last change.
12685         
12686         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
12687         extracted from mono_marshal_get_native_wrapper.
12688
12689         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
12690         to create wrappers around native functions.
12691
12692         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
12693         delegates for arbitrary function pointers. Fixes #71472.
12694
12695 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
12696
12697         * threads.c: cleaned up the code a little.
12698
12699 2005-02-15  Martin Baulig  <martin@ximian.com>
12700
12701         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
12702         the data table.
12703
12704         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
12705         allocate larger chunks if needed.
12706
12707 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12708
12709         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
12710         in by mistake.
12711
12712 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
12713
12714         * domain.c: keep the domains in an array and ensure the domain ids
12715         are kept small, so they can be used as indexes to domain-specific data
12716         with a small memory overhead.
12717
12718 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12719
12720         * icall.c: Handle byref types in Type icalls. Fixes #72544.
12721
12722 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
12723
12724         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
12725
12726 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12727
12728         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
12729
12730         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
12731         values.
12732
12733         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
12734         
12735 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12736
12737         * domain-internals.h: add the hashtable here.
12738
12739         * class-internals.h: Remove `info' from MonoMethod
12740
12741         * domain.c: Add a new hashtable, jit_trampoline_hash
12742
12743 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12744
12745         * object.c: don't set the value of static fields
12746         (fixes bug#72494).
12747
12748 2005-02-11  Martin Baulig  <martin@ximian.com>
12749
12750         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
12751         (mono_debug_add_method): Silently ignore the method if it's too big.
12752         (mono_debug_add_type): Likewise.
12753
12754 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
12755
12756         * threads.c, appdomain.c: remove #ifdefs from the code.
12757
12758 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12759
12760         * metadata-internals.h: Added flags to MonoAssembly to cache the most
12761         common security informations. This allows us to stay in unmanaged code
12762         when doing LinkDemand and it's special cases (except for the first 
12763         time for initialization). The flags a very much used with --security.
12764         * reflection.c|h: Added code to get declarative security attributes 
12765         for LinkDemand and InheritanceDemand. This required to refactor the
12766         existing code for Demand.
12767         * security-manager.c|h: Added new method fields for the special cases
12768         of LinkDemand.
12769
12770 2005-02-10  Martin Baulig  <martin@ximian.com>
12771
12772         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
12773         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
12774
12775 2005-02-10  Martin Baulig  <martin@ximian.com>
12776
12777         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
12778         debugging code; this is almost a complete rewrite.
12779
12780         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
12781
12782 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12783
12784         * domain.c, object.h: expose mono_string_equal () and 
12785         mono_string_hash ().
12786         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
12787         it's implemented in managed code.
12788
12789 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12790
12791         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
12792         lo leak objects between appdomains.
12793
12794 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12795
12796         * assembly.c: old compilers compilation fix from 
12797         robertj@gmx.net (Robert Jordan).
12798
12799 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
12800
12801         * class-internals.h: Little reminder for the future.
12802
12803         * debug-helpers.c: Fix up wrapper_type_names
12804
12805 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12806
12807         * image.c, metadata-internals.h: when loading an image from a file,
12808         mmap all of it and use the same codepaths as when using a
12809         in-memory image: the code is simpler and we use less memory
12810         (both writable and readonly).
12811
12812 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12813
12814         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
12815         API to alloc runtime data structures that need to be tracked by the
12816         GC and contain pointers.
12817         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
12818         make the code more readable and eventually use a different GC.
12819
12820 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
12821
12822         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
12823         for out arguments.
12824         
12825 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
12826
12827         * object.c: In release_type_locks(), don't release the cctor lock
12828         if it has already been released. This fixes a crash in the
12829         thread5 test.
12830
12831 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12832
12833         * gc.c, marshal.c, icall.c: register a delegate for finalization
12834         only when the native function pointer has been allocated for it.
12835
12836 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12837
12838         * object.c: cleaned up some code, allocate objects that are
12839         pointer free with the atomic malloc variant. Allocate memory
12840         for static data from the mempool if it's pointer-free.
12841         Allocate the bounds array at the end of the array data, when needed.
12842         * object-internals.h, object.h: move a private function in a private
12843         header.
12844         * class.c: handle missing case in tracking references in fields.
12845
12846 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
12847
12848         * class.c, class-internals.h: keep track if a type has
12849         reference fields in either the instance or static fields.
12850
12851 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
12852
12853         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
12854         and renamed to MonoRuntimeInfo. Added fields to store the expected
12855         framework assembly version. Changed mono_get_framework_version and
12856         mono_get_runtime_version for a single mono_get_runtime_info method.
12857         
12858         * assembly.c: Added method to remap system assembly versions to the
12859         current executing runtime version. Removed old mapping code.
12860         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
12861         
12862         * icall.c, reflection.c: Track api changes.
12863
12864 2005-02-06  Miguel de Icaza  <miguel@novell.com>
12865
12866         * loader.c (method_from_memberref): Improve error reporting,
12867         produce the class name instead of the typeref/typedef index. 
12868
12869 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
12870
12871         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
12872
12873 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12874
12875         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
12876         stdcall and charset name mangling.  Reorganize the code and add
12877         some tracing stuff.
12878
12879 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
12880
12881         * monodiet.c: More iters!
12882
12883         * marshal.c: Iter usage.
12884
12885         * icall.c: Iter usage.
12886
12887         * object.c: Use iters.
12888
12889         * debug-helpers.c: More iters
12890
12891 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12892
12893         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
12894         under win32.
12895
12896 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
12897
12898         * mono-debug-debugger.c: use iters
12899
12900         * class.c, class-internals.h: mono_class_setup_events is static
12901         now
12902
12903         * All callers: use iters
12904
12905 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12906
12907         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
12908         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12909
12910 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12911
12912         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
12913
12914         * marshal.h: Add prototypes for ldfld/stfld_remote.
12915
12916         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
12917         this is called during startup.
12918         
12919 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12920
12921         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
12922         MonoThreadsSync struct private in monitor.c. Changed the way
12923         MonoThreadsSync is allocated so it's faster and there is no
12924         need to keep track of it with a finalizer and it uses less memory.
12925         This also finally allows us to allocate mono objects as ptrfree when
12926         there are no reference fields.
12927
12928 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
12929
12930         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
12931         disappearing link to the GC interface and use them to simplify
12932         the gchandles code.
12933
12934 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12935
12936         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
12937         stfld_remote which call mono_load/store_field_new. This allows methods
12938         calling ldfld/stfld wrappers to be AOTed.
12939
12940         * console-io.c: Include sys/filio.h under solaris.
12941         
12942         * console-io.c: Include curses.h if needed correctly.
12943
12944 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12945         
12946         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
12947         method->klass as well.
12948
12949         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
12950
12951         * class.c (mono_class_init): Switch on lazy initialization of 
12952         methods.
12953
12954         * class.c (mono_class_get_finalizer): Handle the case when the 
12955         finalizer is inherited.
12956
12957 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12958
12959         * console-io.c: <curses.h> is needed by term.h on solaris.
12960
12961 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
12962
12963         * icall.c, class-internals.h, monodiet.c, class.c: Remove
12964         mono_class_setup_properties where possible. Remove this ftn from
12965         the header file, and make it static.
12966
12967 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12968
12969         * loader.c: Add missing setup_... call.
12970
12971         * class.c: Add missing setup_... calls.
12972
12973         * class.c (mono_class_init): Switch on lazy initialization of 
12974         the generic vtable.
12975         
12976         * class.c (mono_class_init): Fix generics broken by the recent changes.
12977
12978         * monodiet.c (handle_type): Add missing setup_... calls.
12979
12980         * class.c: Back out garbage in previous patch.
12981         
12982         * class.c: Add missing setup_... calls.
12983
12984         * class.c (mono_class_get_method_from_name_flags): Avoid calling
12985         mono_class_setup_methods () if possible.
12986
12987         * class-internals.h (MonoClass): Add 'has_cctor' flag.
12988
12989         * class-internals.h (MonoCachedClassInfo): New structure.
12990
12991         * class.c: Initialize properties and events fields of MonoClass lazily.
12992
12993         * class.c: Add infrastructure for lazily initializing the methods and
12994         vtable fields of MonoClass. Not yet used.
12995
12996         * class.c (mono_class_get_finalizer): New helper function.
12997
12998         * class.c: Add infrastructure for loading some class related data from
12999         an AOT file.
13000
13001         * object.c: Add infrastructure for initializing the vtable from data
13002         in the AOT file.
13003
13004         * gc.c (run_finalize): Use mono_class_get_finalizer ().
13005
13006         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
13007         appropriate initialization function before accessing parts of the
13008         MonoClass structure.
13009
13010         * marshal.c: Fix warnings.
13011         
13012         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
13013
13014         * mono-debug-debugger.c (get_exception_message): Use 
13015         mono_class_get_method_from_name_flags ().
13016
13017 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
13018
13019         * reflection.c, appdomain.c: Replace a few manual searches that
13020         Zoltan missed. (Paolo approved this part of my initial patch).
13021
13022 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
13023
13024         * profiler.c: disable recording statistical events at report time.
13025
13026 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13027
13028         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
13029         to byteswap arrays of enum values, too (bug #72080).
13030
13031 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
13032
13033         * appdomain.c (set_domain_search_path): Allow this to be called if
13034         domain->setup is not yet set.
13035
13036         * loader.c (mono_method_get_index): New helper function.
13037
13038         * loader.c reflection.c: Use mono_method_get_index ().
13039
13040         * class.c (mono_class_get_method_from_name_flags): New helper method.
13041
13042         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
13043         this.
13044
13045         * class.c (mono_class_get_cctor): New helper method.
13046
13047         * string-icalls.c object.c class.c marshal.c reflection.c: Use
13048         mono_class_get_method () to look up methods.
13049
13050 2005-02-01  Miguel de Icaza  <miguel@novell.com>
13051
13052         * console-io.c: Fix the build, this should work on Windows.
13053
13054 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
13055
13056         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
13057         be set to null to keep things valid
13058
13059 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13060
13061         * icall.c: added Console 2.0 icalls.
13062         * Makefile.am: added console-io.[ch]
13063         * console-io.[ch]: internal calls for Console 2.0 API.
13064
13065 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13066
13067         * class.c: make sure we consider all the interfaces
13068         when calculating max_interface_id (bug found by
13069         Jeroen Frijters running ikvm).
13070
13071 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
13072
13073         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
13074         valuetype fields to null.
13075
13076         * object.c (set_value): Ditto. Fixes #71669.    
13077
13078 2005-01-31  Martin Baulig  <martin@ximian.com>
13079
13080         * metadata.c (mono_metadata_has_generic_params): New public
13081         function; checks whether something is a generic method.
13082
13083 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
13084
13085         * appdomain.c: fix infinite recursion when adding assemblies.
13086
13087 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13088
13089         * object.c: Fix small typo to return all items for Environment.
13090         GetCommandLineArgs.
13091
13092 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13093
13094         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
13095         reflection.c: more domain and assembly-unload related fixes
13096         and memory leaks plugs.
13097
13098 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
13099
13100         * 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.
13101
13102 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
13103
13104         * loader.c (mono_method_signature): Make this method lazy
13105         (mono_get_method_from_token): Don't computate the signature here.
13106
13107         Doing this saves quite a bit of memory. I got 90 kb on starting up
13108         monodoc. It should also save some disk reads on startup.
13109
13110         * *: MonoMethod->signature might be NULL now. You *MUST* use
13111         mono_method_signature.
13112
13113 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
13114
13115         * object.c (mono_runtime_get_main_args): Return an array from the
13116         current domain here. Fixes #71938.
13117
13118 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
13119
13120         * monitor.c: formatting changes to comply with the
13121         mono coding style and remove #ifdefs from the code.
13122
13123 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13124
13125         * metadata.c, private.h: remove some unneeded data
13126         and use a more compact representation for table schemas.
13127
13128 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
13129
13130         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
13131         to get a better distribution in hash tables.
13132         * *.c: use mono_aligned_addr_hash() where appropriate.
13133         * assembly.c: make var static.
13134
13135 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
13136
13137         * domain-internals.h: Put MonoJitInfo on a diet.
13138
13139         * domain.c: Fix a warning.
13140
13141 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13142
13143         * gc.c: rework the gc handles code to reuse handles
13144         when freed.
13145
13146 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13147
13148         * domain.c: fixed long standing bug in mono_string_equal() which
13149         was brought to light with the ldstr changes.
13150
13151 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13152
13153         * reflection.c: Remove warning by adding missing include for marshal.h
13154
13155 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13156
13157         * domain.c, object.c: change the ldstr_table to hold
13158         MonoString* as keys: makes the runtime isinterned lookup
13159         faster and simplifies memory management.
13160
13161 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
13162  
13163         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
13164         possible to add imperative security checks before calling the icall.
13165         * reflection.c: Return security attributes on the original MonoMethod
13166         (and not the wrapped one). This fix permissions on icalls.
13167
13168 2005-01-25  Dick Porter  <dick@ximian.com>
13169
13170         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
13171         the check for mktime() support actually test the mktime() return
13172         value.  "Fixes" bug 71682, though the output is still different to
13173         MS.
13174
13175 2005-01-25  Martin Baulig  <martin@ximian.com>
13176
13177         * class.c (mono_class_is_assignable_from): Make this work for
13178         generic instances.
13179
13180 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
13181
13182         * marshal.c (mono_string_utf8_to_builder)
13183         (mono_string_builder_to_utf16): We might not have ownership of the
13184         string. In thise case, we need to create a new buffer.
13185
13186         * object-internals.h (mono_stringbuilder_capacity): sb->str might
13187         be null, in which case, use the default capacity.
13188
13189 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13190
13191         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
13192         GC events to the profiler.
13193
13194 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13195
13196         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
13197         if you don't want the GC to run.
13198
13199 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
13200
13201         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
13202         start providing a GC API and keeping different implementations in
13203         their own file.
13204         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
13205
13206 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
13207
13208         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
13209         mmap rather than allocating a huge buffer.
13210         (mono_debug_close_mono_symbol_file): Free the buffer allocated
13211         above.
13212
13213 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
13214
13215         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
13216         and CheckExecutionRights.
13217         * reflection.c|h: Keep the index of the declarative security to be 
13218         used, instead of the pointer, when AOT compiler is used. Also add 
13219         class initialization when requesting demands.
13220         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
13221         CheckExecutionRights. Both properties are now FALSE by default, and
13222         unmodifiable, unless the --security option is used.
13223
13224 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13225
13226         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
13227         reflection.c: properly refcount images and assemblies, many leaks fixed.
13228
13229 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13230
13231         * threadpool.c: increase the timeout for threads in the thread pool to
13232         10s.  Fixes bug #67159.
13233
13234 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
13235
13236         * class-internals.h: Sun's compiler insists on explicit
13237         signed on bit fields to handle then correctly.
13238
13239 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
13240
13241         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
13242         Make the size of the array fit only the number of invalid path
13243         chars that we have.
13244
13245         * class.c (_mono_class_get): Improve the error reporting when a
13246         class referenced is not found, to assist debugging. 
13247
13248 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
13249
13250         * threads.c: fix off-by-one error.
13251         * domain.c: free data allocated in the domain.
13252
13253 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13254
13255         * reflection.c (mono_method_body_get_object): Fill out exception info
13256         as well.
13257
13258         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
13259         structure.
13260         
13261 2005-01-19  Martin Baulig  <martin@ximian.com>
13262
13263         * loader.c (mono_get_method_constrained): Make this work again.
13264
13265 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
13266
13267         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
13268         guint16 to match the managed side.
13269
13270         * reflection.c (mono_reflection_body_get_object): Fill out local
13271         variables array.
13272
13273         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
13274         as well.
13275
13276         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
13277         'local_var_sig_token'.
13278
13279 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
13280
13281         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
13282         System.Drawing.
13283
13284         * reflection.c (mono_method_body_get_object): Handle abstract and
13285         runtime methods.
13286
13287 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
13288
13289         * marshal.c, loader.c, class-internals.h, reflection.c:
13290         store the emthod data for a wrapper in an array instead of a list.
13291
13292 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
13293
13294         * marshal.c: change the code to allocate memory more
13295         conservatively for method wrappers.
13296
13297 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
13298
13299         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
13300         fields from MonoClass to the marshal info structure where they belong.
13301
13302 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13303
13304         * class.c, object.c, class-internals.h, marshal.c: rearrange
13305         some fields and tweak some types to lower memory usage.
13306
13307 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
13308
13309         * threads.c (signal_thread_state_change): Handle the case when the
13310         target thread is the current thread.
13311
13312         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
13313
13314         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
13315         emit_ptr_to_object_conv. 
13316
13317         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
13318         marshalling. Fixes #71352.
13319
13320 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13321
13322         * metadata.h, blob.h: move table enum to blob.h so it can be included
13323         in any header.
13324         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
13325         cut the size of MonoImage/MonoDynamicImage.
13326
13327 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
13328
13329         * profiler.c (mono_profiler_install_simple): Fix default arguments.
13330
13331 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
13332
13333         * reflection.c, reflection.h, icall.c: add a function to check
13334         if an attribute type is defined for a metadata object.
13335
13336 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
13337
13338         * object-internals.h: Added some needed fields from StringBuilder class.
13339         * marshal.c: Set the maxCapacity when creating a StringBuilder.
13340
13341 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
13342
13343         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
13344         threads before shutting down the runtime.
13345
13346         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
13347
13348 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13349
13350         * object-internal.h, threads.c: implement stacksize and 
13351         parameterized thread start functionality (requires
13352         matching corlib). Marked broken code for later removal.
13353
13354 2005-01-12  Martin Baulig  <martin@ximian.com>
13355
13356         * class-internals.h (MonoGenericClass): Moved the `initialized'
13357         flag to MonoDynamicGenericClass, removed `init_pending'.
13358         (MonoGenericInst): Added `is_reference' flag.
13359
13360 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
13361
13362         * reflection.c (mono_image_create_pefile): Only set the pe_offset
13363         inside the MSDOS header. Fixes #71201.
13364
13365         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
13366         gc thread.
13367         (mono_domain_finalize): Ditto.
13368
13369 2005-01-12  Martin Baulig  <martin@ximian.com>
13370
13371         * class.c (mono_get_shared_generic_class): Use the cache for
13372         non-dynamic generic classes.
13373
13374         * class-internals.h (mono_class_create_generic_2): Removed
13375         function prototype, this function is now static inside class.c.
13376
13377         * class.c (mono_class_create_generic_2): Made this static, only
13378         call it from mono_class_init() and mono_class_setup_parent().
13379         (collect_implemented_interfaces_aux): Call mono_class_init() on
13380         the interfaces we collect.
13381         (mono_class_setup_vtable): Call mono_class_init (class->parent).
13382
13383 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13384
13385         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
13386         it a real thread handle.
13387
13388         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
13389         MonoJitExceptionInfo, since each catch clause needs its own variable.
13390         
13391 2005-01-11  Dick Porter  <dick@ximian.com>
13392
13393         * image.c (mono_pe_file_open): New variant on mono_image_open()
13394         that does not set up the CLI metadata; used for FileVersionInfo so
13395         it can get the data for windows binaries too.
13396         
13397         * process.c (process_read_string_block): Don't read off the end of
13398         the StringTable block.
13399
13400         These both fix bug 70766.
13401
13402 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
13403
13404         * gc.c: set some fields to NULL at GC cleanup time.
13405         * threads.c: if we quit the main thread, call exit ().
13406
13407 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
13408
13409         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
13410
13411 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
13412
13413         * threads.h, threads.c, object.c: added accessor and settor for
13414         main_thread. Handle it specially when exiting from it: wait
13415         for other foreground threads to exit.
13416
13417 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
13418
13419         * process.c, verify.c: remove some bloat.
13420
13421 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
13422
13423         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
13424         the calling convention to cdecl under win32.
13425
13426 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
13427
13428         * object.c (mono_object_get_size): New function to get the size of
13429         an object instance.
13430
13431         * profiler.c (simple_allocation): Use above.
13432
13433 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
13434
13435         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
13436         ves_icall_System_AppDomain_getRootDomain (as it's not required to
13437         get an appdomain by it's id and we can't assume the root's id is 0).
13438         * domain-internals.h: Change the function prototype to match.
13439         * icall.c: Change the icall table for AppDomain.
13440
13441 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
13442
13443         * locales.c (string_invariant_compare_char): Only compute
13444         GUnicodeTypes in the case where we need them.  Test for ordinality
13445         first and return if so.
13446
13447         From the commit:
13448
13449                 /*
13450                  * FIXME: here we must use the information from c1type and c2type
13451                  * to find out the proper collation, even on the InvariantCulture, the
13452                  * sorting is not done by computing the unicode values, but their
13453                  * actual sort order.
13454                  */
13455
13456 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13457
13458         * loader.c: for P/Invoke methods, allow the "Internal" shared
13459         library name to refer to the calling process symbol namespace.
13460
13461 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
13462
13463         * Makefile.am: Add the security manager to the build.
13464         * security-manager.c|h: New. Initialization of the security manager.
13465
13466 2005-01-07  Dick Porter  <dick@ximian.com>
13467
13468         * threads.c: 
13469         * monitor.c: Update thread state during Monitor and WaitHandle
13470         waits.  Fixes bug 71031.
13471
13472 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
13473
13474         * reflection.c (property_encode_signature): Correctly handle when the
13475         property has no methods.
13476
13477 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
13478
13479         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
13480         
13481         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
13482         fields from mb, not rmb. Fixes #71017.
13483
13484         * marshal.c (emit_ptr_to_str_conv): Add support for 
13485         ByValTStr -> string conversion. Fixes #71015.
13486
13487         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
13488
13489         * mempool.c (mono_mempool_contains_addr): New helper function.
13490
13491 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13492
13493         * metadata.c (mono_metadata_compute_size): Fix size calculation of
13494         HasSematics encoded fields.
13495         
13496         * metadata.c (mono_type_to_unmanaged): Improve error message for 
13497         invalid string marshalling.
13498
13499         * metadata.c: Fix warnings.
13500         
13501 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13502
13503         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
13504         profiler support.
13505
13506 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
13507
13508         * domain.c object.c domain-internals.h: Revert part of r38077 since the
13509         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
13510         tests.
13511
13512 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
13513
13514         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
13515         so methods containing these can be AOTed.
13516
13517 2005-01-03  Martin Baulig  <martin@ximian.com>
13518
13519         * loader.c (find_method): Removed the hack for generic instances.
13520         (method_from_memberref): If our parent is a generic instance, pass
13521         its generic type definition to find_method() and then inflate the
13522         method.
13523         (mono_get_method_constrained): Pass the generic type definition to
13524         find_method() and inflate the method later.
13525
13526         * class-internals.h (MonoStats): Added `generic_class_count'.
13527
13528         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
13529         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
13530
13531         * reflection.c (mono_custom_attrs_from_params): Don't ignore
13532         generic type definitions.
13533
13534 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
13535
13536         * loader.c icall.c: Fix warnings.
13537
13538 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
13539
13540         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
13541         blittable types. Fixes #70864.
13542
13543 2004-12-29  Martin Baulig  <martin@ximian.com>
13544
13545         * icall.c
13546         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
13547
13548         * reflection.c (mono_method_get_object): Create a
13549         "System.Reflection.MonoGenericMethod" for inflated methods; don't
13550         call mono_get_inflated_method().
13551
13552         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
13553
13554 2004-12-27  Martin Baulig  <martin@ximian.com>
13555
13556         * class-internals.h (MonoMethod): Added `is_inflated' flag.
13557         (MonoMethodInflated): Added `inflated' field.
13558
13559         * class.c (mono_class_inflate_generic_method): Don't really
13560         inflate the method here; just set the `is_inflated' flag in the
13561         MonoMethod.
13562         (mono_class_get_inflated_method): Actually inflate the method here
13563         if it's not already inflated; we use the MonoMethodInflated's new
13564         `inflated' field as a cache.
13565
13566 2004-12-26  Martin Baulig  <martin@ximian.com>
13567
13568         * class.c
13569         (inflate_generic_class): Moved some code out of inflate_generic_type().
13570         (mono_class_inflate_generic_method): If we're already inflated,
13571         inflate the context and use the declaring method; ie. make sure
13572         the declaring method of an inflated method is always the generic
13573         method definition.
13574         (mono_class_create_from_typedef): Create
13575         `class->generic_container->context->gclass'.
13576
13577 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
13578
13579         * metadata-internals.h, marshal.c, reflection.c: More
13580         MonoGHashTable->GHashTable.
13581
13582         * domain-internals.h, class.c: Change MonoGHashTable's into
13583         GHashTables for some cases where no gc stuff is used
13584
13585         All users: update apis
13586
13587 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
13588
13589         * metadata.c (builtin_types): Make this `const'. Makes this get
13590         put into the shareable section.
13591         (mono_metadata_init): Casts to make gcc happy.
13592
13593 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
13594
13595         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
13596
13597 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
13598
13599         * icall.c: Added an internal call to retrieve the position and length
13600         of assembly-level declarative security attributes (RequestMinimum, 
13601         RequestOptional and RequestRefuse). This is used by the Assembly class
13602         to re-create the corresponding permission sets.
13603
13604 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13605
13606         * marshal.c: fix the stelemref wrapper to be type correct
13607         (and faster).
13608
13609 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13610
13611         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
13612         to do key & 0x7fffffff. Hashtable already does this. It just
13613         results in longer code.
13614
13615 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13616
13617         * appdomain.c: Bump corlib version.
13618         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
13619         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
13620         * reflection.c|h: Add functions to get declarative security infos
13621         (blob position and length) for assemblies, classes and methods.
13622
13623 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
13624
13625         * reflection.c: sort the constant table (bug #70693).
13626
13627 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
13628
13629         * object-internals.h, threads.c, domain.c: add accessors for
13630         the MonoThread and MonoDomain tls keys.
13631
13632 2004-12-18  Martin Baulig  <martin@ximian.com>
13633
13634         * class.c (inflate_generic_type): If we're inflating a generic
13635         instance, set `ngclass->context->container = context->container';
13636         ie. the container we inflated into.
13637
13638         * metadata.c (mono_metadata_parse_generic_param): Reflect above
13639         inflate_generic_type() changes.
13640
13641 2004-12-17  Martin Baulig  <martin@ximian.com>
13642
13643         * class-internals.h
13644         (MonoGenericClass): Replaced `MonoType *generic_type' with
13645         `MonoClass *generic_class'.  Removed `dynamic_info'; if
13646         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
13647         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
13648
13649 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13650
13651         * exception.c (mono_exception_from_token): New helper function.
13652
13653 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13654
13655         * assembly.c (mono_assembly_load_with_partial_name): Call 
13656         mono_assembly_loaded before invoking the preload hooks. Fixes
13657         #70564.
13658
13659         * object-internals.h (MonoThread): Change culture_info and 
13660         ui_culture_info into an array.
13661
13662         * threads.c: Cache culture info objects from more than one appdomain.
13663
13664         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
13665         current UI culture.
13666
13667 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13668
13669         * threads.h threads.c appdomain.c: Clear the culture_info field of
13670         all threads during unloading if they point to an object in the dying
13671         appdomain.
13672
13673 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
13674
13675         * culture-info.h (TextInfoEntry): New struct
13676         * object-internals.h: sync with managed
13677         * locales.c: fill the `text_info_data' field
13678         * culture-info-tables.h: update
13679
13680 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
13681
13682         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
13683         collector.
13684
13685 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
13686
13687         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
13688         (ves_icall_ModuleBuilder_getMethodToken): Ditto
13689
13690 2004-12-12  Martin Baulig  <martin@ximian.com>
13691
13692         * mono-debug-debugger.c (write_type): If we're an enum and the
13693         builtin types have already been initialized, call mono_class_init().
13694
13695 2004-12-11  Martin Baulig  <martin@ximian.com>
13696
13697         * metadata.c (mono_metadata_load_generic_params): Added
13698         `MonoGenericContainer *parent_container' argument; automatically
13699         compute `container->is_method'; pass the correct owner to
13700         get_constraints().      
13701
13702         * reflection.c (compare_genericparam): Sort the GenericParam table
13703         according to increasing owners. 
13704
13705 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13706
13707         * profiler.c: allow disabling the default profiler.
13708
13709 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
13710
13711         * decimal.c, icall.c: allow disabling System.Decimal support.
13712
13713 2004-12-09  Marek Safar <marek.safar@seznam.cz>
13714
13715         * reflection.c: Add support for null attribute arguments.
13716
13717 2004-12-09  Martin Baulig  <martin@ximian.com>
13718
13719         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
13720         names to get rid of compiler warnings.
13721
13722 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13723
13724         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
13725         mono_marshal_load_type_info (). Fixes #69625.
13726         (mono_marshal_get_ptr_to_struct): Likewise.
13727
13728 2004-12-08  Martin Baulig  <martin@ximian.com>
13729
13730         * mono-debug.h: Bumped version number to 47.
13731
13732         * mono-debug-debugger.c
13733         (mono_debugger_event_handler, mono_debugger_event): Take two
13734         guint64 arguments insteed of a gpointer and a guint32.  
13735
13736 2004-12-08  Martin Baulig  <martin@ximian.com>
13737
13738         * debug-mono-symfile.h
13739         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
13740         `address' to `native_offset'.
13741
13742 2004-12-08  Martin Baulig  <martin@ximian.com>
13743
13744         * class.c (mono_class_create_from_typespec): Only inflate if we
13745         either have `context->gclass' or `context->gmethod'.
13746
13747 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13748
13749         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
13750
13751         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
13752
13753         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
13754
13755         * reflection.c (mono_assembly_get_object): Remove the workaround put
13756         in for the release.
13757         
13758         * appdomain.c: Use the corlib_internal field from MonoAssembly.
13759
13760         * appdomain.c: Bump corlib version.
13761
13762         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
13763         be visible in other appdomains.
13764
13765 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
13766
13767         * threads.c: Interlocked inc and dec for longs were messed up,
13768         use a KISS based impl for this. Fixes 70234
13769
13770 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13771
13772         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
13773
13774 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
13775
13776         * icall.c: fix to follow policy not to allow struct
13777         arguments in icalls.
13778
13779 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13780
13781         * process.c: make the patch that handles spaces in file paths work
13782         on mono/windows too.
13783
13784 2004-12-06  Martin Baulig  <martin@ximian.com>
13785
13786         * class.c (mono_class_create_generic): Call
13787         mono_class_setup_supertypes() if we're dynamic.
13788         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
13789
13790 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13791
13792         * object-internals.h: Add new fields to MonoThread.
13793
13794         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13795
13796         * icall.c threads-types.h threads.c: Add new icalls.
13797
13798         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
13799
13800         * object-internals.h (MonoReflectionAssembly): Sync object layout with
13801         managed side.
13802
13803         * appdomain.c: Bump corlib version.
13804
13805         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
13806         internal assemblies. Fixes #69181.
13807
13808 2004-12-05  Martin Baulig  <martin@ximian.com>
13809
13810         * class.c (mono_class_inflate_generic_signature): Make this a
13811         no-op if `context' is NULL or we don't have any type parameters;
13812         also copy `sentinelpos'.        
13813
13814 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
13815
13816         * image.c: Add unbox_wrapper_cache.
13817
13818         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
13819
13820         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
13821         function generator.
13822         
13823         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
13824         Fixes #70173.
13825
13826         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
13827         
13828 2004-12-04  Martin Baulig  <martin@ximian.com>
13829
13830         * loader.c (mono_method_get_signature_full): New public function;
13831         like mono_method_get_signature(), but with an additional
13832         `MonoGenericContext *' argument.
13833
13834         * class.c (mono_class_inflate_generic_signature): Formerly known
13835         as inflate_generic_signature(); make this public.
13836
13837 2004-12-04  Martin Baulig  <martin@ximian.com>
13838
13839         * metadata.c
13840         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
13841         instead of a `MonoGenericContainer *'.  
13842         (mono_metadata_parse_array_full): Likewise.
13843         (mono_metadata_parse_signature_full): Likewise.
13844         (mono_metadata_parse_method_signature_full): Likewise.
13845         (mono_metadata_parse_generic_inst): Likewise.
13846         (mono_metadata_parse_generic_param): Likewise.
13847         (mono_metadata_parse_mh_full): Likewise.
13848         (mono_type_create_from_typespec_full): Likewise.
13849
13850 2004-12-03  Martin Baulig  <martin@ximian.com>
13851
13852         * class-internals.h (MonoGenericContainer): Replaced the
13853         `MonoGenericContext * pointer with a `MonoGenericContext'
13854         structure and made it the first element.
13855
13856 2004-12-03  Martin Baulig  <martin@ximian.com>
13857
13858         * class.c
13859         (inflate_generic_type): Set the `context->container' when creating
13860         a new MonoGenericContext.
13861         (mono_class_inflate_generic_method): Likewise.
13862         (mono_class_create_from_typespec): Just use `context->container'
13863         to get the container.
13864
13865         * loader.c (method_from_methodspec): Set `context->parent' from
13866         `context->container' - and if that's a method container, use its
13867         parent.  Also set the `context->container' when creating a new
13868         MonoGenericContext.
13869         (mono_get_method_from_token): Use just `context->container' to get
13870         the container.
13871
13872         * metadata.c (do_mono_metadata_parse_generic_class): Also set
13873         `gclass->context->container'.
13874
13875         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
13876         the `context->container' when creating a new MonoGenericContext.
13877
13878 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
13879
13880         * reflection.c (compare_genericparam): Sort params with identical
13881         owner by their number. Fixes gen-111 on sparc.
13882
13883 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
13886         around the domain changes.
13887
13888         * appdomain.c (mono_domain_unload): Handle the case when the thread
13889         calling Unload is itself being aborted during unloading. Fixes #70022.
13890
13891         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
13892
13893         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
13894         checkpoint_func as an icall so it gets a wrapper.
13895         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
13896         in the cross-appdomain wrappers too.
13897
13898         * threads.c (mono_thread_has_appdomain_ref): Make this public.
13899
13900         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
13901
13902         * reflection.c: Fix some memory leaks.
13903         
13904 2004-12-02  Martin Baulig  <martin@ximian.com>
13905
13906         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
13907
13908         * metadata.c (generic_class_cache): New static hashtable.
13909         (mono_metadata_lookup_generic_class): New public method.
13910
13911 2004-12-02  Martin Baulig  <martin@ximian.com>
13912
13913         * class.c (mono_class_create_from_typedef): Call
13914         mono_class_setup_parent() and mono_class_create_mono_type() before
13915         parsing the interfaces.
13916
13917 2004-12-02  Martin Baulig  <martin@ximian.com>
13918
13919         * metadata.c (generic_inst_cache): New static hashtable.
13920         (mono_metadata_lookup_generic_inst): New public function.
13921         (mono_metadata_inflate_generic_inst): New public function.
13922         (mono_metadata_parse_generic_inst): New public function.
13923         (do_mono_metadata_parse_generic_class): Use the new
13924         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
13925         since this'll also use the cache.
13926
13927         * reflection.c (mono_reflection_bind_generic_method_parameters):
13928         Use mono_metadata_lookup_generic_inst() to use the new cache.
13929
13930         * class.c (inflate_mono_type): Use
13931         mono_metadata_inflate_generic_inst() to inflate a generic
13932         instance; this'll also use the new cache.
13933
13934         * loader.c (method_from_methodspec): Use
13935         mono_metadata_parse_generic_inst() and
13936         mono_metadata_inflate_generic_inst() rather than parsing it
13937         manually, so we can use the new cache.
13938
13939 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13940
13941         * threads.c (wait_for_tids): Do not incorrectly free threads when 
13942         the wait times out.
13943
13944 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13945
13946         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
13947         iter->args based on whether parameters are passed in registers (i.e.
13948         MONO_ARCH_REGPARMS is defined)
13949
13950 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
13951
13952         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
13953         the exception message. Fixes #70070.
13954         (method_from_methodspec): Fix warnings.
13955
13956 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13957
13958         * process.c: (complete_path) return the path quoted
13959
13960 2004-12-01  Martin Baulig  <martin@ximian.com>
13961
13962         * class-internals.h (MonoGenericInst): New structure.
13963         (MonoGenericClass): Replaced `type_argc', `type_argv' and
13964         `is_open' with `MonoGenericInst *inst'.
13965         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
13966         `is_open' with `MonoGenericInst *inst'.
13967
13968 2004-11-30  Martin Baulig  <martin@ximian.com>
13969
13970         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
13971
13972         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
13973         to `generic_class_cache'.
13974
13975         * metadata.c
13976         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
13977         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
13978         (mono_generic_inst_is_valuetype): Renamed to
13979         mono_generic_class_is_valuetype().
13980
13981         * class-internals.h
13982         (MonoGenericInst): Renamed to MonoGenericClass.
13983         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
13984         (MonoClass): Renamed `generic_inst' to `generic_class'.
13985         (MonoGenericContext): Renamed `ginst' to `gclass'.
13986
13987         * object-internals.h
13988         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
13989
13990         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
13991         mono_reflection_generic_class_initialize().
13992
13993         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
13994         now known as "System.Reflection.MonoGenericClass".
13995         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
13996
13997 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
13998
13999         * class-internals.h: Added a flag field to MonoClass to cache the
14000         declarative security attributes actions associated with the class.
14001         * domain-internals.h: Added booleans to MonoJitInfo to cache the
14002         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
14003         applicable to the JITted method.
14004         * reflection.c|h: Added functions to extract (as flags) which security
14005         actions are available (declaratively) for a method, class or assembly.
14006         * metadata.c|h: Added functions to search the declarative security
14007         table in the metadata.
14008         
14009 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
14010
14011         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
14012         EXPORTEDTYPES are already in the class name cache, so there is no
14013         need to add extra code here to look at them. Just removes a bit of
14014         cruft.
14015
14016         (ves_icall_System_Environment_get_TickCount): No need for #if
14017         WINDOWS. We already have the code in io-layer.
14018
14019 2004-11-28  Martin Baulig  <martin@ximian.com>
14020
14021         * loader.c
14022         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
14023         Fixes gen-112.cs.
14024
14025 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
14026
14027         * assembly.c (do_mono_assembly_open): Instead of having a
14028         conditional WITH_BUNDLE, incorporate support for bundles here, by
14029         having a global `bundles' variable holding a pointer to the actual
14030         bundles. 
14031
14032         (mono_register_bundled_assemblies): New API call used by the
14033         bundle code. 
14034
14035         See mkbundle.1 for details.
14036         
14037 2004-11-27  Martin Baulig  <martin@ximian.com>
14038
14039         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
14040         the vtable for generic methods.
14041
14042 2004-11-26  Martin Baulig  <martin@ximian.com>
14043
14044         * metadata.c
14045         (mono_metadata_generic_method_hash): New public function.
14046         (mono_metadata_generic_method_equal): Likewise.
14047
14048         * class-internals.h
14049         (MonoGenericContainer): Added `GHashTable *method_hash'.
14050
14051         * reflection.c (ReflectionMethodBuilder): Added
14052         `MonoGenericContainer *generic_container'.
14053         (reflection_methodbuilder_to_mono_method): Don't create a new
14054         MonoGenericContainer each time we're called.
14055         (mono_reflection_bind_generic_method_parameters): Use
14056         `container->method_hash' to cache the results so we don't create a
14057         different method if we're called several times with the same
14058         arguments.
14059
14060         * loader.c (method_from_methodspec): Use the new
14061         `container->method_hash' here, too.
14062
14063 2004-11-26  Martin Baulig  <martin@ximian.com>
14064
14065         * class.c (inflate_generic_signature): Correctly compute
14066         `res->has_type_parameters'.
14067         (mono_class_vtable): Use the `has_type_parameters' flag to
14068         determine whether we're a generic method.
14069
14070         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
14071
14072 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
14073
14074         * object.c (mono_runtime_run_main): Fix a small memory leak.
14075
14076 2004-11-25  Martin Baulig  <martin@ximian.com>
14077
14078         * class.c (set_generic_param_owner): Fixed the loop.
14079
14080 2004-11-25  Martin Baulig  <martin@ximian.com>
14081
14082         * object.c (mono_class_vtable): Don't create any JIT wrappers for
14083         generic methods.
14084
14085 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
14086
14087         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
14088         names. Fixes #69787.
14089
14090 2004-11-24  Martin Baulig  <martin@ximian.com>
14091
14092         * class.c (mono_class_create_generic_2): If we don't have a
14093         `ginst->parent', inflate `gklass->parent' to get our parent.
14094
14095 2004-11-24  Martin Baulig  <martin@ximian.com>
14096
14097         * reflection.c (compare_genericparam): Correctly sort the
14098         GenericParam table; fixes #69779.
14099
14100 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
14101
14102         * reflection.c: When writing a PE file, don't create a huge
14103         buffer in memory. Just write the arrays we have to the file.
14104         This reduces memory usage.
14105
14106         * metadata-internals.h: MonoDynamicStream pefile is no longer used
14107         globally.
14108
14109 2004-11-17  Martin Baulig  <martin@ximian.com>
14110
14111         * class.c (mono_class_init): Don't setup `class->parent' for
14112         dynamic instances; moved this to mono_class_generic_2().
14113         (mono_class_create_generic): Also set `klass->inited' for dynamic
14114         generic instances.
14115         (mono_class_create_generic_2): Don't do anything for dynamic
14116         generic instances.  Set `klass->parent' here and also call
14117         mono_class_setup_parent() here. 
14118
14119         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
14120         `MonoType *parent' argument; set `ginst->parent' before calling
14121         mono_class_create_generic_2(), so we set the correct parent.
14122
14123 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
14124
14125         * reflection.c: allow getting attributes from ModuleBuilder
14126         (used by ikvm).
14127
14128 2004-11-17  Martin Baulig  <martin@ximian.com>
14129
14130         * class.c (mono_class_create_from_typedef): If a type parameter is
14131         inherited from an outer class, set its owner to that class.
14132
14133 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
14134
14135         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
14136           for (int*) written size. This fixes bug #69592.
14137
14138 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
14139
14140         * icall.c: Added IsAuthenticodePresnet internal call.
14141         * image.c|h: New function that check a MonoImage for an Authenticode
14142         signature in the certificate PE data directory.
14143         * security.c|h: New internal call to ask the runtime if an 
14144         Authenticode signature seems referenced in the PE header.
14145
14146 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
14147
14148         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
14149
14150         * reflection.c (mono_image_create_pefile): Free the assembly streams
14151         after writing out the assembly file.
14152
14153         * object.c (mono_runtime_run_main): Fix small memory leak.
14154
14155         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
14156         property access modifiers. Fixes #69389.
14157
14158 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
14159
14160         * domain.c, object.c, object-internals.h, domain-internals.h,
14161         object.h, marshal.c: keep dynamic code info per domain.
14162
14163 2004-11-15  Martin Baulig  <martin@ximian.com>
14164
14165         * class.c (mono_type_get_name_recurse): Put type arguments in
14166         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
14167         see bug #68387.
14168
14169 2004-11-15  Martin Baulig  <martin@ximian.com>
14170
14171         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
14172         (mono_class_setup_vtable): When computing `the_cname' for a
14173         generic instance, don't include the namespace since we'd otherwise
14174         add it twice.
14175
14176 2004-11-15  Martin Baulig  <martin@ximian.com>
14177
14178         * class.c (mono_class_create_generic): Changed return type to void.
14179         (mono_class_create_generic_2): New public function; setup
14180         `class->method', `class->field' and `class->interfaces' here
14181         instead of in mono_class_init().
14182
14183         * class.h (mono_class_create_generic): Moved to class-internals.h.
14184
14185 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
14186
14187         * reflection.c (mono_image_create_pefile): take a file HANDLE.
14188         rather than writing to memory, write to this file. Right now,
14189         we are just writting into a buffer, and copying that. However
14190         we can avoid the buffer later.
14191
14192         (mono_dynamic_stream_reset): new function
14193
14194         * icall.c, object-internals.h: update for the above.
14195
14196 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
14197
14198         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
14199         have been using gc'd memory. First it is slower, unlikely
14200         the comment in the source code said, secondly, it increases
14201         our footprint to do it in the gc.
14202
14203         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
14204         the method so that it does not have to copy to managed code.
14205
14206 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
14207
14208         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
14209
14210 2004-11-12  Martin Baulig  <martin@localhost>
14211
14212         * reflection.c (mono_image_create_token): Allow generic method
14213         definitions here, since they may appear in an `.override'; see
14214         gen-98/gen-99 for an example.
14215
14216 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
14217
14218         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
14219         #69365.
14220
14221         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
14222         descriptive.
14223
14224 2004-11-11  Martin Baulig  <martin@ximian.com>
14225
14226         * class.c (mono_class_setup_vtable): In an explicit interface
14227         implementation, the method name now includes the arity.
14228
14229 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
14230
14231         * object.c (mono_array_full_copy): Fix warning.
14232
14233 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
14234
14235         * appdomain.c: Removed look_for_method_by_name(). Use the new method
14236         mono_class_get_method_from_name() instead.
14237         
14238         * class-internals.h: Added two new types of wrappers. 
14239         Added MonoRemotingTarget enum. Added new trampoline function type, which
14240         takes an additional MonoRemotingTarget value as parameter, so it is
14241         possible to request a trampoline for a specific target.
14242         
14243         * class.c: Added new mono_class_get_method_from_name() method.
14244         
14245         * class.h: In MonoRemoteClass, we can have now to vtables, one for
14246         general remoting sinks and one specific for cross domain calls.
14247         
14248         * debug-helpers.c: Added new wrapper names.
14249         
14250         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
14251         of a remote class.
14252         
14253         * image.c: Porperly delete value objects form the remoting invoke hashtable.
14254         
14255         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
14256         with several other methods (mono_marshal_get_xappdomain_dispatch,
14257         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
14258         and others) can generate a fast remoting wrapper for cross domain calls.
14259         More information can be found in docs/remoting.
14260         Other changes: Removed mono_find_method_by_name, and used
14261         mono_class_get_method_from_name instead.
14262         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
14263         is stored in the remoting invoke hashtable.
14264         
14265         * marshal.h: published the new method for getting the xdomain wrapper,
14266         and also added a method for getting the adequate wrapper for a given
14267         method and target.
14268         
14269         * object-internals.h, object.c: Added a couple of methods for capying and
14270         cloning arrays.
14271         Modified mono_install_remoting_trampoline, which takes the new remoting
14272         trampoline that has a remoting target as parameter.
14273         mono_class_proxy_vtable now also takes a remoting target as parameter, and
14274         will return the most suitable vtable for the target.
14275         Added mono_remote_class_vtable, which returns the vtable of a remote class
14276         (which can be the normal remoting vtable or the xdomain vtable).
14277         
14278         * threads.c: the xdomain invoke and dispatch wrappers must also be
14279         protected against interruptions.
14280
14281 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14282
14283         * icall.c: use memmove in BlockCopyInternal when the source and
14284         destination arrays are the same.
14285
14286 2004-11-09  Martin Baulig  <martin@ximian.com>
14287
14288         * class-internals.h (MonoGenericContainer): Removed `method' and
14289         `signature', replaced them with `is_method' and `is_signature'
14290         flags.  Added `context'.
14291
14292         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
14293         instead of a `MonoGenericContainer *'.
14294
14295         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
14296         for dynamic type parameters.
14297         (mono_metadata_load_generic_params): Setup `container->context'.
14298
14299         * reflection.c (mono_reflection_setup_generic_class): Setup
14300         `tb->generic_container->context'.
14301         (do_mono_reflection_bind_generic_parameters): Use
14302         mono_class_inflate_generic_type() to correctly inflate types,
14303         rather than using our own hack just for MONO_TYPE_VAR.
14304
14305 2004-11-09  Martin Baulig  <martin@ximian.com>
14306
14307         * class.c (mono_class_inflate_generic_method): Small fix; don't
14308         crash here.
14309
14310         * icall.c
14311         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
14312         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
14313         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
14314         (ves_icall_Type_BindGenericParameters): Likewise.
14315         (ves_icall_Type_get_IsGenericInstance): Likewise.
14316         (ves_icall_Type_GetGenericParameterPosition): Likewise.
14317         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
14318         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
14319         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14320
14321 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
14322
14323         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
14324         assembly versions and public key tokens. Fixes #69113.
14325
14326 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
14327
14328         * metadata.c: fix bug introduced with the type cache changes
14329         on 2004-11-06.
14330
14331 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
14332
14333         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
14334         the MonoClass pointer instead of the token in exception clauses.
14335         * reflection.c: updates for the above and make the code not depend
14336         on the structure of MonoExceptionClause.
14337
14338 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14341         Add support for dynamic assemblies. Fixes #69114.
14342
14343         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
14344
14345 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
14346
14347         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
14348         since most only those methods use it. the code member of
14349         MonoMethodPInvoke was dead, so that can be removed too. Also,
14350         remove inline_count (again, not used), and move slot so that it
14351         can share bits with some other flags. This saves 8 bytes in the
14352         structure and gives us about 50 kb back for mcs helloworld.cs
14353
14354         * *.[ch]: Do naming changes for the above.
14355
14356         * loader.c (mono_method_get_header): Lazily init the header
14357         on first access.
14358         (mono_get_method_from_token): don't init the header here
14359         (mono_free_method): the header may never be allocated
14360
14361         Overall, this saves 150 kb of unmanaged allocations
14362         for mcs helloworld.cs. That accounts for 10% of the unmanaged
14363         memory at runtime.
14364         
14365         * loader.c, loader.h (mono_method_get_header): new accessor.
14366
14367         * *.[ch]: use the above method. Prepares us to lazily load
14368         the header.
14369
14370         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
14371         three warnings, which are actual bugs (see 69206).
14372
14373         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
14374         unused. Saves a cool 4 bytes / method.
14375
14376 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
14377
14378         * metadata.c (builtin_types): Add types for System.Object here.
14379         (mono_metadata_parse_type_full): Cache MonoType*'s that are
14380         for a class or valuetype from klass->this_arg or klass->byval_arg.
14381
14382         On mcs for a hello world, this gets us down from 21836 MonoType's
14383         to 14560.
14384
14385         (mono_metadata_free_type): Account for the above change.
14386
14387 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
14388
14389         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
14390         exception instead of asserting if name is null.
14391         (ves_icall_System_AppDomain_GetData): Ditto.
14392
14393 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
14394
14395         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
14396         EnumBuilder.
14397
14398         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
14399         Return NULL when the domain does not have entry_assembly set.
14400
14401         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
14402         Add a 'resource_modules' argument.
14403         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
14404
14405         * reflection.c (mono_reflection_create_runtime_class): Move setting
14406         of wastypebuilder here, so mono_get_type_object () returns a MonoType
14407         for enums too.
14408
14409         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
14410         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
14411         Throw an ArgumentNullException if 'ptr' is null.
14412
14413         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
14414         assemblies here. Fixes #69020.
14415
14416 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
14417
14418         * reflection.c (build_compressed_metadata): Fix the previous patch for
14419         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
14420         the stack.
14421
14422 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
14423
14424         * assembly.c (mono_assembly_names_equal): Allow a match if one of
14425         the cultures is false. Fixes #69090.
14426
14427         * reflection.c (build_compressed_metadata): Fix invalid memory read 
14428         detected by valgrind.
14429         
14430         * reflection.c (mono_reflection_get_type): Avoid triggering a 
14431         TypeResolve multiple times for the same type. Fixes #65577.
14432
14433 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
14434
14435         * marshal.c: Avoid using ldftn to call managed functions. It is
14436         much slower than just a call.
14437
14438         * reflection.c (mono_module_get_object): free the basename we
14439         allocate here from glib.
14440         
14441         * reflection.c (ensure_runtime_vtable): make sure to free
14442         overrides.  Also, we were allocating an array of MonoMethod not an
14443         array of MonoMethod*.
14444
14445         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
14446
14447         * image.c (mono_image_close): free image->guid here.
14448
14449 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
14450
14451         * reflection.c: Fix some spec conformance issues with the PE file
14452         structures so mcs compiled apps run on the Net 2.0 beta.
14453
14454 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
14455
14456         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
14457         Implement this. Fixes #67264.
14458
14459         * debug-helpers.h debug-helpers.c marshal.c: Move 
14460         mono_find_method_by_name to debug-helpers.c.
14461
14462 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
14463
14464         * object.c (mono_release_type_locks): type_initialization_hash is
14465         a GHashTable.
14466
14467         * reflection.c object.c object-internals.h: Fix warnings.
14468
14469         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
14470         without accessors. Fixes #61561.
14471
14472         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
14473         application base from the root domain if not set. Fixes #65641.
14474         (mono_runtime_init): Fix warning.
14475
14476 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14477
14478         * appdomain.c: call mono_thread_pool_init.
14479         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
14480         of worker threads based on the number of CPUs and the environment
14481         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
14482         for non-windows (windows) systems.
14483
14484 2004-10-27  Chris Toshok  <toshok@ximian.com>
14485
14486         * mono-debug-debugger.c (write_class): don't call mono_class_init
14487         here, as even with the check for (!klass->init_pending), we get
14488         into a situation where we're hitting cycles in class
14489         initialization.  Fixes #68816.
14490
14491 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
14492
14493         * image.c: Avoid overwriting values in the loaded_images_hash when an
14494         assembly is loaded multiple times. Fixes #61152.
14495
14496         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
14497         so multiple satellite assemblies for the same name can be loaded.
14498         Fixes #68259.
14499
14500         * mono_domain_assembly_preload: Actually return the loaded assembly, 
14501         not NULL.
14502
14503         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
14504         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
14505
14506         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
14507         pending finalizers are not invoked after the appdomain has been 
14508         unloaded. Fixes #67862.
14509
14510 2004-10-22  Martin Baulig  <martin@ximian.com>
14511
14512         * mono-debug-debugger.c
14513         (mono_debugger_runtime_invoke): Don't box valuetypes.
14514
14515 2004-10-22  Chris Toshok  <toshok@ximian.com>
14516
14517         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
14518         don't hide private methods.
14519
14520 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
14521
14522         * icall.c: Allows the runtime to "share" (when known) the public key
14523         token of an assembly. This avoid the need to recalculate the token 
14524         (from the public key) in managed code.
14525
14526 2004-10-21  Chris Toshok  <toshok@ximian.com>
14527
14528         * debug-helpers.c (append_class_name): argh, revert last patch.
14529         
14530 2004-10-21  Chris Toshok  <toshok@ximian.com>
14531
14532         * debug-helpers.c (append_class_name): use '+' as the delimiter,
14533         not '/', so that it matches what the debugger uses to look up
14534         methods.
14535
14536 2004-10-21  Martin Baulig  <martin@ximian.com>
14537
14538         * mono-debug-debugger.c (mono_debugger_throw_exception): New
14539         public method; this is called each time an exception is thrown and
14540         allows the debugger to use exception catch points.
14541
14542 2004-10-21  Martin Baulig  <martin@ximian.com>
14543
14544         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
14545         the stack pointer and the exception object in some struct and pass
14546         that to the debugger.
14547
14548 2004-10-21  Chris Toshok  <toshok@ximian.com>
14549
14550         * mono-debug-debugger.c (do_write_class): add instance/static
14551         event support.  We don't expose "raise" or "other" yet.
14552         (event_is_static): new method.
14553
14554 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
14555
14556         * mono-debug-debugger.c
14557         (mono_debugger_handle_exception): Remove
14558         bogus return value for fussy compilers.
14559
14560 2004-10-20  Martin Baulig  <martin@ximian.com>
14561
14562         * mono-debug-debugger.c
14563         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
14564         (mono_debugger_handled_exception): Likewise.
14565
14566 2004-10-20  Martin Baulig  <martin@ximian.com>
14567
14568         * mono-debug-debugger.h (MonoDebuggerEvent): Added
14569         MONO_DEBUGGER_EVENT_EXCEPTION.
14570
14571         * mono-debug-debugger.c (mono_debugger_handle_exception): New
14572         public function to send the debugger a notification for an
14573         exception and inform it about a catch/finally clause.
14574
14575 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
14576
14577         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
14578         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
14579         fix 2.95 build. 
14580
14581         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
14582
14583 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
14584
14585         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
14586         marshalled as [In,Out]. Fixes #58325.
14587
14588 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
14589
14590         * reflection.c (mono_method_body_get_object): Implement some fields.
14591
14592 2004-10-12  Martin Baulig  <martin@ximian.com>
14593
14594         * reflection.c (mono_reflection_bind_generic_parameters): Small
14595         fix, correctly retrieve our parent from a generic instance.
14596
14597 2004-10-12  Martin Baulig  <martin@ximian.com>
14598
14599         * metadata.c (mono_metadata_generic_param_equal): We always have
14600         an owner.
14601
14602         * class.c
14603         (mono_class_from_generic_parameter): We need to have an owner.
14604         (my_mono_class_from_generic_parameter): Likewise.
14605
14606         * reflection.c (mono_reflection_setup_generic_class): Renamed to
14607         mono_reflection_create_generic_class() and added a new
14608         mono_reflection_setup_generic_class().  
14609         (mono_reflection_initialize_generic_param): If we're a nested
14610         generic type and inherited from the containing class, set our
14611         owner to the outer class.
14612
14613 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
14614
14615         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
14616
14617         * reflection.c (mono_method_body_get_object): New function to create
14618         a MethodBody object.
14619
14620         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
14621
14622 2004-10-11  Martin Baulig  <martin@ximian.com>
14623
14624         * metadata.c (_mono_metadata_type_equal): Renamed to
14625         do_mono_metadata_type_equal() and made static.
14626
14627 2004-10-11  Martin Baulig  <martin@ximian.com>
14628
14629         * appdomain.c: Bump corlib version number to 28.
14630
14631 2004-10-10  Martin Baulig  <martin@ximian.com>
14632
14633         * class-internals.h
14634         (MonoGenericInst): Added `MonoGenericContainer *container'.
14635         (MonoGenericMethod): Likewise.
14636         (MonoGenericContext): Likewise.
14637         (MonoGenericParam): Added `MonoGenericContainer *owner'.
14638
14639         * metadata.c
14640         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
14641         (do_mono_metadata_parse_generic_inst): Likewise.
14642         (mono_metadata_parse_type_full): New public method.  This is the actual
14643         mono_metadata_parse_type() implementation - with an additional
14644         `MonoGenericContainer *' argument.
14645         (mono_metadata_parse_array_full): Likewise.
14646         (mono_metadata_parse_signature_full): Likewise.
14647         (mono_metadata_parse_method_signature_full): Likewise.
14648         (mono_metadata_parse_mh_full): Likewise.
14649         (mono_type_create_from_typespec): Likewise.
14650         (mono_metadata_interfaces_from_typedef_full): New public method;
14651         this is similar to the other _full() methods, but we take a
14652         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
14653         (mono_metadata_parse_generic_param): Take an additional
14654         `MonoGenericContainer *' argument and lookup the MonoGenericParam
14655         from that container.
14656         (mono_metadata_generic_param_equal): New static method to compare
14657         two type parameters.
14658         (_mono_metadata_type_equal): New static method; takes an
14659         additional `gboolean signature_only' argument - if true, we don't
14660         compare the owners of generic parameters.
14661         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
14662         with a TRUE argument - do a signature-only comparision.
14663
14664         * loader.c: Use the new _full() methods and pass the
14665         MonoGenericContainer to them.
14666
14667         * object-internals.h (MonoReflectionTypeBuilder): Added
14668         `MonoGenericContainer *generic_container' field.
14669         (MonoReflectionMethodBuilder): Likewise.
14670
14671 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
14672
14673         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
14674         case initial images of dynamic assemblies.
14675
14676         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
14677
14678         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
14679
14680         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
14681         length of event->other array.
14682         (typebuilder_setup_events): Ditto.
14683
14684         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
14685         'assembly_by_name' and add an 'assemblies' list.
14686
14687         * assembly.h assembly.c: Add a new search hook for determining whenever
14688         an assembly is already loaded. Use this instead of searching in the
14689         loaded_assemblies list.
14690
14691         * domain.c appdomain.c: Implement the new search hook so loaded 
14692         assemblies are now scoped by appdomain. Fixes #67727.
14693
14694 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
14695
14696         * threads.c (mono_thread_attach): Initialize synch_lock field so
14697         mono_thread_detach works again.
14698
14699         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
14700         'lib' too. Fixes #63130.
14701
14702 2004-10-06  Jackson Harper  <jackson@ximian.com>
14703
14704         * culture-info-tables.h: regenerated.
14705
14706 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
14707
14708         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
14709         implemented by other interfaces in the result. Fixes #65764.
14710         
14711         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14712         Handle unloadable modules without crashing.
14713
14714         * image.c (load_modules): Revert the previous patch since modules must
14715         have a fixed index inside the array.
14716         
14717         * image.c (load_modules): Don't include native modules in the modules
14718         array.
14719
14720 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
14721
14722         * reflection.h: Add param_defaults field.
14723
14724         * reflection.c: Add support for parameter defaults in dynamic methods.
14725         Fixes #64595.
14726
14727         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
14728         an empty string when a type has no namespace. Fixes #64230.
14729
14730 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
14731
14732         * tabledefs.h: Added "internal" security actions to support non-CAS
14733         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
14734         Note: they do not seems to be used anymore in 2.0 (new metadata format)
14735
14736 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
14737
14738         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
14739         constructor of abstract class. Fixes #61689.
14740
14741 2004-10-04  Martin Baulig  <martin@ximian.com>
14742
14743         * class-internals.h (MonoGenericContainer): New type.
14744         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
14745         `MonoGenericContainer *generic_container'.
14746         (MonoClass): Replaced `gen_params' and `num_gen_params' with
14747         `MonoGenericContainer *generic_container'.
14748
14749         * metadata.c (mono_metadata_load_generic_params): Return a
14750         `MonoGenericContainer *' instead of a `MonoGenericParam *';
14751         removed the `num' argument.
14752
14753 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
14754
14755         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
14756         for dynamic images.
14757
14758         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
14759         machine fields.
14760
14761         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
14762
14763         * reflection.c: Save pe_kind and machine values into the generated
14764         image file.
14765
14766         * appdomain.c: Bump corlib version number.
14767
14768         * object-internals.h: Reorganize layout of LocalBuilder.
14769
14770         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
14771         New helper function.
14772
14773         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
14774         created MonoType for dynamic types. Fixes #66180.
14775
14776 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
14777
14778         * threadpool.c: the ares hashtable needs a critical section around it.
14779         this prevents some nasty segfaults
14780
14781 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
14782
14783         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
14784         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
14785         bug 67324).
14786         
14787 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14788
14789         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
14790         
14791 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
14792
14793         * image.c: Always canonicalize image file names, to avoid loading
14794         the same assembly twice when referenced using a relative path.
14795
14796 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
14799
14800         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
14801
14802         * marshal.c: Fix warnings.
14803
14804 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
14805
14806         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
14807         attempting to marshal the delegate_trampoline as the method_addr.
14808         This patch has a static hashtable of marshalled delegates so that 
14809         we can map delegate_trampoline addresses back to delegates.  This
14810         allows a delegate passed to managed code to be passed back into native
14811         code.  Fixes #67039
14812
14813 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14814
14815         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
14816
14817         * reflection.c (method_encode_code): Align method headers properly.
14818         Fixes #66025.
14819
14820 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14821
14822         * marshal.c: In the runtime invoke wrapper, reset the abort
14823         exception if it is cached. This avoids the automatic rethrowal of 
14824         the exception after the catch of the wrapper. Also check for pending
14825         interruptions before calling the managed method. This is done using
14826         the new method emit_thread_force_interrupt_checkpoint, since the
14827         normal checkpoint method is ignored when running the invoke wrapper.
14828         * object.c: If the abort exception is rethrown, set the abort_exc
14829         field of the thread, so it will be rethrown aftere every catch.
14830         * threadpool.c: Only run an interruption checkpoint if what has been
14831         requested is a stop of the thread (aborts will be ignored).
14832         * threads.c: By default, a thread will now never be interrumped while
14833         running the runtime invoke wrapper (this ensures that runtime_invoke
14834         will always return to the caller if an exception pointer is provided).
14835         There is a new special method mono_thread_force_interruption_checkpoint()
14836         to force an interruption checkpoint even if running a protected
14837         wrapper, which is used by the same runtime invoke wrapper to do a check
14838         at a safe point.
14839
14840 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
14841
14842         * object.c, object-internals.h: Implemented mono_release_type_locks,
14843         which releases the cctor locks held by a thread.
14844         * threads.c, threads.h: In thread_cleanup, release cctor locks held
14845         by a thread. Added mono_thread_exit() method to be used to safely stop
14846         a thread.
14847
14848 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14849
14850         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
14851         Move null check before dereference.  Avoid indexing beyond the end
14852         of the 'modules' array.
14853
14854 2004-09-28  Raja R Harinath  <rharinath@novell.com>
14855
14856         * metadata-internals.h (MonoImage): Add module_count field.
14857         * image.c (load_modules): Set image->module_count.
14858         (mono_image_load_file_for_image): Use image->module_count.
14859         * reflection.c (mono_image_load_module): Append to image->modules array 
14860         of dynamic assembly.
14861         (mono_module_get_object): Fix loop to actually increment index.
14862         Use image->module_count.
14863         * assembly.c (mono_assembly_load_references): Use image->module_count.
14864         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
14865         Likewise.
14866
14867 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
14868
14869         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
14870         Avoid assert on generic types.
14871
14872 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
14873
14874         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
14875
14876         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
14877
14878         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
14879         function to convert a MarshalSpec structure to its managed counterpart.
14880
14881         * reflection.c: Fix warnings.
14882         
14883         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
14884         field.
14885
14886         * icall.c (mono_create_icall_signature): Fix build.
14887
14888 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
14889
14890         * icall.c: Add MakePointType icall.
14891
14892         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
14893         warnings.
14894
14895 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14896
14897         * threadpool.c: reuse allocated slots in the queue.
14898
14899 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
14900
14901         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
14902
14903         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
14904
14905         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
14906         previous change.
14907
14908         * tabledefs.h: Add constants for pinvoke attributes BestFit and
14909         ThrowOnUnmappableChar.
14910
14911         * icall.c (ves_icall_Type_GetPacking): New icall.
14912
14913 2004-09-24  Martin Baulig  <martin@ximian.com>
14914
14915         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
14916
14917 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14918
14919         * appdomain.c:
14920         (mono_domain_set): allow setting a domain that is being unloaded.
14921         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
14922         being unloaded.
14923
14924 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14925
14926         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
14927         the GetCustomAttributes icall.
14928
14929 2004-09-23  Martin Baulig  <martin@ximian.com>
14930
14931         * object-internals.h (MonoReflectionGenericParam): Replaced
14932         'has_ctor_constraint', `has_reference_type' and `has_value_type'
14933         with `guint32 attrs'.
14934
14935 2004-09-23  Martin Baulig  <martin@ximian.com>
14936
14937         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
14938
14939 2004-09-23  Martin Baulig  <martin@ximian.com>
14940
14941         * object-internals.h (GenericParameterAttributes): New enum.
14942
14943 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
14946         
14947         * class.c (init_events): Fill out event->other field.
14948
14949         * class.c: Fix warnings.
14950
14951         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
14952
14953 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
14954
14955         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
14956         walk which doesn't supply the IL offset.
14957
14958 2004-09-22  Martin Baulig  <martin@ximian.com>
14959
14960         * reflection.c (mono_reflection_setup_internal_class): If we're
14961         System.ValueType, System.Object or System.Enum, set
14962         `klass->instance_size' and create the vtable.
14963         (mono_reflection_create_internal_class): If we're an enum type,
14964         get the base class from our current corlib.
14965
14966 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
14967
14968         * reflection.h (MonoResolveTokenError): New type.
14969
14970         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
14971         icall.
14972
14973         * icall.c: Add an 'error' argument to the ResolveToken icalls.
14974
14975 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
14976
14977         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
14978         Support also calling constructors, but only for already allocated objects.
14979
14980 2004-09-17  Geoff Norton <gnorton@customerdna.com>
14981
14982         * reflection.c (type_get_qualified_name): If the klass is null
14983         return the typename to avoid a NullRefEx.
14984         (encode_cattr_value): Get the qualified name of the boxed type,
14985         not the underlying enumtype.  Fixes #62984.
14986
14987 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
14988
14989         * marshal.c: Fix problems with previous checkin.
14990
14991 2004-09-21    <vargaz@freemail.hu>
14992
14993         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
14994         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
14995
14996         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
14997
14998 2004-09-21  Geoff Norton <gnorton@customerdna.com>
14999
15000         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
15001         should only return a type for pointers, arrays, and passbyref types.
15002         Fixes bug #63841.
15003
15004 2004-09-21  Martin Baulig  <martin@ximian.com>
15005
15006         * domain.c (mono_debugger_check_runtime_version): New public
15007         function.
15008
15009         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
15010
15011 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
15012
15013         * reflection.c: Added missing sort to the declarative security 
15014         attributes table. MS implementation stops seeing the attributes if the
15015         token number regress in the table (as shown by ildasm and permview).
15016
15017 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * object-internals.h (MonoReflectionModule): Add 'token' field.
15020         
15021         * reflection.c (mono_reflection_get_token): Add support for Module
15022         and Assembly.
15023         (mono_module_get_object): Set 'token' field.
15024         (mono_module_file_get_object): Set 'token' field.
15025
15026         * icall.c: Add new Assembly and Module icalls.
15027
15028         * appdomain.c: Bump corlib version.
15029
15030 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
15031
15032         * loader.h loader.c class.h class.c: Add helper functions for obtaining
15033         tokens of metadata objects.
15034
15035         * reflection.h reflection.c (mono_reflection_get_token): New function
15036         to obtain the token of a metadata object.
15037
15038         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
15039
15040 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
15041
15042         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
15043         
15044         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
15045
15046 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
15047
15048         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
15049         * object-internals.h: Added 3 MonoArray* members to MonoReflection
15050         AssemblyBuilder to access the permissions set in the class lib.
15051         * reflection.c: Added security attributes encoding step in 
15052         mono_image_build_metadata.
15053         * tabledefs.h: Added new security actions defined in 2.0:
15054         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
15055
15056 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15057
15058         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
15059         macro parameter.
15060
15061 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
15062  
15063         * locales.c: nullify the ICU_collator member of CompareInfo when it is
15064           finalized. There where random SIGSEVs at program termination, when
15065           an object being finalized was trying to do a string comparison and
15066           the current culture was already finalized.
15067  
15068 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15069
15070         * threads.c: call thread_cleanup before finishing the thread if we get
15071         there.
15072
15073 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
15074
15075         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
15076         assemblies from the parent. Fixes #65665.
15077
15078 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
15081         modifiers.
15082
15083 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
15084
15085         * reflection.h: add prototype for mono_get_dbnull_object
15086         * reflection.c: add prototypes for get_default_param_value_blobs 
15087         and mono_get_object_from_blob for fussier compilers
15088
15089 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
15090  
15091         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
15092         false deadlock checks in class initialization.
15093  
15094 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
15095
15096         * image.c (mono_image_addref): Fix comment.
15097
15098         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
15099         possible.
15100
15101 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
15102
15103         * reflection.c (mono_param_get_objects): Modified to return
15104         ParameterInfo.DefaultValue object.
15105
15106         (get_default_param_value_blobs):
15107         (mono_get_object_from_blob):
15108         (mono_get_dbnull_object): New helper routines. 
15109
15110         * object.c (mono_get_constant_value_from_blob): New helper routine
15111         carved out from get_default_field_value ()
15112
15113         * object-internals.h (mono_get_constant_value_from_blob): Added
15114         function declaration.
15115
15116 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
15117
15118         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
15119         referenced assemblies. Fixes #62135.
15120
15121         * exception.h exception.c (mono_get_exception_file_not_found2): New
15122         helper function.
15123
15124 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
15125
15126         * class.h class.c: Add mono_type_get_underlying_type ().
15127
15128 2004-09-09  Geoff Norton <gnorton@customerndna.com>
15129
15130         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
15131         Fix GetTypes() to support dynamically created assemblies.
15132
15133 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
15134
15135         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
15136         
15137         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
15138         previous patch.
15139
15140         * reflection.h reflection.c loader.c: Allow dynamic construction of
15141         pinvoke methods. Fixes #65571.
15142         
15143         * reflection.c (mono_reflection_get_type): Revert previous change since
15144         it causes regressions.
15145
15146 2004-09-08  Martin Baulig  <martin@ximian.com>
15147
15148         * class.c (class_compute_field_layout): Don't call
15149         mono_class_layout_fields() for open generic instances.
15150
15151 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
15152         * threads.c appdomain.c: fix typo in GC macro
15153
15154 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15155
15156         * threads.c: don't call mono_thread_detach() in start_wrapper(),
15157         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
15158
15159 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
15160
15161         * image.c (mono_image_close): Applied patch from 
15162         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
15163         assembly is loaded multiple times from data.
15164         
15165         * image.c (mono_image_open): Fix warning.
15166
15167 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15168
15169         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
15170         once. Fixes #58334.
15171         
15172         * reflection.c (mono_reflection_create_runtime_class): Initialize
15173         klass->nested_classes. Fixes #61224.
15174
15175 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15176
15177         * threads.c: sched_yield() on exit, to allow threads to quit.
15178
15179 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15180
15181         * object.c (mono_unhandled_exception): Remove leftover debug code.
15182
15183 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
15184
15185         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
15186
15187 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
15188
15189         * marshal.c (emit_marshal_array): Really null terminate string arrays.
15190         
15191         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
15192
15193 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15194
15195         * marshal.c (emit_marshal_array): Null terminate string arrays.
15196         
15197         * marshal.c (raise_auto_layout_exception): Fix warning.
15198
15199         * reflection.c (mono_param_get_objects): Initialize the default value
15200         with DBNull.Value, not null. Fixes #62123.
15201
15202 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
15203
15204         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
15205         throw an exception with a cute explanation.
15206
15207 2004-09-06  Dick Porter  <dick@ximian.com>
15208
15209         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
15210         Close the new process's thread handle, as we don't use it.  The
15211         handle stays around forever otherwise.
15212
15213 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15214
15215         * object.c (arith_overflow): Fix warning.
15216
15217         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
15218         calling conventions in method refs. Fixes #65352.
15219
15220         * reflection.c: Fix warnings.
15221
15222 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15223
15224         * icall.c: Add a new icall for Array.Clear
15225
15226 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
15227
15228         * object.c: When allocating an array, we have to throw
15229         an overflow exception if any of the lengths are < 0.
15230
15231 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
15232
15233         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
15234         properly. Also move implementation of string array marshalling to 
15235         managed code. Fixes #42316.
15236
15237 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15238
15239         * assembly.c: provide more information when loading an assembly fails.
15240
15241 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15242
15243         * filewatcher.c: don't expect the development fam package to be
15244         installed.
15245
15246 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
15247
15248         * marshal.c: Make a copy of the signature cookie since it will be
15249         freed by the caller.
15250         
15251         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
15252
15253         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
15254
15255         * metadata.c (mono_metadata_free_marshal_spec): New function to free
15256         marshal specs.
15257
15258         * marshal.c: More refactoring.
15259         
15260         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
15261         smaller functions.
15262
15263 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
15264
15265         * object.c: In mono_message_invoke, fill the output parameter array after
15266           calling the managed method (it was done before the call). This fixes
15267           bug #59299.
15268
15269 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15270
15271         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
15272         as well.
15273
15274 2004-09-02  Martin Baulig  <martin@ximian.com>
15275
15276         * class.c (mono_class_instance_size): Don't allow generic type
15277         definitions or open generic instances.
15278         (mono_class_array_element_size): If we're a value type, call
15279         mono_class_instance_size() on the original class.
15280
15281         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
15282         handle generic instances.
15283
15284         * mono-debug-debugger.c (write_type): Handle generic instances
15285         like classes.
15286
15287 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
15288
15289         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
15290         the allocation request fails. Fixes #65089.
15291
15292         * object.c (mono_runtime_free_method): Do not call mono_free_method.
15293         
15294         * object.c (mono_runtime_free_method): New function to free a dynamic
15295         method.
15296
15297         * marshal.c (mono_delegate_free_ftnptr): New function to free the
15298         delegate trampoline.
15299
15300         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
15301         with hasthis as dynamic,
15302
15303         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
15304
15305         * domain.c (mono_jit_info_table_remove): New function to remove an
15306         entry from the jit info table.
15307
15308         * class-internals.h (MonoMethod): Add 'dynamic' field.
15309
15310         * loader.c: Fix warnings.
15311
15312 2004-09-01  Martin Baulig  <martin@ximian.com>
15313
15314         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
15315         instead of mono_debugger_lock() because the latter one is a no-op
15316         unless running in the debugger.
15317
15318 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15319
15320         * class.c (class_compute_field_layout): Classes with auto-layout or
15321         reference fields are not blittable.
15322         
15323 2004-09-01  Dick Porter  <dick@ximian.com>
15324
15325         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
15326         mono_image_get_filename() to get the assembly location.
15327
15328         * icall.c:
15329         * metadata.h: Fix compile warnings
15330
15331 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
15332
15333         * class.c (class_compute_field_layout): System.Object is blittable.
15334
15335         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
15336         as in/out. Fixes #59909.
15337
15338 2004-09-01  Martin Baulig  <martin@ximian.com>
15339
15340         * metadata.h (MONO_TYPE_ISREFERENCE): Call
15341         mono_metadata_generic_inst_is_valuetype() if we're a generic
15342         instance to check whether our underlying type is a reference type.
15343
15344 2004-09-01  Martin Baulig  <martin@ximian.com>
15345
15346         * metadata.c (mono_type_size): If we're a generic instance, call
15347         mono_class_value_size() for value types.
15348
15349 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
15350
15351         * marshal.c: Implement more custom marshalling functionality. Fixes
15352         #64915.
15353
15354 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15355
15356         * mono-debug.c, debug-mono-symfile.c: add some locking love.
15357
15358 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
15359
15360         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
15361
15362         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
15363
15364         * icall.c: Fix some warnings.
15365
15366         * threads.c (abort_appdomain_thread): Fix unref errors.
15367         (mono_thread_current): Fix THREAD_DEBUG define.
15368
15369 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
15370
15371         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
15372
15373         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
15374
15375 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
15378         string arrays.
15379
15380 2004-08-28  Martin Baulig  <martin@ximian.com>
15381
15382         * metadata.c
15383         (mono_metadata_generic_inst_is_valuetype): New public function.
15384
15385         * metadata.h (MONO_TYPE_ISSTRUCT): Call
15386         mono_metadata_generic_inst_is_valuetype() if we're a generic
15387         instance to check whether our underlying type is a valuetype.
15388
15389 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
15390
15391         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
15392         #63768.
15393
15394 2004-08-25  Martin Baulig  <martin@ximian.com>
15395
15396         * loader.c (mono_get_method_from_token): Abstract methods can also
15397         be generic and thus have type parameters.
15398
15399         * metadata-internals.h
15400         (MonoDynamicImage): Added `GPtrArray *gen_params'.
15401
15402         * reflection.c (mono_image_get_generic_param_info): Don't create a
15403         metadata row, just add an entry to the `gen_params' array.
15404         (build_compressed_metadata): Sort the `gen_params' array and then
15405         actually create the metadata.
15406
15407 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15408
15409         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
15410
15411 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
15412
15413         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
15414
15415 2004-08-24  Martin Baulig  <martin@ximian.com>
15416
15417         * class.cs (mono_class_is_subclass_of): Like an interface, a
15418         generic instance also derives from System.Object.
15419
15420 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
15421
15422         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
15423         custom modifiers to be in any order. Fixes #61990.
15424
15425 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
15426
15427         * object.c: Register mono_object_new_fast icall.
15428         
15429         * object.c (mono_class_get_allocation_ftn): Return to calling
15430         mono_object_new_fast, since it seems faster to compute the object 
15431         size in unmanaged code than passing it as a parameter.
15432
15433         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
15434
15435         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
15436         this function with Boehm as the oom handler, so we don't have to check
15437         the result of GC_malloc.
15438
15439         * object.c: Remove checks for oom.
15440
15441         * object.h object.c (mono_class_get_allocation_ftn): New function to
15442         return the icall which can be used to allocate an instance of a given
15443         class. 
15444
15445         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
15446
15447         * class-internals.h: Add 'enabled' field.
15448
15449 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
15450
15451         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
15452
15453 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
15454         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
15455         value 0x0010.
15456
15457 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15458
15459         * appdomain.c: use the Tls function for appdomain too,
15460         at Zoltan's request. Actually return in mono_context_get
15461
15462         * appdomain.c, profiler.c, threads.c: use __thread
15463
15464 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
15465
15466         * appdomain.c threads.c: Call GC_CreateThread on windows.
15467
15468         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
15469         multiple libraries since this don't work on windows.
15470
15471 2004-08-18  Martin Baulig  <martin@ximian.com>
15472
15473         * class-internals.h
15474         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
15475         MonoMethodHeader.
15476
15477         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
15478         MonoMethodNormal since we also need it for abstract and interface
15479         methods.
15480
15481         * reflection.c
15482         (build_compressed_metadata): Sort the GenericParam table.
15483         (mono_image_create_token): Added `gboolean create_methodspec'
15484         argument; this is false when generating a MethodImpl token.
15485         (reflection_methodbuilder_to_mono_method): Abstract and interface
15486         methods may also have generic parameters.
15487
15488 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15489
15490         * appdomain.c: thread local alloc
15491
15492 2004-08-17  Martin Baulig  <martin@ximian.com>
15493
15494         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
15495
15496         * icall.c
15497         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
15498         argument.
15499
15500         * class.c (mono_type_get_full_name): New public function.
15501         (mono_type_get_name): Don't include the type arguments.
15502
15503 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
15504
15505         * Makefile.am: Build static versions of libmetadata and libmonoruntime
15506         for inclusion into the mono executable.
15507
15508 2004-08-16  Martin Baulig  <martin@ximian.com>
15509
15510         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
15511         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
15512
15513 2004-08-14  Martin Baulig  <martin@ximian.com>
15514
15515         * class.c (dup_type): Also copy the `byref' field.
15516
15517 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
15518
15519         * reflection.c (create_dynamic_mono_image): Revert the last change 
15520         since it breaks bootstrap.
15521
15522 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
15523
15524         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
15525
15526         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
15527         not free them with g_free.
15528
15529 2004-08-11  Martin Baulig  <martin@ximian.com>
15530
15531         * reflection.c (mono_reflection_setup_internal_class): Also call
15532         mono_class_setup_mono_type() if we already have a `tb->type.type'.
15533
15534 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
15535
15536         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
15537         called during default (first) AppDomain creation. Keep track of
15538         Evidence when loading assemblies.
15539
15540 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15541
15542         * opcodes.c, opcodes.h: reduce runtime relocations.
15543
15544 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
15545
15546         * culture-info.h, locales.c: fixes and chages to sue the new
15547         optimized format of the locale data.
15548         * culture-info-tables.h: regenerated.
15549
15550 2004-08-06  Geoff Norton <gnorton@customerdna.com>
15551         
15552         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
15553
15554 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
15555
15556         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
15557         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
15558         * domain-internals.h: icall declaration.
15559         * icall.c: icall registration.
15560         * object-internals.h: New fields in MonoAssembly for CAS.
15561
15562 2004-08-05  Duncan Mak  <duncan@ximian.com>
15563
15564         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
15565         CEE_LDELEM_ANY.
15566
15567 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
15568
15569         * reflection.c: fix to deal with object[] arrays in custom ctors
15570         (bug #62550).
15571
15572 2004-08-05  Martin Baulig  <martin@ximian.com>
15573
15574         * class.c (mono_class_array_element_size): Added support for
15575         generic instances and correctly handle "recursive" types.
15576
15577 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
15578
15579         * assembly.c: Fix warnings.
15580
15581 2004-08-04  Martin Baulig  <martin@ximian.com>
15582
15583         * class.c
15584         (mono_type_get_name_recurse): Added `gboolean include_arity'
15585         argument specifying whether or not we should include the generic
15586         arity in the type name.
15587         (_mono_type_get_name): New static function.
15588         (mono_class_setup_vtable): If we're a generic instance, don't
15589         include the generic arity in the names of explicit method
15590         implementations.        
15591
15592 2004-08-03  Martin Baulig  <martin@ximian.com>
15593
15594         * class.c (mono_type_get_name_recurse): Enclose the generic type
15595         arguments in `<', '>'.
15596
15597 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15598
15599         * gc.c: make GC warning messages use the trace API, they are just
15600         noise to most of the users.
15601
15602 2004-08-03  Martin Baulig  <martin@ximian.com>
15603
15604         * debug-mono-symfile.c (read_string): Correctly read the string.
15605
15606 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
15607
15608         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
15609         
15610         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
15611         icalls.
15612         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
15613
15614 2004-07-30  Martin Baulig  <martin@ximian.com>
15615
15616         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
15617         Reflect latest symbol writer changes.   
15618
15619 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15620
15621         * object.c: always create an object if null is passed
15622         to Invoke() where a valuetype is expected.
15623
15624 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
15625
15626         * marshal.c (mono_marshal_init): make managed
15627         signatures match native ones better for 64bits.
15628
15629 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15630
15631         * appdomain.c: hack to build correctly the private bin path on windows.
15632         Fixes bug #61991.
15633
15634 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
15635
15636         * assembly.c: Load mscorlib from the correct framework directory
15637           (mono/<version>/mscorlib.dll).
15638         * appdomain.h: Added prototypes for new functions.
15639         * internals.h: Added some prototypes.
15640         * domain.c: When initializing the runtime, get from the executable and
15641           the configuration files the runtime version that the app supports.
15642           Added support methods for reading app.exe.config. Added list of versions
15643           supported by the JIT. Added two new methods: mono_init_from_assembly,
15644           which initializes the runtime and determines the required version from
15645           the provided exe file, and mono_init_version, which initializes
15646           the runtime using the provided version.
15647         * icall.c: Get machine.config from version-specific directory.
15648         * reflection.c: When generating an image, embed the version number
15649           of the current runtime.
15650
15651 2004-07-28  Dick Porter  <dick@ximian.com>
15652
15653         * socket-io.c
15654         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
15655         returned sockaddr size before creating the remote address object.
15656         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
15657         61608.
15658
15659 2004-07-28  Dick Porter  <dick@ximian.com>
15660
15661         * locales.c (string_invariant_compare_char): Fix invariant char
15662         compares between upper and lower cases.  Fixes bug 61458.
15663
15664 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
15665         
15666         * marshal.c: actually cache stelem.ref wrappers.
15667         
15668 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15669
15670         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
15671         sections and remove the mono_cli_rva_map () function.
15672
15673 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15674
15675         * debug-mono-symfile.c: fix one more endianess issue, from a patch
15676         by Geoff Norton (<gnorton@customerdna.com>).
15677
15678 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15679
15680         * class.c: fix class loads for pointer types (typeof(int) !=
15681         typeof(int*)).
15682
15683 2004-07-27  Martin Baulig  <martin@ximian.com>
15684
15685         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
15686         reading the debugging information from an external ".mdb" file.
15687
15688 2004-07-24  Martin Baulig  <martin@ximian.com>
15689
15690         * reflection.c (mono_image_get_type_info): Only write a class
15691         layout entry if we actually have a size or a packing size.
15692
15693 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15694
15695         * reflection.c (type_get_fully_qualified_name): 
15696         insert cast to get type checking of ?: with non-gcc compilers
15697
15698 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
15699
15700         * rand.c: use g_getenv for both lookups of
15701         MONO_EGD_SOCKET
15702
15703 2004-07-17  Martin Baulig  <martin@ximian.com>
15704
15705         * reflection.c (mono_reflection_bind_generic_method_parameters):
15706         Set `gmethod->reflection_info'.
15707
15708 2004-07-17  Martin Baulig  <martin@ximian.com>
15709
15710         * class.c (mono_class_create_from_typedef): Insert the newly
15711         created class into the hash table before computing the interfaces
15712         since we could be called recursively.
15713
15714 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
15715
15716         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
15717         function to implement stelem.ref in managed code
15718         * class-internals.h, debug-helpers.c: a new wrapper type
15719         for the above.
15720
15721 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
15722
15723         * gc.c: allow GC handles to work even when no GC is compiled in.
15724         Fix part of bug #61134 (GetAddrOfPinnedObject).
15725
15726 2004-07-13  Peter Williams  <peter@newton.cx>
15727  
15728         * process.c (complete_path): Make sure we don't attempt to execute
15729         directories.
15730  
15731 2004-07-12  Geoff Norton <gnorton@customerdna.com>
15732
15733         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
15734           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
15735           and will add/subtract the hour if needed
15736
15737 2004-07-12  Martin Baulig  <martin@ximian.com>
15738
15739         * reflection.c (mono_field_get_object): If we have
15740         `field->generic_info', take the attributes from
15741         `field->generic_info->generic_type'.    
15742
15743 2004-07-12  Martin Baulig  <martin@ximian.com>
15744
15745         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
15746         This function must be called before initializing the runtime.
15747         (mono_debug_init_1): New function; call this after initializing
15748         the runtime, but before loading the assembly.  It tells the
15749         debugger to load corlib and the builtin types.
15750
15751         * mono-debug-debugger.c: Did some larger changes in the debugging
15752         code; support recursive class declarations, make sure we actually
15753         add all classes.
15754
15755 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15756
15757         * debug-helpers.c: undo my previous patch and fixed the real issue in
15758         ../mini/exceptions-x86.c
15759
15760 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15761
15762         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
15763         when no HOME env. variable was set and a NullRef was thrown in a .cctor
15764         called from other .cctors.
15765
15766 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
15767
15768         * loader.c: Removed the mono_loader_wine_init hack now that we are
15769         doing a managed version of Windows.Forms.
15770
15771 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
15772
15773         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
15774         threadpool.c, threads.c: remove static data from rootset.
15775
15776 2004-07-09  Dick Porter  <dick@ximian.com>
15777
15778         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
15779         Don't do any more processing if the matched length was 0.  It was
15780         increasing the size of the string before.  Fixes bug 61167.
15781
15782 2004-07-09  Dick Porter  <dick@ximian.com>
15783
15784         * socket-io.h:
15785         * socket-io.c
15786         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15787         Add support for SO_PEERCRED if its available.
15788
15789 2004-07-09  Peter Bartok <pbartok@novell.com>
15790         * loader.c: winelib.exe.so error message is now only displayed if
15791         MONO_DEBUG is set. To help us avoid questions when people are trying
15792         out the new Managed.Windows.Forms.
15793
15794 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
15795
15796         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
15797         for isinst and castclass wrappers.
15798
15799         * class-internals.h icall.c: Move registration and lookup of JIT icalls
15800         to libmetadata from the JIT, so they could be used by the marshalling
15801         code and the interpreter.
15802
15803         * marshal.c: Register marshalling related JIT icalls here instead of
15804         in mini.c. Use CEE_MONO_ICALL instead of the family of 
15805         CEE_MONO_PROC<x> opcodes to call marshalling functions.
15806
15807         * metadata.h: Remove unneeded marshalling conversions.
15808
15809         * opcodes.c: Update for new opcodes.
15810         
15811 2004-07-08  Martin Baulig  <martin@ximian.com>
15812
15813         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
15814         (mono_debug_get_domain_data): Make this function static.
15815
15816 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
15817
15818         * gc.c, object.h: add nice GC handle API for embedders.
15819
15820 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
15821
15822         * reflection.c: more changes for the new api
15823
15824         * object.c: When we reflect on a field w/ a constant value, it
15825         will not have a memory location, so we must access metadata. Also,
15826         allow easier reading of strings so that we can read them from
15827         the constant data.
15828
15829         * class.c (mono_class_layout_fields): no need for literal fields here.
15830
15831         * class-internals.h: api changes for const fields
15832
15833         * icall.c (ves_icall_get_enum_info): use new apis for const fields
15834
15835 2004-07-06  Martin Baulig  <martin@ximian.com>
15836
15837         * mono-debug.h: Increment version number to 44.
15838
15839         * mono-debug.c (mono_debug_add_wrapper): The second argument is
15840         now a gpointer, rewrote this whole method.
15841
15842         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
15843         function.  Add information about the wrapper in a new "misc table".
15844
15845         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
15846         for the new misc table.
15847
15848 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
15849
15850         * metadata-internals.h image.c: Add a cache for helper signatures.
15851
15852         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
15853
15854 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
15855
15856         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
15857         delegates from a delegate. Fixes #61033.
15858         
15859         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
15860         marshalling of stringbuilder arrays. Fixes #59900.
15861
15862 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
15863
15864         * icall.c: Add EnumBuilder:setup_enum_type icall.
15865
15866 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
15867
15868         * icall.c: Added a new icall for the property version of
15869         OffsetOfStringData.
15870
15871 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
15872
15873         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
15874         it has a constant size across platforms.
15875
15876         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
15877         stack trace.
15878
15879 2004-06-29  Martin Baulig  <martin@ximian.com>
15880
15881         * mono-debug.c (mono_debug_add_method): Protect the whole function
15882         in mono_debugger_lock(), not just parts of it.
15883
15884 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
15885
15886         * reflection.c: make sure padding bytes in heaps are zeroed.
15887
15888 2004-06-24  David Waite  <mass@akuma.org>
15889
15890         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
15891         image.c, loader.c, locales.c, marshal.c, metadata.c,
15892         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
15893         string-icalls.c, threads.c: change to C90-style comments from C99 /
15894         C++ -style
15895
15896 2004-06-24  Dick Porter  <dick@ximian.com>
15897
15898         * threads.c
15899         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
15900         return createdNew.  Fixes bug 60412.
15901
15902         * threads-types.h: 
15903         * icall.c: Add createdNew parameter to CreateMutex icall
15904
15905 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15906
15907         * reflection.c, object-internals.h: save default value in params.
15908
15909 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15910
15911         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
15912         no need to build a new path combining that with the application base.
15913         Fixes bug #60442.
15914
15915 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
15916
15917         * reflection.c: fixed minor standard compliance issues.
15918
15919 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
15920
15921         * reflection.c: fixed issue with encoding some custom attributes
15922         (arrays in properties and fields, bug #60411).
15923
15924 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15925
15926         * reflection.c: fix start address when copying the public key token.
15927
15928 2004-06-23  Martin Baulig  <martin@ximian.com>
15929
15930         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
15931         the `exc' object in a static object to put it into the GC's root set.
15932
15933 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15934
15935         * reflection.c: make mono_reflection_setup_internal_class ()
15936         callable a second time to setup a new parent class.
15937
15938 2004-06-23  Dick Porter  <dick@ximian.com>
15939
15940         * threads.c: Check for WAIT_IO_COMPLETION return values.
15941
15942 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
15943
15944         * appdomain.c: Removed the g_free on the public key token. Now copy 
15945         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
15946         * assembly.c: Added public key token string value when loading 
15947         assemblies. Fix bug #60439.
15948         * icall.c: Added missing informations (like public key) in 
15949         GetReferencedAssemblies. Fix #60519.
15950         * image.h: Changed definition for public key token from const char*
15951         public_tok_value to guchar public_key_token [17];
15952         * reflection.c: Updated for changes to public key token.
15953
15954 2004-06-22  Lluis Sanchez Gual
15955
15956         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
15957         for the field in base classes.
15958
15959 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
15960
15961         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
15962         mark headers as not supported, they are installed only for use by the
15963         debugger.
15964
15965 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
15966
15967         * *.c, *.h: avoid namespace pollution in public headers.
15968
15969 2004-06-21  Martin Baulig  <martin@ximian.com>
15970
15971         * exception.c (mono_get_exception_security): It's in
15972         "System.Security", not in "System".
15973
15974         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
15975         the exception classes.
15976
15977 2004-06-21  Martin Baulig  <martin@ximian.com>
15978
15979         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
15980         Protect the exception object from being finalized.
15981
15982 2004-06-21  Martin Baulig  <martin@ximian.com>
15983
15984         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
15985         public function.
15986
15987 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
15988
15989         * reflection.c: Load the assembly in mono_reflection_type_from_name,
15990         if it was not loaded before. Fix parts of #60439.
15991
15992 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
15993
15994         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
15995         code that was broken since Ben's change: wrappers are now
15996         dependent on the method signature only again.
15997
15998 2004-06-21  Martin Baulig  <martin@ximian.com>
15999
16000         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
16001         added interface support.
16002
16003 2004-06-21  Martin Baulig  <martin@ximian.com>
16004
16005         * class.c (mono_vtable_get_static_field_data): New public method.
16006
16007 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
16008
16009         * filewatcher.c : Windows build fix to be compliant with API changes.
16010
16011 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16012
16013         * class.h, class.c: more accessors.
16014         * metadata.h, metadata.c: prepare for hiding MonoType and
16015         MonoMethodSignature: people should use the accessors from now on
16016         outside of the tree.
16017
16018 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
16019
16020         * *.c, *.h: more API cleanups.
16021
16022 2004-06-18  Jackson Harper  <jackson@ximian.com>
16023
16024         * assembly.c: Trace loading assemblies.
16025         * loader.c: Trace loading native libraries.
16026         * mono-config.c: Trace loading config files.
16027         
16028 2004-06-18  Dick Porter  <dick@ximian.com>
16029
16030         * locales.c: Tell ICU the lengths of strings, it can cope with
16031         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
16032
16033 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16034
16035         * image.c: swapped name/filename;
16036
16037 2004-06-18  Martin Baulig  <martin@ximian.com>
16038
16039         * mono-debug-debugger.c (write_class): Write the parent class at
16040         the end of the header.
16041
16042 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16043
16044         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
16045
16046 2004-06-17  Raja R Harinath  <rharinath@novell.com>
16047
16048         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
16049         (bundle_obj): New conditional define.
16050         (BUILT_SOURCES): Remove.
16051         ($(bundle_srcs)): Make parallel-make safe.
16052         (libmonoruntime_la_LIBADD): Make unconditional.
16053         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
16054         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
16055
16056 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
16057
16058         * culture-info-tables.h: It was inconsistent with the latest
16059           supp info files.
16060
16061 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
16062
16063         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
16064         be loaded.
16065
16066         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
16067         with gcc 2.95.
16068
16069 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16070
16071         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
16072         cleaned up public header threads.h.
16073
16074 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16075
16076         * Makefile.am, *.c, *.h: more API cleanups.
16077
16078 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16079
16080         * Makefile.am: removed monosn from compilation.
16081         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
16082         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
16083         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
16084         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
16085         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
16086         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
16087
16088 2004-06-15  Jackson Harper  <jackson@ximian.com>
16089
16090         * assembly.c: Make locales lower case when searching the GAC for
16091         assemblies. gacutil will always make locales lowercase when
16092         installing so this effectively makes them case insensitive.
16093         
16094 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
16095
16096         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
16097         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
16098           parameter which allows to choose whether the wait can be interrupted or 
16099           not. Also added the method mono_monitor_enter(), which locks the monitor
16100           using an infinite wait and without allowing interruption.
16101           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
16102           interrupted.
16103         * object.h: Added new fields in MonoThread. suspend_event holds the event
16104           used to susped/resume the thread. synch_lock is the lock object to use for
16105           modifying the thread state.
16106         * threads.c: Use the new synch_lock object for locking, instead of "this",
16107           which can generate deadlocks.
16108           Moved thread state change in Thread.Sleep and Thread.Join from managed
16109           to unmanaged code. This avoids a deadlock when the thread was suspended
16110           just after acquiring the thread lock.
16111           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
16112           Implemented Thread.Suspend using an event instead of ThreadSuspend,
16113           which is not fully implemented in the io-layer.
16114         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
16115
16116 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
16117
16118         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
16119         threads-types.h: more API cleanups.
16120
16121 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16122
16123         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
16124         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
16125         threadpool.c, threads.c: first pass at the exported API cleanup.
16126
16127 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16128
16129         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
16130
16131 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16132
16133         * icall.c: added internalGetHome.
16134
16135 2004-06-14  Dick Porter  <dick@ximian.com>
16136
16137         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
16138         possible to return successfully when '.' or '..' were the only
16139         entries in a directory, but were skipped.  The MonoIOStat was not
16140         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
16141         Fixes bug 59574.
16142
16143 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16144
16145         * reflection.c: make binaries run on .Net 1.1 by default.
16146
16147 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16148
16149         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
16150
16151 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
16152
16153         * marshal.c: keep track of struct size with explicit layout
16154         (bug #59979).
16155
16156 2004-06-12  Martin Baulig  <martin@ximian.com>
16157
16158         * mono-debug-debugger.c: Comment out a debugging g_message().
16159
16160 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16161
16162         * reflection.c, reflection.h: do not free custom attrs that are cached.
16163         * icall.c: use braces to make code clearer.
16164
16165 2004-06-11  Martin Baulig  <martin@ximian.com>
16166
16167         * class.h (MonoInflatedField): New type.
16168         (MonoClassField): Replaced `MonoType *generic_type' with
16169         `MonoInflatedField *generic_info'.
16170
16171         * icall.c
16172         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
16173
16174 2004-06-11  Martin Baulig  <martin@ximian.com>
16175
16176         * reflection.c (mono_image_create_method_token): Correctly encode
16177         varargs methods.
16178
16179 2004-06-11  Martin Baulig  <martin@ximian.com>
16180
16181         * metadata.c (mono_metadata_parse_method_signature): When parsing
16182         a MethodDef which has VarArgs, also set sentinelpos if we don't
16183         have any parameters.
16184
16185 2004-06-11  Martin Baulig  <martin@ximian.com>
16186
16187         * verify.c (mono_method_verify): In CEE_CALL, use
16188         mono_method_get_signature() to get the method's signature, unless
16189         we're a PInvoke method.
16190
16191 2004-06-10  Jackson Harper  <jackson@ximian.com>
16192
16193         * assembly.c: Use <path>/lib/mono/gac for the extra paths
16194         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
16195         logical name as the supplied path is just a prefix to the gac not
16196         the direct path to it.
16197         
16198 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
16199
16200         * reflection.c: make the token for a created method match
16201         the token of the MethodBuilder it was created from
16202         (IKVM requires this behaviour now).
16203
16204 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
16205
16206         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
16207         reflection.c, socket-io.c: leak fixes.
16208
16209 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
16210
16211         * icall.c: handle sentinel pos in vararg methods in position different
16212         from 0.
16213
16214 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16215
16216         * culture-info-tables.h: freshly generated.
16217
16218 2004-06-09  Martin Baulig  <martin@ximian.com>
16219
16220         * loader.c (mono_get_method_constrained): Call `mono_class_init
16221         (constrained_class)'.   
16222
16223 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
16224
16225         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
16226         any methods. Fixes #59629.
16227
16228 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16229
16230         * culture-info-tables.h: reflecting locale-builder updates.
16231
16232 2004-06-08  Dick Porter  <dick@ximian.com>
16233
16234         * object.h:
16235         * locales.c: Fixed compile warnings, including a real bug in
16236         CompareInfo_internal_compare.
16237         
16238 2004-06-08  Dick Porter  <dick@ximian.com>
16239
16240         * locales.c
16241         (ves_icall_System_Globalization_CompareInfo_internal_index):
16242         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16243         Double-check the resuls of usearches, because ICU currently
16244         ignores most of the collator settings here.  Fixes bug 59720.
16245         
16246 2004-06-08  Dick Porter  <dick@ximian.com>
16247
16248         * locales.c
16249         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
16250         Fix memory leak and segfault-causing typo.  No idea how this one
16251         lasted so long without being noticed.
16252
16253 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
16254
16255         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
16256         any methods. Fixes #59629.
16257
16258 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16259
16260         * assembly.c:
16261         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
16262         own the critical section before). Removed dead code (that's done
16263         in the preload hook).
16264
16265         (mono_assembly_load_with_partial_name): call the preload hook.
16266
16267 2004-06-08  Martin Baulig  <martin@ximian.com>
16268
16269         * metadata.c (mono_metadata_signature_alloc): Default
16270         `sentinelpos' to -1.
16271
16272         * reflection.c (mono_image_get_array_token): Likewise.
16273
16274 2004-06-08  Martin Baulig  <martin@ximian.com>
16275
16276         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
16277
16278         * metadata.c (mono_metadata_parse_method_signature): When parsing
16279         a MethodDef which has VarArgs, set sentinelpos.
16280
16281         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
16282         `gint16' since we're using -1 for non-varargs methods.
16283
16284         * reflection.c
16285         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
16286         (method_encode_signature): Added varargs support.
16287         (method_builder_encode_signature): Likewise.
16288         (mono_image_get_varargs_method_token): New static method.
16289         (mono_image_create_method_token): New public method; this is
16290         called via an icall instead of mono_image_create_token() when
16291         calling a varargs method.       
16292
16293 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
16294
16295         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
16296
16297 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16298
16299         * culture-info-tables.h : Reflecting the latest locale-builder that
16300           fixed empty array representation ({} to {0}).
16301
16302 2004-06-07  Jackson Harper  <jackson@ximian.com>
16303
16304         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
16305         looking up extra gac paths. This allows MONO_GAC_PATH to act
16306         exactly like a prefix.
16307         
16308 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16309
16310         * reflection.c (mono_reflection_type_from_name): Make a copy of the
16311         type name before modifying it. Fixes #59405.
16312
16313 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16314
16315         * culture-info.h: added fields for "all datetime patterns".
16316         * locales.c: (  ves_icall_System_Globalization_CultureInfo
16317           _construct_datetime_format ()): fill xxx_patterns fields.
16318         * object.h: added fields for "all datetime patterns" to
16319           MonoDateTimeFormatInfo.
16320         * culture-info-tables.h: reflecting locale-builder updates.
16321
16322 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
16323
16324         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
16325         the event has no add and remove methods. Fixes #59629.
16326
16327 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
16328
16329         * object.c: Fixed possible integer overflow when allocating large
16330         strings.
16331
16332 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16333
16334         * culture-info-tables.h: reflecting locale-builder updates.
16335
16336 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
16337
16338         * culture-info-tables.h: reflecting locale-builder updates.
16339
16340 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
16341
16342         * culture-info-tables.h: reflecting locale-builder updates.
16343
16344 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
16345
16346         * threads.c: Made Thread.Sleep abortable.
16347
16348 2004-06-02  Martin Baulig  <martin@ximian.com>
16349
16350         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
16351
16352         * debug-mono-symfile.h: Bumped symbol file version number to 37.
16353
16354 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
16355
16356         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
16357
16358 2004-05-30  Jackson Harper  <jackson@ximian.com>
16359
16360         * reflection.c: Do not hardcode assembly versions or public key
16361         tokens anymore. All of this except the corlib section was dead
16362         code anyways.
16363         
16364 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
16365
16366         * object.c (mono_runtime_invoke_array): Automatically create boxed
16367         objects for byref valuetypes if needed. Fixes #59300.
16368         
16369         * object.c (mono_method_return_message_restore): Handle 
16370         MONO_TYPE_OBJECT as well.
16371
16372 2004-05-28  Jackson Harper  <jackson@ximian.com>
16373
16374         * reflection.c: The modified type encoding was causing build
16375         problems. Reverted for now.
16376         
16377 2004-05-28  Jackson Harper  <jackson@ximian.com>
16378
16379         * reflection.c/h: Take an assembly ref so that we dont create
16380         fully qualified names when encoding types in the same assembly as
16381         the custom attribute being emitted.
16382         * appdomain.c: Increment version number.
16383         
16384 2004-05-26  Duncan Mak  <duncan@ximian.com>
16385
16386         * icall.c
16387         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
16388         Set the full version number (major, minor, build, revision).
16389
16390 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
16391
16392         * marshal.c (emit_struct_conv): increment src/dst after blit
16393         (mono_marshal_get_managed_wrapper,
16394         mono_marshal_get_native_wrapper): make sure we have marshalling
16395         info before marshalling params (info computation affects
16396         blittable)
16397
16398         * class.c (class_compute_field_layout): correctly deal with
16399         blittable
16400         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
16401         value types (as per what windows dows by default)
16402         (mono_class_setup_mono_type): System.ValueType is blittable
16403         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
16404         blittable
16405
16406         * marshal.c (mono_marshal_load_type_info): flag types  as
16407         non-blittable if the native layout doesn't match the managed
16408         layout
16409
16410 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16411
16412         * appdomain.c: don't add stuff in the private search path that is
16413         above the application base. If application base is not set, there's
16414         no private search path.
16415
16416 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
16417
16418         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
16419         byref struct arguments in native->managed marshalling.
16420
16421 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
16422
16423         * marshal.c (mono_marshal_get_runtime_invoke): correctly
16424         cache methods using signature (special case for methods
16425         that are value type or string class)
16426         
16427         * image.c (mono_image_close): clean up allocated GSList's
16428         in runtime_invoke_cache.
16429
16430 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16431
16432         * mono-config.c: set the correct path for mono_cfg_dir on windows when
16433         there's no MONO_CFG_DIR environment variable defined.
16434
16435 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16436
16437         * threads.c: windows version must be >= 0x0500 to include OpenThread.
16438
16439 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
16440
16441         * threadpool.c: Really wait for 500ms after the async call, even if the wait
16442           is interrumped.
16443         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
16444           before waiting for it, and call CloseHandle after the wait to unref it.
16445           This will make sure that handles are not disposed too early.
16446
16447 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16448
16449         * appdomain.c:
16450         * appdomain.h:
16451         * icall.c: removed
16452         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
16453         needed now.
16454
16455         * object.c: se the application_base only for the domain that runs
16456         Main. Fixes bug #59216,
16457
16458 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16459
16460         * appdomain.c:
16461         * object.c: only the domain in which Main is run have
16462         SetupInformation.ConfigurationFile set, so moved a few lines from
16463         appdomain.c to object.c.
16464
16465 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16466
16467         * appdomain.c: we tried to load [name].(dll|exe), but according
16468         to bug #57710, we must also try [culture]/[name].(dll|exe) and
16469         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
16470         There's a test case attached to bug #58922.
16471
16472 2004-05-27  Dick Porter  <dick@ximian.com>
16473
16474         * icall.c:
16475         * file-io.c: Implemented icalls for locking and unlocking regions
16476         in a file.
16477         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
16478         FALSE on error (fixes both compiler warning and real bug.)
16479
16480 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
16481
16482         * culture-info-tables.h: reflecting locale-builder updates.
16483
16484           (Added missing ChangeLog entry for 05/26)
16485
16486 2004-05-27  Jackson Harper  <jackson@ximian.com>
16487
16488         * locales.c: Fix some cut and paste errors.
16489         
16490 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16491
16492         * mono-config.c: set the correct path for config. directory on windows.
16493
16494 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16495
16496         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
16497           on win32.
16498
16499 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16500
16501         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
16502         from pinvoke functions.
16503         
16504         * marshal.c (mono_ftnptr_to_delegate): Implement this.
16505
16506 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16507
16508         * culture-info-tables.h: reflecting locale-builder updates.
16509
16510 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
16511
16512         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
16513         #59086.
16514
16515 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
16516
16517         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
16518         * icall.c: Modified icalls for RNG.
16519         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
16520         Windows (CryptoAPI).
16521
16522 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16523
16524         * locales.c: Fix build.
16525
16526 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16527
16528         * culture-info-tables.h: reflecting locale-builder updates.
16529
16530 2004-05-25  Jackson Harper  <jackson@ximian.com>
16531
16532         * locales.c: When creating the current culture use the $LANGs
16533         specific culture. So DateTimeFormat and NumberFormat entries are created.
16534         
16535 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
16536
16537         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
16538         a char array as parameter.
16539
16540 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
16541
16542         * image.c: In mono_image_open(), always use an absolute path name to
16543           look for already loaded images.
16544
16545 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
16546
16547         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
16548         missing in the windows build (like older cygwin include files).
16549
16550 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
16551
16552         * icall.c: Fixed check for possible integer overflow in Buffer_
16553         BlockCopy icall. Replaced comments style // by /* */.
16554
16555 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
16558         
16559         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
16560         check after MONO_VTADDR. Fixes pinvoke2.exe.
16561
16562         * marshal.h marshal.c metadata.h: Add beginnings of support for
16563         ftnptr -> delegate marshalling.
16564
16565 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
16566
16567         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
16568         * threads.c: Fix warnings.
16569
16570 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
16571
16572         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
16573         * icall.c: Registered icalls for Suspend and Resume.
16574         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
16575           Thread.Abort.
16576         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
16577         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
16578         * process.c: Use WaitForSingleObjectEx.
16579         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
16580           checkpoints.
16581         * threads.c, threads.h: Make use of new Ex wait methods. Improved
16582           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
16583           for Suspend and Resume. Added new mono_thread_stop, used for stoping
16584           background threads. Added basic support for Abort in Windows.
16585           Start new threads using a managed delegate invoke wrapper. This wrapper
16586           has an interruption checkpoint that is needed since an interruption
16587           can be requested before the thread leaves the unmanaged code that starts 
16588           the thread.
16589         * marshal.c: Added interruption checkpoint after every native call, and
16590           also before managed calls for wrappers called from unmanaged code to
16591           go into managed code.
16592         * object.h: Added new field in MonoThread to keep track of interruption
16593           requests.
16594
16595 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
16596
16597         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
16598         calls.
16599
16600 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16601
16602         * appdomain.c:
16603         * assembly.c:
16604         * gc.c:
16605         * locales.c:
16606         * mono-config.c:
16607         * rand.c: getenv -> g_getenv (windows!)
16608
16609         * process.c: complete_path is also used on non-windows platforms.
16610
16611 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16612
16613         * icall.c: new signature for Process_Start.
16614
16615         * process.[ch]: new signature for Process_Start. If we're on windows
16616         and UseShellExecute is false, we have to search for the program by
16617         ourselves if we don't get a full path.
16618
16619 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
16620
16621         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
16622         marshalling and call CleanUpNativeData if needed. Fixes #58646.
16623
16624 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16625
16626         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
16627         Fixes bug #58373.
16628
16629 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16630
16631         * process.c: use double quotes to quote program name and arguments on
16632         windows. Fixes bug #58575.
16633
16634 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16635
16636         * file-io.c: don't return "." and ".." when using windows Find*File.
16637
16638 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
16639
16640         * marshal.c: Don't pass wrappers to message init because method 
16641         addressed used to lookup metadata. part of remoting[2|3] fix.
16642
16643 2004-05-15  Jackson Harper  <jackson@ximian.com>
16644
16645         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
16646         path is essentially the same as MONO_PATH except that it points to
16647         GACs instead of lib directories.
16648         * loader.h: The user gac is gone so we dont need function to
16649         enable/disable it.
16650         * mono-config.c: user gac option is now gone.
16651         
16652 2004-05-15  Jackson Harper  <jackson@ximian.com>
16653
16654         * culture-info.h: Make defines more consistent, add calendar data
16655         to the culture info table.
16656         * culture-info-tables.h: Add basic calendar data. Basically
16657         everyone gets default gregorian until all the data is
16658         updated.
16659         * locales.c: Use the new consistent defines. Set calendar data for
16660         culture info objects.
16661         * object.h: add a field for calendar data to CultureInfo
16662         
16663 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
16664
16665         * image.c: image->runtime_invoke_cache is keyed on signatures now.
16666         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
16667         a signature.
16668         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
16669         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
16670         an extra param that is the pointer of the method to invoke. The IL for
16671         the invoke method is no longer specific to the method, but to the
16672         signature of the method. Thus, we can share the same code for multiple
16673         methods. This reduces the number of methods that have to be compiled.
16674
16675 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
16678
16679         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16680
16681         * icall.c: Optimize Buffer.BlockCopy.
16682
16683 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16684
16685         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
16686         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
16687         quote). Changed them to "MMMM yyyy".
16688
16689 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
16690
16691         * rand.c
16692         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
16693
16694 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * reflection.h: Updated after changes to managed structures.
16697
16698         * appdomain.c: Bump corlib version.
16699
16700 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16701
16702         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
16703         windows.
16704
16705 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16706
16707         * Makefile.am: link to ../os/libmonoos.la on windows.
16708
16709         * assembly.c:
16710                 -If MONO_DEBUG, warn about non-existing directories in
16711                 MONO_PATH.
16712                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
16713                 compile time variable.
16714                 -Removed init_default_path and call mono_set_rootdir from
16715                 libmonoos.a instead (windows only).
16716
16717         * assembly.h: declare mono_assembly_getrootdir().
16718
16719         * domain.c:
16720         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
16721
16722         * loader.c: s/getenv/g_getenv/
16723
16724 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
16725
16726         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
16727
16728         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
16729
16730         * metadata.h: Add new marshalling conversions.
16731
16732         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
16733         function.
16734
16735         * reflection.c (mono_reflection_get_type): Lookup the type in all
16736         modules of a multi-module assembly. Fixes #58291.
16737
16738 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
16739
16740         * threads.c: Before aborting a background, set the StopRequested
16741         state.  This avoids throwing the Abort exception.
16742         In mono_thread_manage, don't continue with the shutdown until all
16743         aborted threads have actually stopped.
16744
16745 2004-05-10  Jackson Harper  <jackson@ximian.com>
16746
16747         * locales.c: Remove the modifier from culture names.
16748         
16749 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16750
16751         * Makefile.am: monosn is not installed any more. It has been deprecated
16752         in favor of sn.
16753
16754 2004-05-07  Jackson Harper  <jackson@ximian.com>
16755
16756         * locales.c
16757         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
16758         Fix array construction, add bailout if the length is 0.
16759
16760 2004-05-07  Dick Porter  <dick@ximian.com>
16761
16762         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
16763         machine doesn't have a DNS entry.  Patch by Urs Muff
16764         (umuff@quark.com), fixes bug 57928.
16765
16766 2004-05-06  Jackson Harper  <jackson@ximian.com>
16767
16768         * reflection.c: Handle null PublicTokens properly. alloc mem for
16769         assembly names culture so we dont crash when freeing it.
16770         
16771 2004-05-06  Jackson Harper  <jackson@ximian.com>
16772
16773         * assembly.c: Check the usergac when loading with partial names.
16774         
16775 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16776
16777         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
16778         does nothing for now (not required for Linux/Windows) but the class
16779         library can call it (and a newer or modified runtime could need it).
16780         * icall.c: Registred icall.
16781
16782 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16783
16784         * loader.c: prints a message on module loading error we set MONO_DEBUG
16785         environment variable.
16786
16787 2004-05-05  Jackson Harper  <jackson@ximian.com>
16788
16789         * appdomain.c: Handle PublicKeyToken=null properly.
16790         
16791 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
16792
16793         * environment.c|h: Added icall ves_icall_System_Environment_
16794         GetOSVersionString to get the current OS version as a string.
16795         * icall.c: Registred icall.
16796
16797 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
16798
16799         * object.c: in mono_object_get_virtual_method(), take into account that
16800         non-virtual methods don't have a slot in the vtable. Check needed when
16801         the object is a proxy.
16802
16803 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
16804
16805         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
16806         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
16807
16808         * object.c (mono_class_compute_gc_descriptor): Fix warning.
16809
16810         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
16811         passed when a valuetype is expected.
16812
16813         * object.c (mono_unhandled_exception): Only set the exit code if the
16814         exception happens in the main thread. Fixes thread5.exe.
16815
16816         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
16817         invalid names. Fixes #58047.
16818
16819 2004-05-03  Jackson Harper  <jackson@ximian.com>
16820
16821         * assembly.c: This line was committed accidently and is unneeded.
16822         
16823 2004-05-03  Jackson Harper  <jackson@ximian.com>
16824
16825         * icall.c: Add new icall for Assembly::LoadWithPartialName
16826         * assembly.c/.h: new function that probes the GAC to load partial
16827         assembly names by Paolo Molaro.
16828         
16829 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16830
16831         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
16832         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
16833         (type_get_fully_qualified_name): Added PublicKeyToken when building a
16834         full type name.
16835
16836 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16837
16838         * appdomain.c: fixed check for 'neutral' culture and removed warning.
16839         * reflection.c: fix bug when parsing a full type name and Version is not
16840         the last thing in the string.
16841
16842 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
16843
16844         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
16845         crashes when it is freed.
16846
16847 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16848
16849         * assembly.c: print the compat warning to stderr.
16850
16851 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
16852
16853         * assembly.c (mono_assembly_load_references): Add a compatibility
16854         hack to run old applications that might be still referencing the
16855         3300-based assemblies, only do this for System.xxx.
16856
16857 2004-05-01  Jackson Harper  <jackson@ximian.com>
16858
16859         * appdomain.c: If the culture is neutral we set it to "".
16860         
16861 2004-04-29  Jackson Harper  <jackson@ximian.com>
16862
16863         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
16864
16865 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
16866  
16867         * string-icalls.c: added low overhead function for copying chars
16868         * icall.c: added needed icall for the above function
16869  
16870 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16871
16872         * icall.c: fix return value of get_global_assembly_cache.  Implemented
16873         Environment.GetLogicalDrives.
16874
16875 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
16876
16877         * rand.c: try and talk to egd or prngd
16878         for random bytes if opening devices fail.
16879
16880 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
16881
16882         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
16883         alignment for the type using the native alignment of its members 
16884         instead of using klass->min_align.
16885
16886         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
16887
16888 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16889
16890         * file-io.c:
16891         * socket-io.c: added check for sys/aio.h.
16892
16893 2004-04-28  Dick Porter  <dick@ximian.com>
16894
16895         * threads.c: Don't abort a thread thats already aborting, when
16896         terminating everything.
16897
16898 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16899
16900         * icall.c: added 2 new async calls for Socket.
16901
16902         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
16903         IO on *nix systems.
16904
16905         * threadpool.c: removed unused variable.
16906
16907 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
16908
16909         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
16910
16911 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16912
16913         * locales.c: put back string_invariant_tolower () and
16914         string_invariant_toupper ().
16915
16916 2004-04-26 David Waite <mass@akuma.org>
16917
16918         * file-io.h:
16919         * socket-io.h:
16920         * threads.h:
16921         * unicode.h: remove comma from end of enumeration declarations
16922
16923 2004-04-26 David Waite <mass@akuma.org>
16924
16925         * debug-mono-symfile.h:
16926         * decimal.c:
16927         * mono_debug.h:
16928         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
16929
16930
16931 2004-04-26  Jackson Harper  <jackson@ximian.com>
16932
16933         * appdomain.c: Increment version number.
16934         
16935 2004-04-26  Jackson Harper  <jackson@ximian.com>
16936
16937         * appdomain.c: Set assembly references public token value when
16938         PublicKeyToken is specified, not the hash_value. Free public token
16939         values when free assembly name data. Previously the public key
16940         token was hex decoded, however we are using hex encoded public key
16941         tokens, so this is not neccasary.
16942         * assembly.c: Lookup assemblies in the gac if their public token
16943         value is set. Add function to allow enabling user gac
16944         lookups. Specify whether or not the assembly was loaded from the
16945         GAC. Compare full assembly names when checking the cache for
16946         assemblies (Temporarily disabled see comment in code). Remove
16947         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
16948         specifies trace-loader they get extra info to stdout on the
16949         loading of assemblies.
16950         * image.h: Add a field for an assembly references public token
16951         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
16952         whether an assembly has been loaded from the GAC.
16953         * image.c: Remove a corlib -> mscorlib name mapping.
16954         * loader.h: Add function to enable/disable the user gac.
16955         * mono-config.c: Check if the usergac is enabled in the config
16956         file.
16957         * icall.c: New icall to determine whether or not an assembly has
16958         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
16959         * tabldefs.h: Add constant for assemblyref flag that specifies a
16960         full public key is used instead of a public token.
16961         * reflection.c: Remove mscorlib -> corlib mappings. Set
16962         PublicTokenValue instead of hash value. This value is a hex
16963         string so it does not need to be expanded.
16964
16965 2004-04-26  Martin Baulig  <martin@ximian.com>
16966
16967         * mono-debug-debugger.c (mono_debugger_initialize): Set
16968         `mono_debugger_initialized' before calling mono_debug_lock().
16969
16970 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
16971
16972         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
16973           InternalToUpper/InternalToLower.
16974         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
16975           removed invariant culture shortcut.  This is now done in managed code.
16976         * locales.c: (string_invariant_toupper/tolower) removed.
16977
16978 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16979
16980         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
16981         Added Poll internal call.
16982
16983         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
16984         call for Poll. Select was too heavy for polling a single socket.
16985
16986         * threadpool.[ch]: added mono_threadpool_cleanup.
16987         * threads.c: use it. Don't use Thread_Abort on windows.
16988
16989 2004-04-23  Martin Baulig  <martin@ximian.com>
16990
16991         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
16992
16993 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
16994
16995         * icall.c: Registred new icalls for key pair protection and added an
16996         icall for Environment.GetFolderPath on Windows.
16997         * security.c|h: Added new icalls for key pair protection.
16998
16999 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17000
17001         * socket-io.c: don't display the non-supported family warning for known
17002         families. Now this is not displayed on windows when checking support
17003         for IPv4/IPv6.
17004
17005 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17006
17007         * class.c: don't display the layout warning for static fields.
17008
17009 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
17010
17011         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
17012         * locales.c, locales.h: Added new icalls for culture-specific
17013         Char.ToLower and Char.ToUpper.
17014
17015 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17016
17017         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
17018         by David Waite.
17019
17020 2004-04-20  Martin Baulig  <martin@ximian.com>
17021
17022         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
17023         of the type name before passing it to mono_reflection_type_from_name().
17024
17025 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17026
17027         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
17028         encodings here. Fixes #56965.
17029
17030 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
17031
17032         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17033         fix test on strstr result not that I can see anything that
17034         relies on the result.
17035
17036 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17037
17038         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
17039         Fixes #57081.
17040
17041         * marshal.c (mono_marshal_get_string_encoding): New helper function.
17042
17043         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
17044         function to determine which marshalling to use for strings. Fixes
17045         #56965.
17046
17047         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
17048
17049         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
17050
17051 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
17052
17053         * icall.c: #include mono-config.h
17054
17055 2004-04-15  Jackson Harper  <jackson@ximian.com>
17056
17057         * culture-info-tables.h: Fix date formats for en-US culture.
17058         
17059 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
17060
17061         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
17062         ThreadPool.SetMinThreads.
17063         * threadpool.c: Implemented ThreadPool.GetMinThreads and
17064         ThreadPool.SetMinThreads.
17065
17066 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17067
17068         * mono-config.c: also load the .config file in the directory
17069         where the assembly was found.
17070
17071 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17072
17073         * assembly.c: load per-assembly config files.
17074         * icall.c: decrapified code to get the config dir and moved to
17075         mono-config.c.
17076         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
17077         per-assembly config files. When doing a dll map lookup give precedence
17078         to the per-assembly data.
17079
17080 2004-04-14  Martin Baulig  <martin@ximian.com>
17081
17082         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
17083         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
17084         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
17085
17086         * mono-debugger-debugger.c: While the debugger is locked, remember
17087         whether the symbol tables have changes and send one single
17088         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
17089
17090 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
17093
17094         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
17095         function.
17096
17097         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
17098         account when marshalling string arrays. Fixes #56965.
17099
17100 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
17101
17102         * icall.c: Add new icalls mapping for security.
17103         * security.c|h: Add internal calls for WindowsIdentity,
17104         WindowsImpersonationContext and WindowsPrincipal.
17105
17106 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
17107
17108         * class.c: Added comment to ensure the System.MonoDummy class
17109         is removed when no longer necessary
17110
17111 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17112
17113         * appdomain.c: Pass arguments to the bootstraping exceptions to
17114         minimize JITed methods at boot
17115
17116         * metadata.c (mono_exception_from_name_two_strings): Allow for the
17117         second string to be null.
17118
17119         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
17120         Change the protocol to minimize the JIT methods at startup.  Now
17121         it Returns the internal codepage, if the value of "int_code_page"
17122         is 1 at entry, and we can not compute a suitable code page
17123         number, returns the code page as a string.
17124
17125 2004-04-13  Jackson Harper  <jackson@ximian.com>
17126
17127         * culture-info-tables.h: Fix number of decimal digits for all
17128         english locales.
17129
17130 2004-04-13  Jackson Harper  <jackson@ximian.com>
17131
17132         * icall.c: Clairfy out of sync error message. It is not always
17133         your corlib that is out of sync.
17134
17135 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
17136
17137         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
17138         properties when only the set accessor is overriden. Fixes #55874.
17139
17140 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
17141
17142         * assembly.c (mono_assembly_load_references): Make this thread safe.
17143         Fixes #56327.
17144
17145 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17146
17147         * monosn.c: Add missing initialization calls.
17148
17149 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
17150
17151         * locales.c:
17152         ves_icall_System_Globalization_CultureInfo_construct_number_format
17153         Fix g_assert so it compiles on fussier compilers re int/ptr
17154         mismatch
17155
17156 2004-04-08  Dick Porter  <dick@ximian.com>
17157
17158         * socket-io.h:
17159         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
17160         53992.  Also rearrange the code so that the internal calls return
17161         an error value and exceptions are thrown from managed code.
17162
17163         * icall.c: Add type info to the socket icalls.
17164
17165 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17166
17167         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
17168         owes me a beer.
17169
17170 2004-04-07  Martin Baulig  <martin@ximian.com>
17171
17172         * class.c (mono_class_from_generic_parameter): Don't default
17173         `klass->parent' to `mono_defaults.object_type'.
17174
17175 2004-04-07  Martin Baulig  <martin@ximian.com>
17176
17177         * reflection.c (mono_reflection_initialize_generic_parameter): Set
17178         `param->pklass->reflection_info'.       
17179
17180 2004-04-07  Jackson Harper  <jackson@ximian.com>
17181
17182         * culture-info-tables.h: Fix date separator symbol.
17183         
17184 2004-04-07  Martin Baulig  <martin@ximian.com>
17185
17186         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
17187         from System.Type to System.MonoType.
17188
17189 2004-04-07  Martin Baulig  <martin@ximian.com>
17190
17191         * reflection.h
17192         (MonoReflectionGenericParam): Added `has_reference_type' and
17193         `has_value_type' fields.
17194
17195         * reflection.c (mono_image_get_generic_param_info): Encode the
17196         correct flags if we have the `class' or `struct' constraint.
17197
17198 2004-04-07  Martin Baulig  <martin@ximian.com>
17199
17200         * reflection.h
17201         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
17202
17203 2004-04-07  Jackson Harper  <jackson@ximian.com>
17204
17205         * appdomain.c: Revert extra patches, just wanted to bump the
17206         version number.
17207         
17208 2004-04-07  Jackson Harper  <jackson@ximian.com>
17209
17210         * Makefile.am: Add culture-info private headers.
17211         * icall.c: Add new icalls for contructing locales.
17212         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
17213         * locales.h: Declare new culture info construction methods.
17214         * object.h: Add new fields used to avoid the CultureMap to
17215         MonoCultureInfo.
17216         * culture-info.h: Definition of structs used in the culture info
17217         tables.
17218         * culture-info-tables.h: Autogenerated tables that contain culture
17219         info data. This file was generated with the locale-builder tool.
17220         * appdomain.c: Incement corlib version number.
17221         
17222 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
17223
17224         * appdomain.c: (mono_runtime_init) move mono_thread_init
17225         to before mono_object_new calls so critical sections
17226         are initialized before use.
17227
17228 2004-04-07  Martin Baulig  <martin@ximian.com>
17229
17230         * icall.c
17231         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
17232         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
17233         (ves_icall_MonoGenericParam_initialize): Removed.
17234         (monogenericparam_icalls): Removed.
17235         (generictypeparambuilder_icalls): Added new table for
17236         System.Reflection.Emit.GenericTypeParameterBuilder.
17237
17238         * reflection.c
17239         (mono_reflection_define_generic_parameter): Removed.
17240         (mono_reflection_initialize_generic_parameter): This is now called
17241         from GenericTypeParameterBuilder's .ctor.
17242
17243 2004-04-06  Martin Baulig  <martin@ximian.com>
17244
17245         * class.c (mono_class_init): Don't inflate nested classes in a
17246         generic instance.
17247         (mono_type_get_name_recurse): Include the generic arguments for
17248         generic instances and generic type declarations.
17249         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
17250         (_mono_class_get_instantiation_name): Removed.
17251         (mono_class_create_generic): Always use `gklass->name' as our name.
17252
17253         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
17254
17255         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
17256         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
17257         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
17258         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
17259         closed generic methods here.
17260
17261         * reflection.c
17262         (mono_reflection_generic_inst_get_nested_types): Removed.
17263         (inflate_mono_method): Copy the generic parameters from the
17264         MonoMethodHeader into out MonoGenericMethod.
17265
17266 2004-04-06  Martin Baulig  <martin@ximian.com>
17267
17268         * row-indexes.h
17269         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
17270
17271         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
17272
17273         * reflection.c (build_compressed_metadata): If we have any entries
17274         in the GenericParam, MethodSpec or GenericParamConstraint tables,
17275         set the header version to 1.1.
17276
17277 2004-04-06  Martin Baulig  <martin@ximian.com>
17278
17279         * class.c (mono_class_init): If we're a generic instance,
17280         initialize our nested classes, too.
17281         (_mono_class_get_instantiation_name): Deal with the new `!%d'
17282         suffix. 
17283
17284 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17285
17286         * process.c: quote the argument passed to the shell on windows.
17287
17288 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17289
17290         * threads.c (mono_alloc_special_static_data): Allow this to be
17291         called during startup.
17292
17293 2004-04-02  Martin Baulig  <martin@ximian.com>
17294
17295         * icall.c
17296         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
17297
17298 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17299
17300         * icall.c: Fix build.
17301
17302 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
17303
17304         * Makefile.am: Added security.c|h.
17305         * icall.c: Added icall for get_UserName;
17306         * security.c: New file for security related icalls. Added function
17307         get_UserName for System.Environment (fix #56144).
17308         * security.h: New. Header file for security.c
17309
17310 2004-04-02  Dick Porter  <dick@ximian.com>
17311
17312         * icall.c: Deleted the icalls that were obsoleted some time ago
17313         by the ICU string code, and which were mixed into the icall
17314         rearranging.  Fixes bug 55969.
17315
17316         * string-icalls.h: 
17317         * string-icalls.c: Deleted the code that those icalls reference.
17318
17319 2004-04-01  Martin Baulig  <martin@ximian.com>
17320
17321         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
17322
17323         * class.c (mono_class_from_generic_parameter): Don't set 
17324         TYPE_ATTRIBUTE_INTERFACE.
17325         (my_mono_class_from_generic_parameter): Likewise.
17326
17327 2004-04-01  Martin Baulig  <martin@ximian.com>
17328
17329         * loader.c (find_method): Added an optional `MonoClass *ic'
17330         argument to search in a specific interface.
17331         (mono_get_method_constrained): New public function.
17332
17333 2004-04-01  Martin Baulig  <martin@ximian.com>
17334
17335         * reflection.c (mono_image_get_generic_field_token): Use the
17336         `handleref' cache here.
17337
17338 2004-04-01  Martin Baulig  <martin@ximian.com>
17339
17340         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
17341
17342         * reflection.c (create_generic_typespec): Use the `typespec' hash
17343         here, not the `typeref' one.    
17344
17345 2004-04-01  Martin Baulig  <martin@ximian.com>
17346
17347         * class.c (mono_class_inflate_generic_type): Moved the
17348         functionality into a new static inflate_generic_type() which
17349         returns NULL if it didn't do anything.  Only increment the
17350         `mono_stats.inflated_type_count' if we actually inflated
17351         something.
17352         (mono_class_get_full): Check the classes type to see whether we
17353         need to inflate it; also inflate MONO_TYPE_(M)VAR.
17354
17355 2004-04-01  Jackson Harper  <jackson@ximian.com>
17356
17357         * reflection.c: Set culture for assembly references.
17358         
17359 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
17360
17361         * reflection.[ch], icall.[ch], Fix support for pinning variables.
17362
17363 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17364
17365         * assembly.c:
17366         (do_mono_assembly_open): the critical section also covers
17367         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
17368
17369 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17370
17371         * threads.c:
17372         (mono_manage_threads): abort the background threads when finishing.
17373         Fixes bug #47232.
17374
17375 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17376
17377         * gc.c: only close the done_event handle if there was no timeout.
17378         C-ified comments.
17379
17380 2004-03-30  Martin Baulig  <martin@ximian.com>
17381
17382         * icall.c (icall_entries): It's called "System.Activator", not
17383         "System.Activation".    
17384
17385 2004-03-30  Martin Baulig  <martin@ximian.com>
17386
17387         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
17388         (mono_class_create_from_typespec): Likewise.
17389
17390 2004-03-30  Martin Baulig  <martin@ximian.com>
17391
17392         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
17393         `has_ctor_constraint' and `initialized'.
17394
17395 2004-03-30  Martin Baulig  <martin@ximian.com>
17396
17397         * reflection.c (encode_new_constraint): New static function to add
17398         the constructor constraint attribute to a type parameter.
17399         (encode_constraints): Call encode_new_constraint() if necessary.
17400
17401         * reflection.h
17402         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
17403
17404         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
17405         
17406 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
17407
17408         * reflection.c, icall.c: add support for pinning variables. 
17409
17410 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
17411
17412         * marshal.c (mono_marshal_get_managed_wrapper):
17413         init bool local with zero rather than null.
17414
17415 2004-03-29  Martin Baulig  <martin@ximian.com>
17416
17417         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
17418         the "official" behavior here.
17419         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
17420
17421 2004-03-29  Martin Baulig  <martin@ximian.com>
17422
17423         * icall.c: Reflect latest API changes.
17424
17425 2004-03-29  Martin Baulig  <martin@ximian.com>
17426
17427         * loader.c (mono_get_method_from_token): Also call
17428         mono_metadata_load_generic_params () for abstract and interface
17429         methods; replace the type arguments in the method signature with
17430         the ones which are loaded from the metadata.
17431
17432 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
17433
17434         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
17435         of the lock is not the current thread. MS.NET don't do it, in spite of
17436         what the documentation says. See bug #56157.
17437
17438 2004-03-28  Martin Baulig  <martin@ximian.com>
17439
17440         * class.c (mono_class_init): Don't call init_properties() and
17441         init_events() for generic instances; set `prop->parent' when
17442         inflating properties.
17443
17444         * reflection.c (mono_generic_inst_get_object): Call
17445         `mono_class_init (ginst->klass)'.
17446         (mono_type_get_object): Only create a MonoGenericInst if your
17447         generic type is a TypeBuilder.
17448         (do_mono_reflection_bind_generic_parameters): Only set
17449         `ginst->is_dynamic' if our generic type is a TypeBuilder.
17450
17451 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17452
17453         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
17454         Fixes #56091.
17455
17456 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17457
17458         * icall.c: added Kill_internal icall.
17459         * process.[ch]: added Kill_internal icall.
17460
17461 2004-03-25  Martin Baulig  <martin@ximian.com>
17462
17463         * class.h (MonoStats): Added `generic_instance_count',
17464         `inflated_method_count', `inflated_type_count' and
17465         `generics_metadata_size'.       
17466
17467 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17468
17469         * reflection.c: no warnings now.
17470
17471 2004-03-25  Martin Baulig  <martin@ximian.com>
17472
17473         * class.c (mono_class_get_full): New public function; does a
17474         mono_class_get(), but also takes a `MonoGenericContext *'.
17475
17476         * loader.c (mono_field_from_memberref): Renamed to
17477         `field_from_memberref', made static and added `MonoGenericContext *'
17478         argument.
17479         (mono_field_from_token): Added `MonoGenericInst *' argument.
17480         (method_from_memberef): Likewise.
17481         (mono_get_method_from_token): Likewise.
17482         (mono_get_method_full): New public function; does a
17483         mono_get_method(), but also takes a `MonoGenericContext *'.
17484
17485         * verify.c (mono_method_verify): Get the method's generic context
17486         and pass it to mono_field_from_token(), mono_get_method_full() and
17487         mono_class_get_full().
17488
17489 2004-03-25  Martin Baulig  <martin@ximian.com>
17490
17491         * class.c (mono_class_inflate_generic_type): Take a
17492         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
17493         `MonoGenericMethod *'.
17494
17495 2004-03-25  Martin Baulig  <martin@ximian.com>
17496
17497         * loader.h (MonoMethodInflated): Store the MonoGenericContext
17498         instead of the MonoGenericMethod here.
17499
17500 2004-03-25  Martin Baulig  <martin@ximian.com>
17501
17502         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
17503         each time we create a new MonoGenericInst, we also create a new
17504         context which points back to us.
17505
17506         * class.c (inflate_method): Use `ginst->context' instead of
17507         creating a new context.
17508
17509         * loader.c (method_from_memberref): Use
17510         `klass->generic_inst->context' instead of creating a new context.
17511
17512 2004-03-25  Martin Baulig  <martin@ximian.com>
17513
17514         * class.h (MonoGenericContext): New struct.
17515         (MonoGenericMethod): Removed `generic_inst'.
17516
17517         * class.c (mono_class_inflate_generic_method): Take a
17518         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
17519
17520 2004-03-25  Martin Baulig  <martin@ximian.com>
17521
17522         * loader.h (MonoMethodInflated): New typedef.
17523
17524         * metadata.h (MonoMethodSignature): Removed `gen_method', make
17525         `generic_param_count' consume just 30 bits, added `is_inflated'
17526         and `has_type_parameters' flags (one bit each).
17527
17528         * class.c (mono_class_inflate_generic_method): Create a
17529         MonoMethodInflated instead of a MonoMethodNormal and set
17530         `is_inflated' in the method signature.
17531
17532         * class.h (MonoGenericMethod): Removed `generic_method'.
17533
17534 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
17535
17536         * image.c: Make sure the name of a MonoImage is always an absolute path.
17537           This fixes bug #54415.
17538
17539 2004-03-24  Martin Baulig  <martin@ximian.com>
17540
17541         * class.c (mono_class_setup_vtable): If we're a generic instance,
17542         use our generic type's vtable size.
17543
17544 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17545
17546         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
17547         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
17548         problems.
17549
17550 2004-03-23  Martin Baulig  <martin@ximian.com>
17551
17552         * class.h (MonoDynamicGenericInst): Added `int count_events' and
17553         `MonoEvent *events'.
17554
17555         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
17556         (typebuilder_icalls): Added "get_event_info"; calls
17557         mono_reflection_event_builder_get_event_info(). 
17558
17559         * reflection.c (mono_reflection_generic_inst_initialize): Added
17560         `MonoArray *events'.
17561         (mono_reflection_event_builder_get_event_info): New function.
17562
17563 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
17564
17565         * object.h: add mono_type_initialization_init
17566
17567         * object.c (mono_runtime_class_init): 
17568         implement class constructor synchronization rules
17569         to cope with threading issues.  
17570         add mono_type_initialization_init
17571
17572         * appdomain.c (mono_runtime_init): call 
17573         mono_type_initialization_init
17574
17575         * class.h: removing initializing field from MonoVTable
17576
17577 2004-03-23  Martin Baulig  <martin@ximian.com>
17578
17579         * class.c (my_mono_class_from_generic_parameter): Use
17580         `param->name' if it's not NULL. 
17581
17582 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
17583
17584         * class.c: do not insert non-virtual methods in the vtable.
17585         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
17586         that means the method is non-virtual. This never would have
17587         happened before.
17588
17589 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17590
17591         * profiler.c: Added lock for accessing coverage_hash.
17592
17593 2004-03-22  Martin Baulig  <martin@ximian.com>
17594
17595         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
17596         `method->method->signature->generic_param_count != 0' to make it
17597         work for interface methods.
17598
17599 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17600
17601         * process.c: quote the string passed to the shell using g_shell_quote.
17602
17603 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17604
17605         * threads.c:
17606         (mono_threads_manage): don't remove the finalizer thread and self
17607         from the threads hash table so that mono_thread_manage can be called
17608         more than once.
17609
17610 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17611
17612         * process.c: quote the arguments when UseShellExecute is true. Fixes
17613         bug #55790.
17614
17615 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17616
17617         * threads.c: set mono_thread_detach as a cleanup routine for every
17618         thread. This way it's always executed upon thread termination, either
17619         aborted or finished normally. No more xsp hangs!
17620
17621 2004-03-17  Martin Baulig  <martin@ximian.com>
17622
17623         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
17624         `int count_nested' and a `MonoType **nested'.
17625
17626         * reflection.c (mono_reflection_bind_generic_parameters): Moved
17627         most of the functionality into a new static
17628         do_mono_reflection_bind_generic_parameters() and don't take a
17629         `MonoType *nested_in' argument any more.  Don't compute nested
17630         types here.
17631         (mono_reflection_generic_inst_get_nested_types): New public method
17632         to get nested types.
17633
17634         * class.c (mono_class_create_generic): Set `klass->nested_in' if
17635         we're a nested class.
17636
17637         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
17638         mono_reflection_generic_inst_get_nested_types() to compute the
17639         nested types.
17640
17641 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17642
17643         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
17644         descriptive error message under windows.
17645         
17646 2004-03-17  Martin Baulig  <martin@ximian.com>
17647
17648         * class.c (dup_type): Added `const MonoType *original' argument;
17649         copy the attrs from the original type.
17650
17651 2004-03-17  Martin Baulig  <martin@ximian.com>
17652
17653         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
17654         `m->generic_inst_cache' here.
17655
17656 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * exception.h exception.c: Add stack_overflow_exception.
17659
17660 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17661
17662         * threadpool.c:
17663         (overlapped_callback): call SetEvent *after* invoking the callback.
17664         No need to call CloseHandle.
17665
17666 2004-03-16  Martin Baulig  <martin@ximian.com>
17667
17668         * reflection.c (mono_image_get_fieldref_token): Take a
17669         `MonoReflectionField *' instead of a `MonoClassField *' and a
17670         `MonoClass *'; store the `MonoReflectionField *' in the hash.
17671
17672 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17673
17674         * appdomain.c: don't add the culture to the filename we're looking for
17675         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
17676
17677 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17678
17679         * locales.c: don't ignore symbols when doing case insensitive compares.
17680         Thanks Dick! Fixes bug #54046.
17681
17682         * threads.c: surround 'threads' usage with enter/leave in
17683         mono_thread_manage.
17684
17685 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
17688         implicitly marshalled as [Out]. Fixes #55450.
17689
17690         (mono_marshal_get_runtime_invoke): Zero out the result if there is
17691         an exception.
17692
17693 2004-03-16  Martin Baulig  <martin@ximian.com>
17694
17695         * class.c (mono_class_from_generic_parameter): Use the actual
17696         parameter name. 
17697
17698 2004-03-16  Martin Baulig  <martin@ximian.com>
17699
17700         * reflection.c (type_get_signature_size): New static function.
17701         Compues the size of the type in a method signature.
17702         (method_get_signature_size): New static function; calls
17703         type_get_signature_size() to compute the actual size of the
17704         method's signature.
17705         (method_encode_signature): Use method_get_signature_size() to get
17706         the signature's size rather than using `nparams * 10'.
17707
17708 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17709
17710         * file-io.h: define here WapiOverlapped on windows. I don't want the
17711         regular OVERLAPPED one.
17712
17713         * file-io.c:
17714         * threadpool.c: somehow, BindIoCompletionCallback is not found.
17715         Disabling AIO on windows.
17716
17717 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17718
17719         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
17720         bug #55385.
17721
17722 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17723
17724         * appdomain.c: upgraded corlib version.
17725
17726         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
17727         and BeginWrite. Allow opening files for asynchrnous operations.
17728
17729         * file-io.h: new struct that maps FileStreamAsyncResult.
17730         * icall.c: added new icalls.
17731         * process.[ch]: support setting child process environment variables
17732         and use the SHELL or COMSPEC when UseShellExecute is true.
17733
17734         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
17735         callback for async. IO is here and also BindHandle.
17736
17737         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
17738         from here.
17739
17740 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * reflection.c (create_custom_attr): Allow len == 0.
17743
17744         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
17745         computation on big-endian machines.
17746
17747 2004-03-13  Martin Baulig  <martin@ximian.com>
17748
17749         * class.h (MonoGenericInst): Added `int count_ifaces'.
17750
17751         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
17752         `ginst->count_ifaces' instead `klass->interface_count' since we
17753         may get called before the vtable is created.
17754
17755         * loader.c (mono_method_get_param_names): If we're a generic
17756         instance, return and don't initialize the class.
17757
17758         * reflection.c (mono_reflection_setup_generic_class): Don't call
17759         ensure_runtime_vtable().
17760         (mono_reflection_bind_generic_parameters): Set
17761         `ginst->count_ifaces'.
17762
17763 2004-03-11  Jackson Harper <jackson@ximian.com>
17764
17765         * icall.c:
17766         * unicode.c:
17767         * unicode.h: Remove unused System.Char icalls.
17768         
17769 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
17770
17771         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
17772         code when we P/Invoke the first library in Windows.Forms, instead
17773         of when we first open the assembly.
17774
17775         * assembly.c: Drop the lookup from here.
17776
17777 2004-03-10  Martin Baulig  <martin@ximian.com>
17778
17779         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
17780         class for properties, fields and events.  Finally fixes #54945.
17781
17782 2004-03-10  Martin Baulig  <martin@ximian.com>
17783
17784         * metadata.c (mono_metadata_class_equal): New static function;
17785         checks whether two generic instances or two generic parameters are
17786         equal.
17787         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
17788         compare classes.        
17789
17790 2004-03-10  Martin Baulig  <martin@ximian.com>
17791
17792         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
17793
17794         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
17795         argument and write it into the `reflection_info' field.
17796
17797         * icall.c
17798         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
17799         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
17800
17801 2004-03-09  Jackson Harper  <jackson@ximian.com>
17802
17803         * char-conversions.h: use 8 bits for numeric data its all we need
17804         * icall.c: numeric data is only 8 bits now.
17805
17806 2004-03-09  Martin Baulig  <martin@ximian.com>
17807
17808         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
17809
17810         * class.c (init_properties, init_events): Initialize the new
17811         `parent' field.
17812
17813         * reflection.c (typebuilder_setup_properties): Likewise.
17814         (typebuilder_setup_events): Likewise.
17815
17816         * reflection.h (MonoEventInfo): Replaced `parent with
17817         `declaring_type' and `reflected_type'.
17818
17819         * icall.c (ves_icall_get_property_info): Distinguish between
17820         declaring and reflected type.
17821         (ves_icall_get_event_info): Likewise.
17822
17823 2004-03-09  Martin Baulig  <martin@ximian.com>
17824
17825         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
17826         (ves_icall_Type_GetField): Correctly set field->klass.
17827
17828 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17829
17830         * loader.h: Fix warning.
17831
17832 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
17833
17834         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
17835         library routine if present.  Notice that it will still continue
17836         executing even if its missing, for those working on the Gtk#
17837         edition of Windows.Forms.
17838
17839         * assembly.c (do_mono_assembly_open): If loading the
17840         System.Windows.Forms call mono_loader_wini_init.
17841
17842 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17843
17844         * class.h: Added MonoRemoteClass struct.
17845         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
17846         function for MonoStrings.
17847         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
17848         Added internal call for getting the proxy type.
17849         * marshal.c: Get the type of transparent proxies from its remote_class.
17850         Added methods that generate the IL for type checks and casts:
17851         mono_marshal_get_isinst, mono_marshal_get_castclass, 
17852         mono_marshal_get_proxy_cancast.
17853         * marshal.h: Declaration of the previous new methods.
17854         * object.c: Added new moethods for creating and updating MonoRemoteClass
17855         instances: mono_remote_class, mono_upgrade_remote_class, 
17856         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
17857         * verify.c: FIx transparent_proxy_fields layout.
17858         * appdomain.c: Bump corlib version.
17859
17860 2004-03-04  Jackson Harper  <jackson@ximian.com>
17861
17862         * icall.c: Add icall to access char conversion tables.
17863         * char-conversions.h: Character conversion tables.
17864         * Makefile.am: Add char-conversions.h private header file.
17865         
17866 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
17867
17868         * appdomain.c (unload_thread_main): Increase unloading timeout to
17869         10 sec as a temporary workaround for Nant problems.
17870
17871 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
17872
17873         * gc.c: Add checks for GC_enable and GC_disable.
17874
17875         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
17876         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
17877         (bug #54988).
17878         
17879 2004-02-27  Martin Baulig  <martin@ximian.com>
17880
17881         * reflection.c (mono_reflection_bind_generic_parameters): Take a
17882         `MonoReflectionType *' instead of a `MonoType *'.
17883
17884 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
17885
17886         * gc.c (run_finalize): Avoid finalizing the object representing the
17887         finalizer thread.
17888         (finalizer_thread): Fix warning.
17889
17890 2004-02-25  Martin Baulig  <martin@ximian.com>
17891
17892         * class.c (_mono_class_get_instantiation_name): Added `int offset'
17893         argument for nested types.
17894         (mono_class_create_generic): Added support for nested generictypes.
17895
17896         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
17897         `GList *nested'.
17898
17899         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
17900
17901         * reflection.c (method_encode_signature): Increase the minimum
17902         value of `size' from 10 to 11.
17903         (mono_reflection_bind_generic_parameters): Take `int type_argc'
17904         and `MonoType **types' arguments instead of the `MonoArray
17905         *types'; added `MonoType *nested_in'.  Recursively instantiate
17906         nested classes. 
17907
17908 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
17909
17910         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
17911         stack_overflow_ex members which are used by exception handling.
17912
17913         * appdomain.c (mono_runtime_init): Initialize the new members.
17914
17915         * gc.c (mono_gc_enable): New helper function.
17916         * gc.c (mono_gc_disable): New helper function.
17917
17918 2004-02-23  Martin Baulig  <martin@ximian.com>
17919
17920         * icall.c: I must have been really stupid - make it actually work
17921         this time ;-)
17922
17923 2004-02-23  Martin Baulig  <martin@ximian.com>
17924
17925         * loader.c (method_from_memberref): Only inflate the method if
17926         it's in another klass.
17927
17928 2004-02-23  Martin Baulig  <martin@ximian.com>
17929
17930         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
17931         (mono_class_init): If we're a generic instance and an interface,
17932         compute `class->interface_id'; also create `class->interfaces'
17933         here and inflate them.
17934
17935         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
17936         `ginst->is_open'.
17937         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
17938
17939         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
17940
17941 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
17942
17943         * reflection.c (method_encode_code): Improved the error message
17944         generated by the exception.
17945
17946 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17947
17948         * icall.c: Martin did not do what he said in the ChangeLog for
17949         2004-02-18, but put back the changes for properties and events.
17950         Commenting those changes out again and adding comment to bug #54518.
17951         
17952         * process.c: removed warning.
17953
17954 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * marshal.c (emit_struct_conv): Print an error message instead of
17957         asserting when a type does not have the StructLayout attribute.
17958
17959 2004-02-20  Martin Baulig  <martin@ximian.com>
17960
17961         * reflection.c (mono_type_get_object): Also use the cache for
17962         generic instances.
17963         (mono_reflection_bind_generic_parameters): Always compute
17964         `ginst->ifaces'.        
17965
17966 2004-02-20  Martin Baulig  <martin@ximian.com>
17967
17968         * class.h (MonoGenericMethod): Removed `klass'.
17969
17970         * class.c (mono_class_inflate_generic_method): Added `MonoClass
17971         *klass' argument.
17972
17973 2004-02-20  Martin Baulig  <martin@ximian.com>
17974
17975         * reflection.c (method_encode_methodspec): Actually use the
17976         uninflated signature for the memberref.
17977
17978 2004-02-20  Martin Baulig  <martin@ximian.com>
17979
17980         * class.h (MonoGenericMethod): Removed `declaring'.
17981
17982         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
17983         is NULL, compute it here.
17984
17985 2004-02-20  Martin Baulig  <martin@ximian.com>
17986
17987         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
17988
17989         * metadata.c (mono_metadata_generic_inst_hash): New method.
17990         (mono_metadata_generic_inst_equal): New method.
17991
17992         * reflection.c (mono_reflection_bind_generic_parameters): Use the
17993         `klass->image->generic_inst_cache' cache to avoid creating
17994         duplicate MonoGenericInst's.
17995
17996         * class.c (mono_class_inflate_generic_type): Use the cache.
17997
17998 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
17999
18000         * object.c: fixed gc descriptor calculation for embedded valuetypes.
18001
18002 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18003
18004         * icall.c: added Socket.WSAIoctl icall.
18005
18006         * socket-io.[ch]: implemented
18007         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
18008
18009 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
18010
18011         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
18012
18013 2004-02-18  Urs C Muff  <umuff@quark.com>
18014
18015         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
18016         this work on PPC and other big-endian architectures.
18017
18018         * debug-mono-symfile.h: Prepended the names of all the `guint32'
18019         fields with an underscore to make sure they're only accessed by
18020         the read32() macro.
18021
18022 2004-02-18  Martin Baulig  <martin@ximian.com>
18023
18024         * icall.c: Put the klass->refclass changes back for methods and
18025         fields, but not for properties and events.  We're currently not
18026         distinguishing between DeclaringType and ReflectedType for
18027         properties and events, that's what caused the regressions.
18028
18029 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18030
18031         * object.c:
18032         (mono_async_result_new): the handle can be NULL.
18033
18034         * threadpool.c: Use an event instead of a semaphore, don't initialize
18035         it until needed. This saves quite a few semaphores from being created
18036         when using the threadpool.
18037
18038 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
18039
18040         * object.c (mono_string_is_interned_lookup): Fix interning of long
18041         strings. Fixes #54473.
18042
18043         * domain.c (ldstr_equal): Optimize if the two strings are equal.
18044
18045         * icall.c: Revert the klass->refclass changes since they introduce
18046         regressions (bug #54518).
18047
18048 2004-02-18  Martin Baulig  <martin@ximian.com>
18049
18050         * class.c (mono_class_init): If we're a generic instance and don't
18051         come from a TypeBuilder, inflate our members here.
18052         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
18053         (mono_class_create_generic): New public method.
18054         (mono_class_initialize_generic): Removed.
18055         (get_instantiation_name): Renamed to
18056         _mono_class_get_instantiation_name() and made it public.
18057
18058 2004-02-18  Martin Baulig  <martin@ximian.com>
18059
18060         * class.c (mono_class_inflate_generic_type): Clear the new
18061         instance's `nginst->klass' when inflating a generic instance.
18062         (mono_class_is_subclass_of): Added (basic) support for generic
18063         instances.
18064
18065 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
18066
18067         * appdomain.h, domain.c: use a MonoCodeManager instead of a
18068         MonoMempool to hold compiled native code.
18069
18070 2004-02-17  Martin Baulig  <martin@ximian.com>
18071
18072         * class.h (MonoDynamicGenericInst): Added `count_properties' and
18073         `properties'.
18074
18075         * reflection.c (mono_reflection_generic_inst_initialize): Added
18076         `MonoArray *properties' argument.
18077
18078         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
18079
18080 2004-02-17  Martin Baulig  <martin@ximian.com>
18081
18082         * icall.c (ves_icall_Type_GetFields): Renamed to
18083         ves_icall_Type_GetFields_internal() and added a
18084         `MonoReflectionType *rtype' argument; pass it to
18085         mono_field_get_object() to set the field's "reflected" type.
18086         (ves_icall_Type_GetConstructors): Likewise.
18087         (ves_icall_Type_GetEvents): Likewise.
18088         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
18089         argument; pass it to mono_method_get_object() to set the method's
18090         "reflected" type.       
18091
18092 2004-02-17  Martin Baulig  <martin@ximian.com>
18093
18094         * class.h (MonoDynamicGenericInst): New type.
18095         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
18096
18097         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
18098         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
18099         (ves_icall_MonoGenericInst_GetFields): New interncall.
18100
18101         * class.c (mono_class_from_generic): Don't call
18102         mono_class_initialize_generic() if this is a dynamic instance;
18103         ie. it's being created from a TypeBuilder.
18104         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
18105         `class->byval_arg.type'.
18106
18107         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
18108         to `inflate_method' and made static.
18109         (mono_reflection_inflate_field): Removed.
18110         (mono_reflection_generic_inst_initialize): New public method.
18111
18112         * reflection.h (MonoReflectionGenericInst): Removed `methods',
18113         `ctors' and `fields'; added `initialized'.
18114
18115 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18116
18117         * debug-helpers.c (mono_method_full_name): Fix output for empty
18118         namespaces.
18119
18120 2004-02-12  Martin Baulig  <martin@ximian.com>
18121
18122         * class.h (MonoClassField): Added `MonoType *generic_type'.
18123
18124         * reflection.c (mono_image_get_fieldref_token): Added support for
18125         instantiated generic types.
18126         (field_encode_inflated_field): Removed.
18127         (mono_image_get_inflated_field_token): Removed.
18128         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
18129
18130         * reflection.h (MonoReflectionInflatedField): Removed.
18131
18132 2004-02-12  Martin Baulig  <martin@ximian.com>
18133
18134         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
18135         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
18136
18137         * reflection.c (mono_image_get_methodspec_token): Take a
18138         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
18139         (mono_image_create_token): Check whether we have a
18140         `method->signature->gen_method' and call
18141         mono_image_get_methodspec_token() if appropriate.
18142         (inflated_method_get_object): Removed.
18143         (mono_reflection_bind_generic_method_parameters): Return a
18144         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
18145         (mono_reflection_inflate_method_or_ctor): Likewise.
18146
18147         * reflection.h (MonoReflectionInflatedMethod): Removed.
18148
18149 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
18152         for custom valuetype marshalling.
18153
18154         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
18155
18156 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18157
18158         * icall.c: fixed WSAGetLastError_internal name.
18159
18160 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18161
18162         * threads.c (mono_thread_attach): Allow this to be called multiple
18163         times for a thread.
18164         
18165         * threads.c (build_wait_tids): Do not wait for ourselves.
18166
18167         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
18168         appdomain list is empty.
18169
18170         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
18171         memory returned by mono_string_builder_to_utf16, since it points into
18172         managed memory. Thanks to Bernie Solomon for noticing this.
18173
18174         * icall.c: Add AppDomainSetup icalls.
18175
18176         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
18177
18178         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
18179         types.
18180
18181         * reflection.c (reflection_methodbuilder_to_mono_method): Save
18182         custom attributes to the method_aux struct. Also fix array indexes etc.
18183
18184         * loader.c (mono_method_get_param_names): Make dynamic case work again.
18185         
18186 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
18187
18188         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
18189         (both static and runtime) and reduce startup time.
18190
18191 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18192
18193         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
18194         AsAny marshalling conversion instead of crashing.
18195
18196         * marshal.c: Fix warnings.
18197
18198 2004-02-09  Martin Baulig  <martin@ximian.com>
18199
18200         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
18201
18202         * reflection.h (MonoReflectionInflatedMethod): Removed the
18203         `declaring' field, it's now in the unmanaged MonoGenericMethod.
18204
18205         * reflection.c (method_encode_methodspec): Removed the `method'
18206         argument; we get it from `gmethod->declaring'.
18207         (inflated_method_get_object): Removed the `declaring' argument.
18208
18209 2004-02-09  Martin Baulig  <martin@ximian.com>
18210
18211         * class.h (MonoGenericMethod): New type.
18212         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
18213         `generic_method'.
18214
18215         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
18216         a `MonoGenericMethod *gen_method' one.
18217
18218         * class.c (mono_class_inflate_generic_type): Take an additional
18219         `MonoGenericMethod * argument.  This is only non-NULL if we're
18220         inflating types for a generic method.   
18221         (mono_class_inflate_generic_signature): Renamed to
18222         inflate_generic_signature() and made static; take a
18223         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18224         (inflate_generic_header): Take a `MonoGenericMethod *' argument
18225         instead of a `MonoGenericInst *' one.
18226         (mono_class_inflate_generic_method): Likewise.
18227
18228         * reflection.c (encode_generic_method_sig): Take a
18229         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
18230         (method_encode_methodspec): Likewise.
18231         (inflated_method_get_object): Likewise. 
18232
18233         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
18234         field with a `MonoGenericMethod *gmethod' one.  
18235
18236 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
18237
18238         * class.h (mono_class_has_parent): add parens to expansion
18239         so you can ! this.
18240
18241 2004-02-08  Martin Baulig  <martin@ximian.com>
18242
18243         * image.h (MonoImage): Removed `generics_cache'.
18244
18245         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
18246         instead of a `MonoType *' argument; removed the `inflate_methods'
18247         argument.  Don't inflate methods here.
18248
18249         * loader.c (find_method): If it's a generic instance, call
18250         mono_class_init() on the `sclass->generic_inst->generic_type'.
18251
18252         * metadata.c (mono_type_size): Make this work on uninitialized
18253         generic instances; call it on the `ginst->generic_type's class.
18254
18255         * reflection.c (mono_reflection_bind_generic_parameters): Call
18256         mono_class_from_generic() to create the `ginst->klass'.
18257
18258 2004-02-08  Martin Baulig  <martin@ximian.com>
18259
18260         * class.h (MonoClass): Changed type of `generic_inst' from
18261         `MonoType *' to `MonoGenericInst *'.
18262
18263 2004-02-08  Martin Baulig  <martin@ximian.com>
18264
18265         * icall.c (ves_icall_Type_BindGenericParameters): Just call
18266         mono_type_get_object(), this is now creating a `MonoGenericInst'
18267         for MONO_TYPE_GENERICINST.
18268         (ves_icall_MonoGenericInst_GetParentType): Likewise.
18269         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
18270
18271         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
18272         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
18273         (inflated_method_get_object): Added `MonoClass *refclass' argument.
18274         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
18275         and reflected type.
18276
18277         * reflection.h (MonoReflectionInflatedMethod): Removed
18278         `declaring_type' and `reflected_type'.
18279
18280 2004-02-08  Martin Baulig  <martin@ximian.com>
18281
18282         * class.h (MonoGenericInst): Added `MonoType *parent' and
18283         `MonoType **ifaces'.
18284
18285         * reflection.h (MonoReflectionGenericInst): Removed `klass',
18286         `parent' and `interfaces'.
18287
18288         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18289         `MonoType *' argument and return a `MonoType *'.
18290
18291         * icall.c
18292         (ves_icall_MonoGenericInst_GetParentType): New interncall.
18293         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
18294
18295 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
18298         valuetype marshalling.
18299
18300 2004-02-06  Martin Baulig  <martin@ximian.com>
18301
18302         * class.c
18303         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
18304         (my_mono_class_from_generic_parameter): Likewise.
18305
18306 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
18307
18308         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
18309         contents of the symbol files lazily.
18310
18311         * object.h (MonoThread): Add 'name' and 'name_len' fields.
18312
18313         * threads.h threads.c icall.c: New icalls for getting and setting the
18314         threads name.
18315
18316 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
18319         Raise an exception when the domain is not found.
18320
18321 2004-02-03  Martin Baulig  <martin@ximian.com>
18322
18323         * reflection.c (mono_image_get_methodspec_token): Use the
18324         uninflated signature; fixes gen-33.
18325
18326 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * gc.c threads.c: Make the finalizer thread a normal managed thread so
18329         the finalizer code can use thread functionality.
18330
18331         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
18332         the finalizer thread.
18333
18334         * threads.c: Make some functions more robust.
18335
18336         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
18337
18338         * metadata.h: Add new marshalling conventions.
18339
18340         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
18341         stringbuilder marshalling. Fixes #53700.
18342
18343         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
18344
18345         * reflection.c (mono_image_get_type_info): Save declarative security
18346         info.
18347
18348         * reflection.c (mono_image_get_field_info): Handle uninitialized 
18349         unmanaged fields as well.
18350
18351         * appdomain.c: Bump corlib version.
18352
18353 2004-02-01  Martin Baulig  <martin@ximian.com>
18354
18355         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
18356         method type arguments.  
18357
18358 2004-01-30  Duncan Mak  <duncan@ximian.com>
18359
18360         * marshal.h: Add prototype for
18361         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
18362         and
18363         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
18364         fix the build.
18365
18366 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
18367
18368         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
18369         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
18370
18371 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18372
18373         * marshal.c (mono_marshal_get_native_wrapper): Add support for
18374         custom marshalling of valuetypes.
18375
18376         * marshal.c: Fix some warnings.
18377
18378 2004-01-29  Martin Baulig  <martin@ximian.com>
18379
18380         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
18381         for generic method parameters.
18382
18383         * reflection.c (method_encode_methodspec): Write the uninflated
18384         signature into the methodspec table.
18385         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
18386         is always the uninflated method.
18387         (reflection_methodbuilder_to_mono_method): Copy the generic
18388         parameters from the MethodBuilder into `header->gen_params'.
18389
18390 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
18391
18392         * class.c (mono_class_from_generic_parameter): Fix warning.
18393
18394 2004-01-27  Martin Baulig  <martin@ximian.com>
18395
18396         * class.c (mono_class_from_generic_parameter): Don't create
18397         `klass->methods' here.  
18398
18399 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
18402         extension since it does not work with libraries named lib<FOO>.dll.so.
18403
18404 2004-01-25  Martin Baulig  <martin@ximian.com>
18405
18406         * class.c (mono_class_inflate_generic_type): Added support for
18407         MONO_TYPE_GENERICINST.
18408
18409         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
18410         inflate methods on open constructed types.      
18411
18412 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18413
18414         * object.c: fire ProcessExit event in the root AppDomain after running
18415         Main. Fixes bug #53299.
18416
18417 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18418
18419         * socket-io.c: include the new socket-wrappers.h header.
18420         Use the wrappers instead of the unix socket functions to make the code
18421         more clear.
18422
18423 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18424
18425         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
18426
18427         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18428         Fixes #22532.
18429
18430 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
18431
18432         * reflection.c (mono_image_create_pefile): Handle the case when the
18433         entry point is not a MethodBuilder.
18434
18435         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18436         field to ReflectionMethod since it is not allways a builder.
18437
18438         * reflection.c (type_get_fully_qualified_name): New helper function to
18439         return the fully qualified name of a type.
18440
18441         * reflection.c (encode_marshal_blob): Always emit the fully qualified
18442         type name for custom marshallers.
18443
18444         * reflection.c (mono_marshal_spec_from_builder): Ditto.
18445
18446         * class.c (mono_class_setup_vtable): If a parent class already 
18447         implements an interface, use the implementing methods from that class.
18448         Fixes #53148.
18449
18450 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18451
18452         * threadpool.c: just return instead of ExitThread to allow for thread
18453         clean up earlier.
18454
18455 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
18456
18457         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
18458         when closing resource modules.
18459
18460         * reflection.c (mono_image_create_pefile): Handle the case when the
18461         entry point is not a MethodBuilder.
18462
18463         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
18464         field to ReflectionMethod since it is not allways a builder.
18465
18466 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18467
18468         * marshal.c (mono_marshal_get_managed_wrapper): 
18469         mono_marshal_alloc takes native int so CONV_I
18470         the arg for 64bits.
18471
18472 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
18473
18474         * reflection.c (fixup_cattrs): New function to fixup the methoddef
18475         tokens in the cattr table. Fixes #53108.
18476
18477 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18478
18479         * loader.c: don't trim ".dll" before looking up in the config file.
18480         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
18481
18482 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
18485         Return the module which contains the resource as well.
18486         (ves_icall_System_Reflection_Module_Close): New icall.
18487
18488         * appdomain.c: Bump corlib version number.
18489
18490         * image.c (mono_image_addref): New public function.
18491
18492         * assembly.c: Call mono_image_addref.
18493
18494         * reflection.c (mono_module_get_object): Increase reference count of 
18495         the image.
18496
18497         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
18498         Fixes #22532.
18499
18500         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
18501         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
18502         proper exceptions on DllImport problems.
18503
18504 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
18505
18506         * class.c, metadata.c: eliminate CSIZE macro.
18507
18508 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
18509
18510         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
18511         * object.h: Added async_callback field in MonoAsyncResult.
18512         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
18513         * verify.c: Added async_callback in MonoAsyncResult layout.
18514
18515 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
18516
18517         * reflection.c (mono_reflection_get_custom_attrs): Add support
18518         for Modules.
18519
18520 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18521
18522         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
18523         marshalling.
18524         (mono_marshal_method_from_wrapper): Add null pointer check.
18525
18526 2004-01-16  Martin Baulig  <martin@ximian.com>
18527
18528         * debug-mono-symfile.h: Set version number to 36 and reflect
18529         latest symbol writer changes.
18530
18531 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
18534         multi-dimensional arrays.
18535         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
18536         (mono_class_from_mono_type): Use bounded_array_class_get.
18537         
18538         * class.c (mono_bounded_array_class_get): New function which takes
18539         a 'bounded' bool argument to distinguish vectors from one dimensional
18540         arrays.
18541
18542         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
18543         bounded_array_class_get if the array has bounds.
18544
18545         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18546         Search modules loaded using AssemblyBuilder:AddModule as well.
18547
18548 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18549
18550         * appdomain.c: increased corlib version.
18551         * filewatcher.c: removed g_print.
18552         * icall.c:
18553         (get_property_info): only allocate what is actually requested.
18554         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
18555
18556 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18557
18558         * Makefile.am: added filewatcher.[ch]
18559         * filewatcher.[ch]: FileSystemWatcher runtime support.
18560         * icall.c: added new FSW icalls.
18561
18562 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18563
18564         * string-icalls.c: fix stringbuilder regression as suggested by
18565         Iain McCoy <iain@mccoy.id.au>.
18566
18567 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18568
18569         * process.c (process_read_stringtable_block): Recognize '007f' as
18570         a language neutral stringtable block.
18571
18572 2004-01-12  Patrik Torstensson
18573
18574         * object.h (MonoStringBuilder) : Changed layout to support our
18575         new stringbuilder class.
18576         * marshal.c: Change marshalling to support the new layout of 
18577         string builder.
18578         * appdomain.c: increased version number because new layout of
18579         string builder.
18580
18581 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
18582
18583         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
18584         assembly name as an string instead of an AssemblyName, since it is
18585         easier to extract info from it.
18586
18587         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
18588         the culture subdirectories too. Fixes #52231.
18589
18590 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18591
18592         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
18593         It takes 2 new parameters with an optional name for the method to look
18594         for and case ignoring info.
18595
18596         * threadpool.c: removed unused variable.
18597
18598 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18599
18600         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
18601         It takes 2 new parameters with an optional name for the property to look
18602         for and case ignoring info.
18603         Fixes bug #52753.
18604
18605 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18606
18607         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
18608         Fix #52451.
18609
18610 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18611
18612         * appdomain.c:
18613         * assembly.c: escape the uri before passing it to g_filename_from_uri.
18614         Fixes bug #52630.
18615
18616 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
18617
18618         * reflection.c: Add support for more than one unmanaged resource.
18619
18620         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
18621         in field->def_value, as done in all other cases.
18622
18623         * reflection.c (mono_reflection_get_custom_attrs): Add support for
18624         TypeBuilders.
18625
18626         * reflection.c (mono_reflection_create_runtime_class): Remove 
18627         errorneous assignment to klass->element_class, since it is already
18628         done in mono_reflection_setup_internal_class.
18629
18630 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18631
18632         * gc.c: added missing LeaveCriticalSection.
18633         * icall.c: indented a couple of lines.
18634         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
18635         if we call EndInvoke inside a callback. Fixes bug #52601.
18636
18637 2004-01-07  Martin Baulig  <martin@ximian.com>
18638
18639         * mono-debug-debugger.h
18640         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
18641
18642 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
18643
18644         * appdomain.c: Use messages in NotImplementedException.
18645
18646         * exception.c (mono_get_exception_not_implemented): Now this takes
18647         a message argument.
18648
18649         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
18650         exception instead of g_asserting an aborting when something is not
18651         implemented.
18652
18653         Add some inline docs.
18654
18655 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * reflection.h: Update after changes to object layout.
18658
18659         * reflection.c: Implement saving of unmanaged aka win32 resources.
18660
18661         * appdomain.c: Bump version number.
18662
18663         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
18664         Handle missing domains gracefully.
18665
18666 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
18667
18668         * file-io.c : On Windows, there are much more invalid_path_chars.
18669
18670 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18671
18672         * class.h, object.c: prepare for GetType () speedup.
18673
18674 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
18675
18676         * profiler.c: workaround for --profile null reference exception on
18677           cygwin. Patch by Patrik Torstensson.
18678
18679 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
18680
18681         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
18682         make work for unaligned access.
18683
18684 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
18685
18686         * class.c: small cleanup (class->fields [i] -> field).
18687         * image.c: check address of metadata is valid.
18688
18689 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
18690
18691         * assembly.h assembly.c (mono_assembly_loaded): New public function to
18692         search the list of loaded assemblies.
18693
18694         * reflection.c (mono_reflection_type_from_name): Use 
18695         mono_assembly_loaded instead of mono_image_loaded.
18696
18697         * reflection.c: Fix warnings.
18698
18699 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
18700
18701         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
18702         is dynamic. This is needed since an assembly can contain both dynamic and
18703         non-dynamic images.
18704
18705         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
18706         assembly->dynamic.
18707
18708         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
18709
18710         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
18711         to store modules loaded using AddModule.
18712
18713         * reflection.c (mono_image_fill_file_table): Generalize this so it works
18714         on Modules.
18715
18716         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
18717
18718         * reflection.c (mono_image_fill_export_table_from_module): New function to
18719         fill out the EXPORTEDTYPES table from a module.
18720
18721         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
18722         into a separate function. Also handle loaded non-dynamic modules.
18723
18724         * reflection.c (mono_image_basic_init): Fix memory allocation.
18725
18726         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18727
18728         * assembly.c (mono_assembly_load_references): Make this public.
18729
18730 2003-12-19  Martin Baulig  <martin@ximian.com>
18731
18732         * class.c (mono_class_initialize_generic): Made this static, take
18733         a `MonoGenericInst *' instead of a `MonoClass *'.
18734         (mono_class_from_generic): Call mono_class_initialize_generic()
18735         unless we're already initialized or being called from
18736         do_mono_metadata_parse_generic_inst().
18737
18738         * class.h (MonoGenericInst): Added `initialized' and
18739         `init_pending' flags.
18740
18741         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
18742         `mono_class_init (gklass)' or mono_class_initialize_generic()
18743         here; set `generic_inst->init_pending' while parsing the
18744         `type_argv'.
18745
18746 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
18747
18748         * locales.c: include string.h for memxxx prototypes
18749
18750 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
18753         constructor when accessing literal fields.
18754
18755 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18758
18759         * reflection.c (assembly_add_resource_manifest): New function to fill
18760         the MANIFESTRESOURCE table.
18761
18762         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
18763
18764         * reflection.h: Update to changes in class layout.
18765
18766         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
18767         Reenable call to mono_runtime_is_shutting_down ().
18768
18769         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
18770         determine if the runtime is shutting down.
18771
18772 2003-12-16  Jackson Harper <jackson@ximian.com>
18773
18774         * icall.c: comment out call to mono_runtime_is_shutting_down to
18775         fix build.
18776         
18777 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
18780         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
18781
18782 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
18783
18784         * reflection.c: move definition of swap_with_size
18785         to before its first call
18786
18787 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
18788
18789         * appdomain.c (mono_runtime_is_shutting_down): New public function.
18790
18791         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
18792         icall.
18793
18794         * object.c: Fix warnings.
18795
18796         * icall.c (ves_icall_Type_Get...): Only consider inherited static
18797         members if FlattenHierarchy is set.
18798
18799         * reflection.c (mono_image_add_decl_security): New function to emit
18800         declarative security.
18801
18802         * reflection.h reflection.c: Add support for declarative security.
18803
18804         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18805         
18806 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
18809         
18810         * appdomain.c verify.c: Moved corlib version checking into its own
18811         function in appdomain.c since it needs to create vtables etc.
18812
18813 2003-12-13  Patrik Torstensson <p@rxc.se>
18814
18815         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
18816         instead of unwrapped server.
18817
18818 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * verify.c (check_corlib): Fix field index.
18821
18822 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
18825         GetGacPath icall.
18826
18827 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
18828
18829         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
18830         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
18831         cope with sizeof(size_t) != sizeof(guint32).
18832
18833 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18834
18835         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
18836         in case of failure.
18837
18838 2003-12-10  Mark Crichton <crichton@gimp.org>
18839
18840         * icall.c: removed the GetNonZeroBytes.  We now handle this case
18841         in managed code.
18842
18843         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
18844
18845 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
18846
18847         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
18848         marked as deleted.
18849
18850 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18851
18852         * verify.c (check_corlib): Handle the case when the version field is 
18853         initialized by a static constructor.
18854
18855 2003-12-08  Patrik Torstensson  <p@rxc.se>
18856
18857     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
18858
18859 2003-12-08  Martin Baulig  <martin@ximian.com>
18860
18861         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
18862         a MonoReflectionGenericParameter, also take the parameter index
18863         and name as arguments.
18864         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
18865         (ves_icall_MonoGenericParam_initialize): New interncall.
18866         (ves_icall_Type_make_byref_type): New interncall.
18867
18868         * reflection.h (MonoReflectionGenericParam): Derive from
18869         MonoReflectionType, not just from MonoObject.  Added `refobj' and
18870         `index' fields.
18871
18872         * reflection.c (mono_reflection_define_generic_parameter): Create
18873         and return a new MonoReflectionGenericParam; don't initialize the
18874         constraints here.
18875         (mono_reflection_initialize_generic_parameter): New public method;
18876         initializes the constraints and creates the `param->pklass'.
18877
18878 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18879
18880         * reflection.h reflection.c: Use the new fields 'num_types', 
18881         'num_fields' and 'num_methods' to track the number of types etc.
18882
18883         * verify.c (check_corlib): Check corlib version number.
18884
18885 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
18888         function works on all methods.
18889
18890 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18891
18892         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
18893         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
18894         the custom_type_info flag of the transparent proxy.
18895         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
18896         objects that supports IRemotingTypeInfo.
18897         * object.h: Added custom_type_info field in transparent proxy.
18898
18899 2003-12-06  Martin Baulig  <martin@ximian.com>
18900
18901         * class.c (mono_class_create_from_generic): Removed.
18902         (mono_class_from_generic): Check `ginst->klass' before doing
18903         anything else.  This is important to fully support "recursive"
18904         generic types.
18905
18906         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
18907         empty `generic_inst->klass' before doing anything else.
18908
18909 2003-12-06  Dick Porter  <dick@ximian.com>
18910
18911         * verify.c: 
18912         * object.h:
18913         * icall.c:
18914         * locales.c: Use C structs to access class fields.  Don't do a
18915         conversion between MonoString and UChar because both are
18916         platform-endian UTF-16.  Compare now takes startindex and count
18917         parameters.  Add a char overload for IndexOf.  Speed up the
18918         invariant string IndexOf.
18919
18920 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * Makefile.am (monosn_LDADD): Fix parallel build.
18923
18924 2003-12-04  Martin Baulig  <martin@ximian.com>
18925
18926         * icall.c
18927         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18928         (ves_icall_Type_make_array_type): New interncall.       
18929
18930 2003-12-04  Martin Baulig  <martin@ximian.com>
18931
18932         * locales.c: also change it in the !HAVE_ICU case.
18933
18934 2003-12-04  Dick Porter  <dick@ximian.com>
18935
18936         * icall.c:
18937         * locales.c: construct_compareinfo is now in CompareInfo, not
18938         CultureInfo.
18939
18940 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * image.c (mono_image_load_file_for_image): Cache loaded images in the
18943         image->files array.
18944
18945         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
18946         table as well.
18947
18948         * assembly.c (mono_assembly_load_references): Only load references
18949         once.
18950
18951         * class.c (mono_class_from_name): Avoid linear search of the 
18952         EXPORTEDTYPE table.
18953
18954         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
18955
18956 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * image.h (MonoImage): Add 'field_cache' field.
18959
18960         * loader.c (mono_field_from_token): Cache field lookups.
18961         
18962         * reflection.c (mono_module_get_object): Fix name property.
18963
18964         * icall.c (ves_icall_get_enum_info): Update after changes to 
18965         mono_metadata_get_constant_index ().
18966
18967         * icall.c: Get rid of get_type_info icall, use a separate icall for
18968         each type property to avoid needless memory allocations. Fixes #51514.
18969
18970         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
18971         to avoid needless binary searches.
18972
18973         * class.c (class_compute_field_layout): Move the initialization of
18974         field->def_value to mono_class_vtable ().
18975
18976         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
18977         non-corlib types.
18978
18979         * object.c (mono_object_allocate): Make it inline.
18980
18981         * object.c (mono_object_allocate_spec): Make it inline.
18982         
18983 2003-12-02  Dick Porter  <dick@ximian.com>
18984
18985         * locales.c (create_NumberFormat): NumberFormatInfo construction.
18986         Patch by Mohammad DAMT (mdamt@cdl2000.com).
18987
18988 2003-12-01  Dick Porter  <dick@ximian.com>
18989
18990         * threads.c: Fix signature and call in CreateMutex and
18991         CreateEvent.
18992
18993 2003-12-01  Dick Porter  <dick@ximian.com>
18994
18995         * icall.c: 
18996         * locales.c: Implement string compares and searching
18997
18998         * object.h: Add extra Thread field
18999
19000 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * reflection.c (fixup_method): Add support for MonoCMethod.
19003
19004 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
19007
19008         * reflection.c (assembly_name_to_aname): Allow extra characters in
19009         assembly names. Fixes #51468.
19010
19011 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19012
19013         * exception.c (mono_exception_from_name_domain): New helper function.
19014
19015         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
19016         exception object in the correct domain.
19017
19018         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
19019         formatting + make a copy a the input data.
19020
19021         * loader.c (mono_get_method_from_token): Methods which contain
19022         native code do not have entries in the ImplMap.
19023
19024         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
19025         Thanks to Gonzalo for spotting this.
19026         
19027         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
19028         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
19029
19030         * assembly.h (mono_assembly_load_from): Split the second part of 
19031         assembly loading into a new public function.
19032
19033         * exception.h (mono_get_exception_bad_image_format): New function.
19034
19035 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19038         Enumerate all modules inside a dynamic assembly. Fixes #51293.
19039         
19040         * icall.c: Add new icall for creating dynamic methods.
19041
19042         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
19043
19044         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
19045
19046         * reflection.c (mono_reflection_create_dynamic_method): New icall to
19047         create a dynamic method.
19048
19049         * reflection.c (resolve_object): New helper function.
19050
19051         * reflection.c: Generalize ReflectionMethodBuilder and the functions
19052         which manipulate it so they can also work on dynamic methods.
19053
19054         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
19055         creating the MonoReflectionMethodAux structure if it is not needed.
19056         
19057         * reflection.h verify.c: Update after changes to object layout.
19058
19059         * reflection.c (method_builder_encode_signature): Fix compilation on
19060         gcc 2.95.x.
19061
19062 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
19063
19064         * appdomain.h: Added support for context static fields. Added static_data
19065           field to MonoAppContext and renamed thread_static_fields to a more
19066           generic special_static_fields in MonoAppDomain, since it can now contain
19067           context static fields.
19068         * domain.c: Updated hashtable name.
19069         * object.c: Replaced field_is_thread_static() for a more generic
19070           field_is_special_static() which also checks for context static attribute.
19071           In mono_class_vtable(), added support for static context fields.
19072         * threads.c: Changed methods that manage thread static fields to more
19073           generic methods so they can be reused both for thread and context static
19074           data.
19075         * threads.h: Declared some new methods.
19076
19077 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * reflection.h: Update after changes to the managed types.
19080
19081         * reflection.c (encode_custom_modifiers): New helper function.
19082
19083         * reflection.c (method_encode_signature): Emit custom modifiers.
19084
19085         * reflection.c (field_encode_signature): Emit custom modifiers.
19086
19087 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
19090
19091         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
19092         implementation.
19093
19094         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
19095         icall.
19096
19097         * object.c (mono_field_get_value_object): New function.
19098
19099         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
19100         specific.
19101
19102 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
19105         return a preallocated out-of-memory exception instance.
19106
19107         * object.c (out_of_memory): Use the new function.
19108
19109         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
19110         flag is before the custom modifiers. Fixes #49802.
19111
19112 2003-11-16  Martin Baulig  <martin@ximian.com>
19113
19114         * class.c (mono_class_is_open_constructed_type): Implemented the
19115         MONO_TYPE_GENERICINST case.
19116
19117 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19118
19119         * assembly.c (mono_assembly_fill_assembly_name): New function to
19120         fill out the MonoAssemblyName structure.
19121         (mono_assembly_open): Use the new function.
19122
19123         * icall.c (fill_reflection_assembly_name): New helper function.
19124
19125         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
19126         new function.
19127
19128         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
19129
19130 2003-11-15  Martin Baulig  <martin@ximian.com>
19131
19132         * class.c (mono_class_is_open_constructed_type): New public
19133         function; checks whether a type is an open constructed type,
19134         ie. whether it still contains type parameters.
19135         (mono_class_inflate_generic_type): If we're a type parameter and
19136         the inflated type is also a MONO_TYPE_(M)VAR, return the original
19137         type.
19138
19139         * class.h (MonoGenericInst): Added `guint32 is_open'.
19140
19141         * loader.c (method_from_methodspec): Check whether we're an open
19142         or closed constructed type and set `ginst->is_open'.
19143
19144         * reflection.c (mono_reflection_bind_generic_parameters): Check
19145         whether we're an open or closed constructed type and set
19146         `ginst->is_open'.
19147         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
19148         from open constructed types.
19149
19150 2003-11-15  Martin Baulig  <martin@ximian.com>
19151
19152         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19153         a generic instance (instead of a generic type declaration) with
19154         unbound generic parameters, bind them to our actual types.
19155
19156 2003-11-14  Martin Baulig  <martin@ximian.com>
19157
19158         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
19159
19160         * reflection.c (mono_reflection_bind_generic_parameters): If we're
19161         an interface type, populate `res->interfaces' with instantiated
19162         versions of all the interfaces we inherit.
19163
19164 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
19165
19166         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
19167         when MONO_PATH is set but doesn't contain the install dir.
19168
19169 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19170
19171         * icall.c:
19172         (ves_icall_Type_GetInterfaces): don't return an interface twice when
19173         it's also implemented in base classes. Fixes bug #50927.
19174
19175 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
19178         if this method is called from a finalizer. Fixes #50913.
19179
19180 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
19181
19182         * threads.c: Implement VolatileRead/VolatileWrite
19183
19184         * icall.c: Add new icalls for VolatileRead/VolatileWrite
19185
19186 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
19189         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
19190         2.95.3.
19191
19192         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
19193         from Peter Ross (pro@missioncriticalit.com).
19194         
19195 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
19196
19197         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
19198
19199 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19200
19201         * assembly.c (mono_assembly_load_references): Disable check because it
19202         triggers on older corlibs which lots of people have.
19203
19204 2003-11-12  Jackson Harper  <jackson@ximian.com>
19205
19206         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
19207         load corlib.dll if mscorlib.dll is not found.
19208         * assembly.h: Remove corlib name define.
19209         * class.c:
19210         * domain.c:
19211         * image.c: Change corlib name to mscorlib.
19212         
19213 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
19216
19217 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
19218
19219         * appdomain.h: Added loader_optimization here to sync with the C#
19220         code, and add disallow_binding_redirects field.
19221
19222 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
19225
19226         * reflection.c (mono_image_build_metadata): Fix crash on modules
19227         with no types.
19228
19229         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
19230
19231         * icall.c (ves_icall_get_method_info): Return callingConvention as
19232         well.
19233
19234         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
19235         namespaces from the EXPORTEDTYPE table as well.
19236
19237         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
19238         from all modules inside the assembly.
19239         
19240 2003-11-11  Martin Baulig  <martin@ximian.com>
19241
19242         * reflection.c (mono_reflection_bind_generic_parameters): Make
19243         this work for interfaces.
19244
19245 2003-11-11  Martin Baulig  <martin@ximian.com>
19246
19247         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
19248
19249 2003-11-11  Martin Baulig  <martin@ximian.com>
19250
19251         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
19252         "MonoInflatedMethod" and "MonoInflatedCtor".
19253
19254 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * reflection.c (resolution_scope_from_image): Use the assembly table
19257         from the manifest module, since other modules don't have it.
19258
19259         * debug-helpers.c (mono_type_full_name): New helper function.
19260
19261         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
19262
19263         * image.c (mono_image_load_file_for_image): New public function which
19264         is a replacement for the load_file_for_image in class.c.
19265
19266         * assembly.c (mono_assembly_load_module): A wrapper for the function
19267         above which does assembly association and reference loading too.
19268
19269         * class.c (mono_class_from_name): Call mono_assembly_load_module.
19270
19271 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19272
19273         * appdomain.c: not all of the attributes for the full assembly name
19274         are required and the order doesn't matter. Fixes bug #50787.
19275
19276 2003-11-10  Dick Porter  <dick@ximian.com>
19277
19278         * locales.c: Use platform-endian UTF16
19279
19280 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19283         
19284 2003-11-10  Martin Baulig  <martin@ximian.com>
19285
19286         * metadata.c
19287         (mono_metadata_load_generic_params): Make this actually work.
19288
19289         * reflection.c (mono_reflection_bind_generic_parameters): If our
19290         parent is a generic instance, pass all the `types' to it, no
19291         matter whether it has the same number of type parameters or not.
19292
19293 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
19296
19297         * assembly.c (mono_assembly_load_references): Move the image<->assembly
19298         assignment code to this function so it gets called recursively for all
19299         modules.
19300
19301         * image.c (load_modules): Remove the assembly assignment since it is
19302         now done by mono_assembly_load_references.
19303         
19304         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19305         Add 'module' argument.
19306         (mono_module_get_types): New helper function.
19307         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
19308
19309 2003-11-08  Martin Baulig  <martin@ximian.com>
19310
19311         * class.c (mono_class_inflate_generic_method): Interface method
19312         don't have a header.
19313
19314         * reflection.c (mono_image_get_methodspec_token): Take an
19315         additional `MonoGenericInst *' argument instead of reading it from
19316         the header; this is necessary to support interfaces.
19317         (mono_image_create_token): Pass the `MonoGenericInst *' from the
19318         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
19319         (inflated_method_get_object): Take an additional `MonoGenericInst *'
19320         argument.
19321
19322         * reflection.h (MonoReflectionInflatedMethod): Added
19323         `MonoGenericInst *ginst'.
19324
19325 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
19328
19329 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
19330
19331         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
19332
19333 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19334
19335         * reflection.c 
19336         (reflection_methodbuilder_from_method_builder):
19337         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
19338         initialize a ReflectionMethodBuilder structure.
19339         (mono_image_get_methodbuilder_token):
19340         (mono_image_get_ctorbuilder_token): New functions to emit memberref
19341         tokens which point to types in another module inside the same assembly.
19342
19343         * reflection.c: Use the new helper functions.
19344         
19345         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
19346
19347         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
19348         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
19349
19350         * reflection.c (resolution_scope_from_image): Emit a moduleref if
19351         neccesary.
19352
19353         * reflection.c (mono_image_build_metadata): Emit metadata only for the
19354         current module. Emit the manifest only for the main module.
19355
19356         * reflection.c (mono_image_create_token): Add assertion when a 
19357         memberref needs to be created.
19358
19359         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
19360
19361         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
19362         larger buffer for the custom attribute blob. Fixes #50637.
19363         
19364 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19365
19366         * threadpool.c: notify listener on async processing handles after
19367         invoking the async callback. Thanks to Zoltan.
19368
19369 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
19372         avoid code duplication.
19373
19374         * reflection.h (MonoDynamicImage): New type which is currently unused,
19375         but will be used through the ref.emit code in place of 
19376         MonoDynamicAssembly.
19377
19378         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19379         object layout.
19380
19381         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
19382         a MonoDynamicImage instead of just a MonoImage.
19383         
19384         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
19385         icalls to ModuleBuilder but keep their semantics, so they will work
19386         with moduleb->assemblyb. This will change later.
19387         
19388 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
19391         object layout.
19392
19393         * reflection.c (mono_image_build_metadata): Avoid creation of a default
19394         main module, since it is now done by the managed code.
19395
19396 2003-11-03  Martin Baulig  <martin@ximian.com>
19397
19398         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
19399         `ginst->klass' here.
19400         (method_encode_methodspec): Don't use the `ginst->generic_method's
19401         klass if it's a generic instance, use `ginst->klass' in this case.
19402
19403 2003-11-03  Martin Baulig  <martin@ximian.com>
19404
19405         * reflection.c (mono_image_get_generic_method_param_info):
19406         Removed, use mono_image_get_generic_param_info() instead.
19407         (mono_image_get_type_info): Write the GenericParam table before
19408         the Method table.  This is neccessary because in the GenericParam
19409         table, type parameters of the class (ie. '!0' etc.) must come
19410         before the ones from its generic methods (ie. '!!0' etc).
19411
19412 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
19413
19414         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
19415
19416 2003-11-02  Martin Baulig  <martin@ximian.com>
19417
19418         * reflection.c (create_generic_typespec): Take a
19419         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
19420         the generic parameters from it.
19421
19422 2003-11-02  Martin Baulig  <martin@ximian.com>
19423
19424         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
19425         instead of a `MonoClassField *' since we just need the type.
19426         (create_generic_typespec): New static function.  Creates a
19427         TypeSpec token for a generic type declaration.
19428         (mono_image_get_generic_field_token): New static function.
19429         (mono_image_create_token): If we're a FieldBuilder in a generic
19430         type declaration, call mono_image_get_generic_field_token() to get
19431         the token.
19432
19433 2003-11-02  Martin Baulig  <martin@ximian.com>
19434
19435         * reflection.h
19436         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
19437         `MonoReflectionGenericInst *declaring_type' and
19438         `MonoReflectionGenericInst *reflected_type' fields.
19439
19440         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
19441         `MonoReflectionGenericInst *declaring_type' and a
19442         `MonoReflectionGenericInst *reflected_type' argument instead of a
19443         single `MonoReflectionGenericInst *type' one.  Set
19444         `res->declaring_type' and `res->reflected_type' from them.
19445         (mono_reflection_inflate_field): Likewise.      
19446
19447 2003-11-02  Martin Baulig  <martin@ximian.com>
19448
19449         * class.c (mono_class_setup_vtable): Don't store generic methods
19450         in the vtable.  
19451
19452 2003-11-02  Martin Baulig  <martin@ximian.com>
19453
19454         * reflection.h (MonoReflectionGenericInst): Added
19455         `MonoReflectionType *declaring_type'.
19456
19457         * reflection.c (mono_reflection_bind_generic_parameters): Use
19458         `if (tb->parent)' instead of `klass->parent'.
19459
19460 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
19463         with an empty ASSEMBLY table.
19464
19465         * reflection.c (mono_image_build_metadata): Avoid using the same loop
19466         variable in the inner and outer loops.
19467
19468 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * metadata.h (mono_metadata_make_token): Put parentheses around macro
19471         argument.
19472
19473         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
19474         
19475         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
19476         icalls. Instead, do everything in managed code. This is needed since
19477         it is hard to restore the original domain etc. in unmanaged code in the
19478         presence of undeniable exceptions.
19479
19480         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
19481         New icalls to push and pop appdomain refs.
19482
19483 2003-10-31  Martin Baulig  <martin@ximian.com>
19484
19485         * class.c (inflate_generic_type): Renamed to
19486         mono_class_inflate_generic_type() and made it public.
19487
19488         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
19489         New interncall.
19490
19491         * loader.c (mono_field_from_memberref): Also set the retklass for
19492         typespecs.
19493
19494         * fielder.c (mono_image_get_inflated_field_token): New static
19495         method; creates a metadata token for an inflated field.
19496         (mono_image_create_token, fixup_method): Added support for
19497         "MonoInflatedField".
19498         (fieldbuilder_to_mono_class_field): New static function.
19499         (mono_reflection_inflate_field): New public function.
19500
19501         * reflection.h
19502         (MonoReflectionGenericInst): Added `MonoArray *fields'.
19503         (MonoReflectionInflatedField): New typedef.     
19504
19505 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
19506
19507         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
19508         for Solaris and other platforms without s6_addr16
19509
19510 2003-10-30  Martin Baulig  <martin@ximian.com>
19511
19512         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
19513         argument instead of two.
19514         (mono_class_inflate_generic_signature): Likewise.
19515         (inflate_generic_header): Likewise.
19516         (mono_class_inflate_generic_method): Likewise.  In addition, if
19517         `ginst->klass' is set, it becomes the new `method->klass'.
19518
19519         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
19520         field.
19521
19522         * reflection.c (encode_generic_method_sig): Write a 0xa as the
19523         first byte. [FIXME]
19524         (method_encode_methodspec): If we have generic parameters, create
19525         a MethodSpec instead of a MethodRef.
19526         (fixup_method): Added support for "MonoInflatedMethod" and
19527         "MonoInflatedCtor".
19528         (mono_image_create_token): Added support for "MonoInflatedMethod"
19529         and "MonoInflatedCtor".
19530         (inflated_method_get_object): New static function; returns a
19531         managed "System.Reflection.MonoInflatedMethod" object.
19532         (mono_reflection_bind_generic_method_parameters): Return a
19533         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
19534         (mono_reflection_inflate_method_or_ctor): Likewise.
19535         (mono_image_get_generic_method_param_info): Initialize unused
19536         fields to zero.
19537         (mono_image_get_generic_param_info): Likewise.
19538
19539         * reflection.h (MonoReflectionInflatedMethod): New public
19540         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
19541         "S.R.MonoInflatedCtor" classes.
19542
19543         * loader.c (method_from_memberref): If we're a TypeSpec and it
19544         resolves to a generic instance, inflate the method.
19545
19546 2003-10-28  Dick Porter  <dick@ximian.com>
19547
19548         * object.c (mono_runtime_run_main): Convert command-line arguments
19549         into utf8, falling back to the user's locale encoding to do so.
19550
19551 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19552
19553         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
19554         at this time.
19555
19556         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
19557
19558         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
19559         up icalls at method definition time. Partially fixes #33569.
19560
19561 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
19564         marshalling of arrays. Fixes #50116.
19565
19566         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
19567
19568         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
19569         points to a vtable in the dying appdomain.
19570
19571         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
19572         listeners into unmanaged code inside the lock.
19573
19574         * object.c (mono_class_vtable): Turn off typed allocation in non-root
19575         domains and add some comments.
19576
19577 2003-10-25  Martin Baulig  <martin@ximian.com>
19578
19579         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
19580
19581         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
19582
19583         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
19584         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
19585         currently parsing.  Create the generic class and store it in
19586         `generic_inst->klass' before parsing the type arguments.  This is
19587         required to support "recursive" definitions; see mcs/tests/gen-23.cs
19588         for an example.
19589         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
19590         to support recursive typespec entries.
19591
19592         * class.c (mono_class_setup_parent): If our parent is a generic
19593         instance, we may get called before it has its name set.
19594         (mono_class_from_generic): Splitted into
19595         mono_class_create_from_generic() and mono_class_initialize_generic().
19596
19597 2003-10-25  Martin Baulig  <martin@ximian.com>
19598
19599         * icall.c (ves_icall_Type_BindGenericParameters): Return a
19600         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
19601         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
19602         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
19603
19604         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
19605         (create_typespec): Likewise.
19606         (mono_reflection_bind_generic_parameters): Return a
19607         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
19608         (mono_reflection_inflate_method_or_ctor): New public function.
19609
19610         * reflection.h (MonoReflectionGenericInst): New typedef.        
19611
19612 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
19615         inside the domain lock. Fixes #49993.
19616         
19617         * object.c (mono_class_vtable): When typed allocation is used, 
19618         allocate vtables in the GC heap instead of in the mempool, since the
19619         vtables contain GC descriptors which are used by the collector even
19620         after the domain owning the mempool is unloaded.
19621
19622         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
19623
19624         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
19625         reflect what it does. Also invalidate mempools instead of freeing
19626         them if a define is set.
19627
19628         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
19629         of the appdomain.
19630         
19631         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
19632         hold the finalizable objects in this domain.
19633
19634         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
19635         appdomain.
19636
19637         * appdomain.c (mono_domain_set): New function to set the current
19638         appdomain, but only if it is not being unloaded.
19639
19640         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
19641         appdomain which is being unloaded.
19642         
19643         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
19644         unloading of the root appdomain.
19645
19646         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
19647         icall to execute a method in another appdomain. Intended as a 
19648         replacement for InternalSetDomain, which can confuse the code 
19649         generation in the JIT.
19650
19651         * appdomain.c (mono_domain_is_unloading): New function to determine
19652         whenever an appdomain is unloading.
19653
19654         * appdomain.c (mono_domain_unload): New function to correctly unload
19655         an appdomain.
19656
19657         * assembly.c (mono_assembly_load_references): Check that an assembly
19658         does not references itself.
19659
19660         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
19661         domain manually, it asks the finalizer thread to do it, then waits for
19662         the result. Also added a timeout.
19663
19664         * icall.c: Register the new icalls.
19665
19666         * threads.h threads.c: Export the mono_gc_stop_world and 
19667         mono_gc_start_world functions.
19668         
19669         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
19670         function to fill out the mempool with 0x2a.
19671
19672 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * reflection.h (MonoReflectionMethodAux): New structure to store
19675         information which is rarely used, thus is not in the MonoMethod
19676         structure.
19677
19678         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
19679         store the aux info.
19680
19681         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
19682         and marshalling info into the aux structure.
19683
19684         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
19685         from the aux structure.
19686
19687         * loader.c (mono_method_get_param_names): Retrieve the param names from
19688         the aux structure.
19689         
19690 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
19691
19692         * exception.h exception.c: Add AppDomainUnloadedException && fix 
19693         warning.
19694
19695 2003-10-21  Dick Porter  <dick@ximian.com>
19696
19697         * socket-io.c
19698         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
19699         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
19700
19701 2003-10-21  Martin Baulig  <martin@ximian.com>
19702
19703         * reflection.c (mono_reflection_bind_generic_parameters):
19704         `klass->parent' is NULL for interfaces.
19705
19706 2003-10-21  Martin Baulig  <martin@ximian.com>
19707
19708         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19709
19710 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
19711
19712         * exception.c (mono_exception_from_name_msg): New helper function for
19713         creating exceptions and initializing their message field.
19714
19715         * exception.c: Simplify functions using the new helper.
19716
19717         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
19718         New function.
19719
19720         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
19721         mono_raise_exception, since otherwise gcc doesn't generate the function
19722         epilog for raise_exception, confusing the stack unwinding in the JIT.
19723         Fixes #45043.
19724
19725         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
19726         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
19727         Fixes #49499.
19728
19729 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19730
19731         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
19732         utf8.
19733
19734 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
19735
19736         * icall.c: Removed GetUninitializedObject method because
19737           AllocateUninitializedClassInstance does the same.
19738
19739 2003-10-18  Martin Baulig  <martin@ximian.com>
19740
19741         * class.c (inflate_generic_signature): Renamed to
19742         mono_class_inflate_generic_signature() and made it public.
19743         (my_mono_class_from_generic_parameter): New static function; if we
19744         don't already have the generic parameter's MonoClass, create a
19745         very simple one which is just used internally in the runtime and
19746         not passed back to managed code.
19747
19748         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
19749
19750         * metadata.h (MonoMethodSignature): Moved the
19751         `MonoGenericParam *gen_params' to the MonoMethodHeader.
19752         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
19753
19754         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
19755         ves_icall_MonoMethod_GetGenericArguments(); this is now an
19756         interncall on the MonoMethod class, not on MethodInfo.
19757         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
19758         calling mono_reflection_bind_generic_method_parameters() directly.
19759
19760         * loader.c (mono_method_get_signature): If this is a MethodSpec;
19761         return the already computed `method->signature'.
19762         (method_from_methodspec): New static function to load a method
19763         from a MethodSpec entry.
19764         (mono_get_method_from_token): Call the new method_from_methodspec()
19765         for MethodSpec tokens.  
19766         (mono_get_method_from_token): If we're a generic method, load the
19767         type parameters.
19768
19769         * reflection.c (mono_image_get_memberref_token): Allow
19770         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
19771         table.
19772         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
19773         (mono_image_create_token): First check whether it's a generic
19774         method (so we'd need to create a MethodSpec), then do the other
19775         two alternatives.
19776         (mono_reflection_bind_generic_method_parameters): Return a
19777         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
19778         called directly from the interncall.
19779
19780 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * reflection.c (load_public_key): Move loading of the public key
19783         into managed code.
19784
19785         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
19786
19787         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
19788         fields.
19789
19790         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
19791         culture, hash_alg and public_key. Fixes #49555.
19792
19793 2003-10-17  Martin Baulig  <martin@ximian.com>
19794
19795         * class.h (MonoGenericInst): Moved this declaration here and added
19796         `MonoMethod *generic_method'.
19797
19798         * icall.c
19799         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
19800         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
19801
19802         * metadata.c (mono_metadata_type_equal): Two types of
19803         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
19804         index; ie. don't compare the address of the `MonoGenericParam'
19805         structure.
19806         (mono_metadata_load_generic_params): Removed the `MonoMethod
19807         *method' argument.
19808
19809         * metadata.h (MonoGenericInst): Moved declaration to class.h.
19810         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
19811
19812         * reflection.c (method_encode_signature): Encode the number of
19813         generic parameters.
19814         (encode_generic_method_sig): New static function.
19815         (method_encode_methodspec): New static function; creates an entry
19816         in the MethodSpec table for a generic method.
19817         (mono_image_get_methodspec_token): New static function.
19818         (mono_image_create_token): Call mono_image_get_methodspec_token()
19819         for generic methods.
19820         (mono_reflection_bind_generic_method_parameters): New public
19821         function.  Instantiates a generic method.
19822
19823 2003-10-16  Martin Baulig  <martin@ximian.com>
19824
19825         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
19826         *gen_params' here from MonoMethodHeader.
19827
19828         * metadata.c (mono_metadata_parse_method_signature): If we have
19829         generic parameters, initialize `method->gen_params' and then set
19830         the correct `type->data.generic_param' in all the parameters.
19831
19832 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19833
19834         * threads.c (mono_threads_get_default_stacksize): New function to 
19835         return the default stacksize.
19836
19837         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
19838         termination of the finalizer thread, since the previous method had
19839         race conditions. Fixes #49628.
19840
19841         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
19842         as for the other managed threads.
19843
19844 2003-10-16  Martin Baulig  <martin@ximian.com>
19845
19846         * class.c (inflate_generic_signature): Copy `generic_param_count'
19847         and `gen_params'.
19848
19849         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
19850         New interncall.
19851
19852         * metadata.c (mono_metadata_parse_method_signature): Actually set
19853         the `method->generic_param_count' here.
19854         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
19855
19856 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * object.h: Add a new field to TypedRef to simplify the implementation
19859         of the REFANY opcodes in the JIT.
19860
19861         * icall.c: Make use of the new field.
19862
19863         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
19864         dynamically.
19865
19866 2003-10-15  Martin Baulig  <martin@ximian.com>
19867
19868         * class.c (mono_class_from_gen_param): Renamed to
19869         mono_class_from_generic_parameter() and moved most of the
19870         functionality from mono_reflection_define_generic_parameter()
19871         here; ie. we create a "real" class here.
19872         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
19873         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
19874         previously been called.
19875
19876         * class.h (MonoGenericParam): Moved the declaration of this struct
19877         here from metadata.h and added `MonoMethod *method'.
19878
19879         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
19880         interncall.
19881
19882         * loader.c (mono_get_method_from_token): If we have any generic
19883         parameters, call mono_metadata_load_generic_params() to read them
19884         from the MONO_TABLE_GENERICPAR.
19885
19886         * metadata.c (mono_metadata_load_generic_params): Added
19887         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
19888
19889         * metadata.h (MonoMethodSignature): Replaced
19890         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
19891         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
19892
19893         * reflection.c (mono_reflection_define_generic_parameter): Moved
19894         most of the functionality into the new
19895         mono_class_from_generic_parameter(); set the `method' field if
19896         we're a method parameter.       
19897
19898 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
19899
19900         * marshal.c (emit_struct_conv): if native size is 0
19901         emit no code.
19902
19903 2003-10-14  Martin Baulig  <martin@ximian.com>
19904
19905         * icall.c: The generics API has changed in the spec since it was
19906         added to System.Type; these modifications make it match the spec
19907         again.
19908         (ves_icall_Type_GetGenericParameters): Renamed to
19909         `ves_icall_Type_GetGenericArguments'.
19910         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
19911         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
19912         `ves_icall_MonoType_get_HasGenericArguments'.
19913         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
19914         `ves_icall_MonoType_get_IsGenericParameter'.
19915         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
19916         this is no interncall anymore.
19917         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
19918         `ves_icall_TypeBuilder_get_IsGenericParameter'.
19919
19920 2003-10-14  Martin Baulig  <martin@ximian.com>
19921
19922         * reflection.c (mono_reflection_bind_generic_parameters): Also
19923         inflate generic methods if we're reading the class from IL.
19924
19925 2003-10-13  Martin Baulig  <martin@ximian.com>
19926
19927         * reflection.c (mono_reflection_define_generic_parameter): This
19928         method isn't called directly from the icall anymore; take a
19929         `MonoReflectionAssemblyBuilder *' so we can use this for type and
19930         method generic parameters.
19931         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
19932         (method_builder_encode_signature): Encode generic parameters.
19933         (mono_image_get_method_info): Write generic params to the
19934         MONO_TABLE_GENERICPARAM table.
19935
19936         * reflection.h (MonoReflectionMethodBuilder): Added
19937         `MonoArray *generic_params'.
19938
19939         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
19940
19941         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
19942         wrapper for mono_reflection_define_generic_parameter().
19943         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
19944
19945 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
19946
19947         * marshal.h: Add missing function to fix build.
19948
19949         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
19950         the SetLastError pinvoke attribute.
19951
19952         * marshal.c (mono_marshal_set_last_error): New helper function called
19953         by the generated code.
19954         
19955         * marshal.c (mono_mb_emit_branch): New helper function.
19956
19957         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
19958
19959         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
19960         classes as parameters and return values of delegates. Fixes #29256. 
19961
19962 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
19963
19964         * locales.c: use gint32 in non HAVE_ICU case
19965
19966 2003-10-11  Martin Baulig  <martin@ximian.com>
19967
19968         * mono-debug.c (mono_debug_add_method): Added a workaround for
19969         bug #48591.
19970
19971 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
19974         delegates passed to native code must use the STDCALL calling 
19975         convention. Fixes #35987.
19976
19977 2003-10-10  Martin Baulig  <martin@ximian.com>
19978
19979         * class.c (inflate_generic_type): If we're inflating for a generic
19980         type instance (and not for a generic method), return
19981         MONO_TYPE_MVAR unchanged.
19982
19983 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19984
19985         * string-icalls.c: Join ignores null strings in the source array.
19986         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
19987         * threads.c: GetAvailableTheads is slightly more accurate.
19988
19989 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
19990
19991         * threads.h threads.c : add mono_threads_set_default_stacksize
19992         and pass default to CreateThread calls.
19993
19994 2003-10-09  Dick Porter  <dick@ximian.com>
19995
19996         * icall.c:
19997         * locales.h:
19998         * locales.c: Internal calls for constructing CultureInfo and
19999         related objects from libicu (if its available.)
20000
20001 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
20004
20005 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20006
20007         * threadpool.c: added an argument to async_invoke_thread that is the
20008         item to process, pass the MonoAsyncResult to the thread start function
20009         when creating a new thread. This way we don't need to acquire any lock
20010         when we're creating a new thread. Readded a semaphore for faster
20011         response times (instead of that Sleep i added).
20012
20013 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
20014
20015         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
20016         get daylight change dates better on Windows, fix handling
20017         of platforms without tm_gmtoff.
20018
20019 2003-10-06  Martin Baulig  <martin@ximian.com>
20020
20021         * class.c (inflate_generic_method): Renamed to
20022         mono_class_inflate_generic_method() and made public.
20023         (mono_class_init): Don't inflate the generic methods here.
20024         (mono_class_from_generic): Added `gboolean inflate_methods'
20025         argument.  Inflate the methods here.
20026
20027         * loader.c (mono_method_get_param_names): Ignore instances of
20028         generic types for the moment.
20029
20030         * reflection.c (fixup_method): Added support for inflated methods.
20031         (mono_image_create_token): Use mono_image_get_methodref_token()
20032         for inflated methods.
20033         (mono_custom_attrs_from_param): Ignore instances of generic types
20034         for the moment.
20035         (mono_reflection_bind_generic_parameters): New public function.
20036         Moved all the functionality from
20037         ves_icall_Type_BindGenericParameters() here and added support for
20038         dynamic types.
20039         (mono_reflection_define_generic_parameter): Initialize
20040         `klass->methods' here.
20041
20042         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
20043         functionality into mono_reflection_define_generic_parameter().
20044         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
20045         TypeBuilder, return that TypeBuilder.
20046
20047 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20048
20049         * appdomain.c: removed mono_delegate_semaphore.
20050
20051         * threadpool.c:
20052         (mono_thread_pool_add): moved hash table creation inside and the thread 
20053         creation outside of the critical region.
20054         (mono_thread_pool_finish): removed obsolete code.
20055         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
20056         continue or exit the thread depending on the queue.
20057
20058 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
20059
20060         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
20061         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
20062         handle more bool marshalling options
20063
20064 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
20065
20066         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
20067         arrays of structs. Also add a more descriptive error message when
20068         a structure member is marshalled as LPArray.
20069
20070 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20073         marshalling arrays of complex types. Fixes #29098. Also remove an
20074         usused and incomplete function.
20075
20076 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20077
20078         * gc.c: report heap_size - free_bytes as total memory allocated
20079         (bug#49362).
20080
20081 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
20084         fix timezone handling problems on Windows.
20085         
20086         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
20087         asserts when the year is outside the range handled by ms the functions.
20088
20089         * class.c (setup_interface_offsets): If the class is an interface,
20090         fill out its interface_offsets slot.
20091
20092 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20093
20094         * threadpool.c: mark threadpool threads as background.
20095
20096 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
20097
20098         * decimal.c - define DECINLINE to nothing if not using GCC
20099
20100 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * assembly.c: More refcount fixes.
20103
20104 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20105
20106         * string-icalls.c: if we're not trimming, return the same string.
20107         When not splitting, don't create a new string.
20108
20109 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20110
20111         * image.c:
20112         (mono_image_open): increment the ref_count inside the critical section.
20113
20114 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * image.c (mono_image_open): Fix reference counting bug.
20117
20118 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
20119
20120         * marshal.c (mono_marshal_type_size) struct alignment changed for 
20121         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
20122         64bits. Avoid leak in mono_marshal_get_native_wrapper when
20123         mono_lookup_pinvoke_call throws.        
20124
20125 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20126
20127         * reflection.c (mono_reflection_parse_type): Fix #49114.
20128
20129         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
20130         temporary workaround for cygwin header problem.
20131
20132         * object.c (mono_object_isinst): Synchronize this with the code
20133         generated by the JIT for casts.
20134
20135 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * reflection.c (encode_type): Fix #38332.
20138
20139 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * marshal.c (mono_marshal_method_from_wrapper): New function to return
20142         the original method from the wrapper method.
20143
20144 2003-09-25  Martin Baulig  <martin@ximian.com>
20145
20146         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
20147         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
20148         (ves_icall_Type_get_IsGenericInstance): New interncall.
20149
20150 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
20151
20152         * object.c: fix cast warning in big endian code.
20153
20154 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
20155
20156         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
20157         
20158 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20159
20160         * assembly.c: don't call check_env from mono_assembly_load. It's
20161         already done once in mono_assemblies_init and may cause headaches when
20162         multiple threads are loading assemblies.
20163
20164 2003-09-19  Martin Baulig  <martin@ximian.com>
20165
20166         * reflection.c (mono_reflection_define_generic_parameter): Don't
20167         allocate `klass->methods', set `klass->flags' to
20168         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
20169
20170 2003-09-18  Martin Baulig  <martin@ximian.com>
20171
20172         * class.c (mono_class_init): Don't create `class->methods' if it's
20173         already initialized.
20174
20175         * metadata.c (mono_metadata_load_generic_params): Make this
20176         actually work.
20177
20178         * reflection.c (mono_reflection_define_generic_parameter): Set
20179         parent class and interfaces from the constraints.
20180
20181         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
20182         to keep this struct in sync with the declaration in TypeBuilder.cs.
20183
20184 2003-09-17  Martin Baulig  <martin@ximian.com>
20185
20186         * metadata.h (MonoType): Replaced the data's `int type_param'
20187         field with `MonoGenericParam *generic_param'.
20188         (MonoGenericParam): Added `MonoClass *klass'.
20189
20190         * class.c (mono_class_from_gen_param): Removed the
20191         `MonoImage *image' and `int type_num' arguments.
20192
20193         * metadata.c (mono_metadata_parse_generic_param): New static
20194         method; creates a MonoGenericParam which just contains the index.
20195         (do_mono_metadata_parse_type): Call
20196         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
20197         MONO_TYPE_MVAR.
20198
20199         * reflection.c (mono_image_typedef_or_ref): Generic type
20200         parameters may be in the same assembly, but never use a typedef
20201         for them.
20202         (mono_reflection_define_generic_parameter): We're now creating a
20203         "real" class for the type parameter; it's now safe to call
20204         mono_class_from_mono_type() on the class'es type, it'll do the
20205         right thing.
20206
20207 2003-09-16  Martin Baulig  <martin@ximian.com>
20208
20209         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
20210         `symfile->range_entry_size' and `symfile->class_entry_size' here;
20211         the `symfile' data structure must be fully initialized before it
20212         gets added to the table.
20213
20214 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
20217
20218         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
20219         class init trampolines.
20220
20221 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
20224         to the built-in profiler to turn off time and allocation profiling
20225         respectively.
20226
20227 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
20230         g_direct_equal.
20231
20232         * debug-helpers.c (mono_method_full_name): Print the wrapper type
20233         in human readable form.
20234
20235 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * reflection.c icall.c: Fixed warnings.
20238
20239         * image.c (load_class_names): Use a temporary hash table to hold the
20240         namespaces in order to avoid doing many string comparisons.
20241
20242         * image.h: Fix typo.
20243
20244         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
20245         Pass NULL instead of g_direct_equal to the GHashTable constructor 
20246         since the NULL case is short-circuited inside g_hash_table_lookup, 
20247         leading to better performance.  
20248
20249         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
20250         obtain the first custom attribute for a given index. Depends on the
20251         CustomAttribute table being sorted by the parent field.
20252
20253         * reflection.c (mono_custom_attrs_from_index): Use the new function 
20254         for better performance.
20255
20256 2003-09-07  Martin Baulig  <martin@ximian.com>
20257
20258         * class.c (mono_class_init): If we're a generic instance, inflate
20259         all our methods instead of loading them from the image.
20260         (mono_class_from_generic): Set `class->methods = gklass->methods'.
20261
20262 2003-09-07  Martin Baulig  <martin@ximian.com>
20263
20264         * mono-debug-debugger.c: Added support for constructors.
20265
20266 2003-09-06  Martin Baulig  <martin@ximian.com>
20267
20268         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
20269         New interncall.
20270
20271         * reflection.c (mono_reflection_setup_generic_class): Call
20272         ensure_runtime_vtable() to create the vtable.
20273
20274 2003-09-05  Martin Baulig  <martin@ximian.com>
20275
20276         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
20277         MONO_TYPE_MVAR.
20278
20279 2003-09-04  Martin Baulig  <martin@ximian.com>
20280
20281         * reflection.c (mono_reflection_define_generic_parameter): Generic
20282         parameters start with zero.
20283
20284 2003-09-04  Martin Baulig  <martin@ximian.com>
20285
20286         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20287
20288         * reflection.h (MonoReflectionGenericParam): New typedef.
20289         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
20290         the generic parameters from the managed TypeBuilder.
20291
20292         * reflection.c (mono_reflection_define_generic_parameter): New function.
20293         (mono_reflection_create_runtime_class): Encode generic parameters.
20294         (mono_reflection_setup_generic_class): New function; this is
20295         called after adding adding all generic params to the TypeBuilder.
20296         (encode_type): Added MONO_TYPE_VAR.
20297
20298 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20299
20300         * class.h class.c (mono_class_needs_cctor_run): Moved this method
20301         here from the JIT.
20302
20303         * assembly.h assembly.c: Moved the AOT loading code into an assembly
20304         load hook.
20305
20306 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
20307
20308         * reflection.h reflection.c class.h class.c: Delete duplicate 
20309         definition of mono_type_get_name () from reflection.c and export the
20310         one in class.c.
20311
20312         * class.c: Class loading fixes from Bernie Solomon 
20313         (bernard@ugsolutions.com).
20314
20315         * reflection.c: Endianness fixes from Bernie Solomon 
20316         (bernard@ugsolutions.com).
20317         
20318 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20319
20320         * assembly.h assembly.c: Define a file format version for AOT
20321         libraries.
20322         
20323         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
20324
20325         * appdomain.h (MonoJitInfo): New field to determine whenever the
20326         code is domain neutral.
20327         
20328 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
20329
20330         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
20331
20332 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
20335         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
20336         Avoid caching the result since strings must be domain specific. Fixes
20337         #48050.
20338
20339 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20340
20341         * marshal.c (mono_marshal_init): Make this callable multiple times
20342         since it is hard to find a correct place to call it.
20343
20344         * object.c (mono_runtime_class_init): Execute static constructors in
20345         the correct appdomain.
20346
20347         * image.c (build_guid_table): Handle the case when multiple images have
20348         the same GUID.
20349
20350 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20351
20352         * icall.c: added a couple of icalls for System.Web.
20353
20354 2003-08-28  Martin Baulig  <martin@ximian.com>
20355
20356         * icall.c (ves_icall_Type_BindGenericParameters): Use
20357         `klass->generic_inst' instead of `&klass->byval_arg' in the
20358         mono_type_get_object() call.  The returned type must be
20359         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
20360
20361 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * NOTES: New file.
20364
20365         * object.c (mono_class_proxy_vtable): Make it thread safe.
20366
20367         * pedump.c: Fix warning.
20368
20369         * object.c appdomain.h: Get rid of metadata_section. 
20370         It is no longer needed and it was causing deadlocks with domain->lock.
20371
20372         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
20373
20374 2003-08-26  Martin Baulig  <martin@ximian.com>
20375
20376         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
20377
20378 2003-08-26  Martin Baulig  <martin@ximian.com>
20379
20380         * pedump.c (main): Call mono_metadata_init(),
20381         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
20382         and mono_loader_init().
20383
20384 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
20385
20386         * loader.h: Add missing include to fix build.
20387
20388         * image.h: mono_image_load_references is no more.
20389
20390         * assembly.c: Reworked assembly loading to make it really thread safe.
20391         After these changes, the assembly returned by mono_assembly_open is
20392         fully initialized, i.e. all its references assemblies are loaded.
20393
20394         * assembly.c (mono_image_load_references): Renamed to 
20395         mono_assembly_load_references, and made private, since clients no
20396         longer need to call it.
20397
20398         * class.c: Removed calls to mono_assembly_load_references, since it was
20399         a source of deadlocks.
20400
20401         * loader.h loader.c class.h class.c: Protect data structures using a 
20402         new lock, the loader lock.
20403
20404         * class.c (mono_class_setup_vtable): Create temporary hash tables and
20405         GPtrArrays only when needed.
20406
20407         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
20408         into empty structures by mcs. Fixes pinvoke7.cs.
20409         
20410         * domain.c (mono_init): Call a new initialization function.
20411
20412         * appdomain.c (mono_runtime_init): Call the new initializer function
20413         of the marshal module.
20414
20415         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
20416         inserted into empty structures by mcs. Fixes pinvoke7.cs.
20417
20418         * marshal.h marshal.c: Added locks around the wrapper caches to make
20419         this module thread safe.
20420
20421         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
20422         this argument. Fixes pinvoke1.exe.
20423
20424 2003-08-25  Lluis Sanchez <lluis@ximian.com>
20425
20426         * object.h: Added call_type field to MonoMethodMessage and the corresponding
20427         enumeration of values. Removed fields to store remote call output values in
20428         MonoAsyncResult. Not needed any more.
20429         * object.c: Initialize call_type and async_result fields in mono_message_init.
20430         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
20431         dispatching the message.
20432         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
20433         async call to finish. To do it use a message with EndInvoke call type.
20434
20435 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * loader.h loader.c (mono_method_hash_marhal_info): New function which
20438         determines whenever a method has marshalling info.
20439
20440 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20441
20442         * assembly.c: fix the build on windows.
20443
20444 2003-08-22 Lluis Sanchez <lluis@ximian.com>
20445
20446         * object.cs: Fixed bug #47785.
20447
20448 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
20449
20450         * string-icalls.c (StringReplace): If their are no occurances of
20451         the old string found return a reference to the supplied
20452         string. This saves some memory and matches MS behavoir.
20453         
20454 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20455
20456         * socket-io.c: fixed compilation for systems that define AF_INET6
20457         and don't define SOL_IP/SOL_IPV6.
20458
20459 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
20460
20461         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
20462         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
20463
20464         * rawbuffer.c rawbuffer.h: Make this module thread safe.
20465
20466         * domain.c: Make this module thread safe.
20467
20468         * domain.c (mono_init): Call new initialization function.
20469
20470         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
20471         reference types too. Fixes #38812.
20472
20473         * image.c (mono_image_init): Fixed warnings.
20474
20475         * class.c (mono_class_from_typeref): Handle assembly load failure
20476         correctly.
20477
20478         * appdomain.c (add_assemblies_to_domain): Handle the case when
20479         the references of an assembly are not yet loaded.
20480
20481         * metadata.c image.c assembly.c: Moved initialization of global
20482         variables to a separate function called at startup since lazy 
20483         initialization of these variables is not thread safe.
20484         
20485         * image.c assembly.c: Made this module thread safe by adding locks in 
20486         the appropriate places.
20487
20488         * domain.c (mono_init): Call the new initialization functions of the
20489         three modules.
20490
20491 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
20492
20493         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
20494           make a direct call. It is proxy's work to make the call asynchronous.
20495           mono_delegate_end_invoke(): If the targe is a proxy, just collect
20496           the return values.
20497         * object.cs: mono_method_call_message_new(): read AsyncResult and
20498           state object from parameters list, if this info is requested.
20499         * object.h: Added fields to store remote call output values in
20500           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
20501
20502 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20503
20504         * object.h: add needed fields to MonoThread.
20505         * threads.c, threads.h: allow registering a function to cleanup data
20506         allocated per thread by the JIT.
20507
20508 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20509
20510         * loader.h: portability fix by Bernie Solomon
20511         * <bernard@ugsolutions.com>.
20512
20513 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
20516         return a MonoArray. This simplifies the code and also ensures that
20517         the cache allways contains an object reference as a value.
20518
20519         * icall.c (ves_icall_get_parameter_info): Simplified using the new
20520         function.
20521
20522 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20523
20524         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
20525         fixes a problem with byte ordering when getting the address family for
20526         a socket.
20527
20528 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
20529
20530         * .cvsignore: Added monosn.
20531
20532         * reflection.h reflection.c loader.c: Added support for parameter
20533         marshalling to dynamically created types. Fixes #47295.
20534
20535 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20536
20537         * rand.c: remove useless warnings.
20538
20539 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20540
20541         * class.c: implemented ldtoken for methods and fieldrefs.
20542
20543 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20544
20545         * threadpool.c: when mono_async_invoke was called, no one took care of
20546         monitoring the queue. So if the method invoked took some time and we
20547         got new async invoke requests after 500 ms (the thread created waited
20548         that long in WaitForSingleObject), the new async invoke was not called
20549         until the previous one finished.
20550
20551         This is fixed now. Thanks to Totte for helping with it.
20552
20553 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20554
20555         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
20556
20557 2003-08-11  Martin Baulig  <martin@ximian.com>
20558
20559         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
20560
20561 2003-08-06  Martin Baulig  <martin@ximian.com>
20562
20563         * mono-debug-debugger.c: Added support for static fields,
20564         properties and methods.
20565
20566 2003-08-06  Martin Baulig  <martin@ximian.com>
20567
20568         * mono-debug-debugger.c: Don't store the MonoString's vtable to
20569         make this work for applications with multiple application domains.
20570
20571 2003-08-04  Martin Baulig  <martin@ximian.com>
20572
20573         * mono-debug-debugger.c: Completely reworked the type support; the
20574         most important thing is that we're now just using one single
20575         `MonoType' instance per type.
20576
20577 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
20578
20579         * mono-endian.h, mono-endian.c, icall.c: Added icall
20580         ves_icall_System_Double_AssertEndianity to assert double word endianity
20581         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
20582
20583 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20584
20585         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
20586         support, icalls and fixes.
20587
20588 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
20589
20590         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
20591         classes that are a punctuation character in .NET is not the same a
20592         g_unichar_ispunct.
20593
20594 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20595
20596         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
20597
20598 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
20599
20600         * icall.c: Add new MemCopy internalcall.
20601         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
20602         Simplified code; It is not necessary to handle all the cases here,
20603         as the C# code takes care of it.  Only handle the case of the name
20604         resource embedded into the assembly.
20605
20606         Changed signature to return the data pointer and the size of the
20607         data. 
20608
20609 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
20610
20611         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
20612         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
20613
20614 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20615
20616         * socket-io.c: ignore EINTR error in select.
20617
20618 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
20619
20620         * class.h, class.c: removed unused subclasses field in MonoClass.
20621
20622 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
20623
20624         * icall.c: improve fix of get_base_definition(). If the parent class
20625           doesn't have the mehod, look at the parent of the parent.
20626         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
20627           to check if a parameter is an in or out parameter
20628           (PARAM_ATTRIBUTE_IN is not set by default).
20629           mono_method_return_message_restore(): Use mono_class_value_size to
20630           get the size of a value type. mono_type_stack_size (parameterType)
20631           does not return the correct value if parameterType is byRef.
20632           mono_load_remote_field(), mono_load_remote_field_new(),
20633           mono_store_remote_field(), mono_store_remote_field_new():
20634           raise exception if the remote call returns an exception.
20635
20636 2003-07-28  Martin Baulig  <martin@ximian.com>
20637
20638         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
20639         method.  This is a wrapper around mono_runtime_invoke() which
20640         boxes the instance object if neccessary.
20641
20642 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20643
20644         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
20645         metadata.h, row-indexes.h, verify.c: first cut of generics support.
20646
20647 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20648
20649         * icall.c: disable mcs bug workaround.
20650
20651 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20652
20653         * object.c (mono_runtime_class_init): Take the metadata_section
20654         mutex before obtaining the domain mutex.
20655
20656         * appdomain.h: Added definition of metadata_section mutex here. 
20657
20658         * object.c: define metadata_mutex here.
20659
20660 2003-07-24  Ravi Pratap  <ravi@ximian.com>
20661
20662         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
20663         fixed.
20664
20665 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
20666
20667         * reflection.c: Fix bug #46669
20668
20669 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20670
20671         * exception.c:
20672         * exception.h:
20673         * icall.c:
20674         * object.h: fill in the type name for TypeLoadException.
20675
20676 2003-07-23  Ravi Pratap  <ravi@ximian.com>
20677
20678         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
20679         relationship between TypeBuilders while compiling corlib) and bug
20680         45993 (Array types returned from the runtime while compiling
20681         corlib were from the loaded corlib).
20682
20683 2003-07-22  Martin Baulig  <martin@ximian.com>
20684
20685         * mono-debug-debugger.c: Reworked the type support a bit more;
20686         distinguish between types and classes.
20687
20688 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
20689
20690         * icall.c: add IsArrayImpl icall.
20691
20692 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
20695         initializing real_size only once. Also fix bug #46602.
20696
20697 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
20698
20699         * object.c: Renamed mono_metadata_section to metadata_section.
20700
20701 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
20702
20703         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
20704           empty array if the type is an array. Fixed.
20705           ves_icall_MonoMethod_get_base_definition: if the base method
20706           is abstract, get the MethodInfo from the list of methods of
20707           the class.
20708         * reflection.c: ParameterInfo.PositionImpl should be zero-based
20709           and it was 1-based. Fixed in mono_param_get_objects.
20710
20711 2003-07-20  Martin Baulig  <martin@ximian.com>
20712
20713         * mono-debug.h: Set version number to 31.
20714         (mono_debug_init): Added `MonoDomain *' argument.
20715
20716         * mono-debug-debugger.c: Reworked the type support; explicitly
20717         tell the debugger about builtin types; pass the `klass' address to
20718         the debugger.
20719
20720 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
20721
20722         * image.c: Allow new metadata tables to be loaded without a
20723         warning. Also update the warning message to give the new constant value.
20724                 
20725 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20726
20727         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
20728         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
20729         array type representation changes.
20730
20731 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20732
20733         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
20734         on Environment.Exit () call.
20735
20736 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20737
20738         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
20739         requires a matching corlib.
20740
20741 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20742
20743         * Changelog: My editor decided to add a CR to each line. Sorry about that.
20744           Committed again without the CRs.
20745         
20746 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
20747
20748         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
20749           getting it from the "this" socket instance. Did not work
20750           if the socket is a subclass of Socket.
20751           Also fixed bug #35371.
20752
20753 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20754
20755         * metadata.c: fixed size for TypedByRef.
20756         * loader.c: when searching for a method, consider the vararg amrker.
20757         * unicode.c, decimal.c: constify some arrays.
20758
20759 2003-07-15  Dick Porter  <dick@ximian.com>
20760
20761         * socket-io.c: Fixed compilation for gcc < 3.2.
20762
20763         Fixed compilation for machines that don't have AF_INET6 (thanks to
20764         Bernie Solomon <bernard@ugsolutions.com> for that part.)
20765
20766         Fixed compile warnings.
20767         
20768         Fixed formatting and line endings.
20769
20770 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
20771
20772         * socket-io.h:
20773         * socket-io.c: Added IPv6 support.
20774
20775 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
20776
20777         * class.c (mono_class_is_assignable_from): New function to implement
20778         the is_assignable_from logic. Used by mono_object_isinst, 
20779         Type::IsAssignableFrom () and the interpreter.
20780
20781         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
20782         Object, even interfaces.
20783         
20784         * object.c (mono_object_isinst): Implement in terms of 
20785         is_assignable_from.
20786
20787         * icall.c (ves_icall_type_is_assignable_from): New icall.
20788
20789 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
20790
20791         * domain.c (foreach_domain): fix compiler warning.
20792
20793 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
20794
20795         * image.c (load_metadata_ptrs): use g_strndup because strndup is
20796         not available on all plattforms
20797
20798 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
20799
20800         * image.h image.c: Store the metadata version string in MonoImage.
20801         * icall.c: New icall to retrieve the image version.
20802         * reflection.c (create_dynamic_image): Fill in the image version field
20803         * reflection.c (build_compressed_metadata): Use the image version
20804         from the image structure.
20805
20806 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20807
20808         * appdomain.c: modified comment.
20809         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
20810         That will be its last iteration when mono_gc_cleanup is called from
20811         mono_runtime_cleanup and before the domain is unloaded.
20812
20813         Fixes bug #45962.
20814
20815 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
20816
20817         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
20818         attributes.
20819
20820 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20821
20822         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
20823         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
20824         Bernie Solomon <bernard@ugsolutions.com>.
20825
20826 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20827
20828         * object.c, object.h: provide mono_object_new_fast() for faster
20829         allocation in some special cases.
20830
20831 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20832
20833         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
20834         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
20835
20836 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20837
20838         * threadpool.c: fix leaks.
20839
20840 2003-07-01  Dick Porter  <dick@ximian.com>
20841
20842         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
20843         using MonoGHashTables.  Fixes threadpool bug posted to list.
20844
20845 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
20846
20847         * image.h, image.c: added support to load an assembly from a byte array.
20848         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
20849         assembly bundle support.
20850
20851 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
20852
20853         * threadpool.c (mono_thread_pool_add): keep a reference to the
20854         AsyncResult to prevent GC
20855
20856 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20857
20858         * class.c: leak fix.
20859
20860 2003-06-25  Dick Porter  <dick@ximian.com>
20861
20862         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
20863         for the async object, the WaitHandle object will close the handle.
20864         Fixes bug 45321.
20865
20866 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20867
20868         * class.c: in mono_array_class_get (), lookup from the hash with the
20869         same type we insert: this works around a bug in
20870         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
20871         lluis. The real fix will have to wait for after the release.
20872
20873 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20874
20875         * icall.c: fix memory leak when getting type members.
20876
20877 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
20878
20879         * reflection.c: added more pubtoken special cases.
20880
20881 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20882
20883         * class.c: handle field offset correctly when class size
20884         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
20885
20886 2003-06-20  Martin Baulig  <martin@ximian.com>
20887
20888         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
20889         *image' field.
20890
20891 2003-06-20  Martin Baulig  <martin@ximian.com>
20892
20893         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
20894
20895 2003-06-20  Martin Baulig  <martin@ximian.com>
20896
20897         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
20898         just distinguish between variables in registers and variables at
20899         an offset relative to a register.
20900
20901 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20902
20903         * icall.c: #ifdef out latest changes until mcs is fixed.
20904
20905 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20906
20907         * icall.c: return members in metadata order.
20908
20909 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20910
20911         * icall.c: avoid infinite loop in GetTimeZoneData.
20912
20913 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
20914
20915         * icall.c: added Marshal.Prelink/All icalls.
20916
20917 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
20918
20919         * object.c, object.h: fix warnings and do some overflow checking
20920         when creating arrays.
20921
20922 2003-06-17  Dick Porter  <dick@ximian.com>
20923
20924         * file-io.h:
20925         * file-io.c: File attributes need to be tweaked slightly when
20926         passed from the managed to the w32 world.
20927
20928 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20929         * profiler.h profiler-private.h profiler.c: Rework last patch
20930         based on suggestion by Paolo.
20931         
20932 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20933
20934         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
20935         instruction level coverage data collection.
20936         * profiler.h profiler.c (: Added new callback function which can be
20937         used by the profiler to limit which functions should have coverage
20938         instrumentation.
20939         * profiler.c (mono_profiler_load): Call g_module_build_path to
20940         generate the file name of the profiler library.
20941
20942 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20943
20944         * profiler.c, profiler.h, profiler-private.h: added basic block 
20945         coverage profiling API.
20946
20947 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * reflection.c (mono_reflection_create_runtime_class): Add support
20950         for events in dynamically generated code.
20951
20952         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
20953         not allocated.
20954
20955 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20956
20957         * icall.c: when getting timezone info, return reasonable values if we
20958         can't get the actual data.
20959
20960 2003-06-14  Dick Porter  <dick@ximian.com>
20961
20962         * threads.c (start_wrapper): Remove the reference to the thread
20963         object in the TLS data, so the thread object can be finalized.
20964         This won't be reached if the thread threw an uncaught exception,
20965         so those thread handles will stay referenced :-( (This is due to
20966         missing support for scanning thread-specific data in the Boehm GC
20967         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
20968
20969 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
20970
20971         * reflection.c: ensure streams and tables are first allocated with
20972         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
20973
20974 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20975
20976         * icall.c: fixed GetElementType for byrefs (bug# 44792).
20977
20978 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * reflection.c (mono_reflection_create_runtime_class): Add support for
20981         properties to dynamically created classes.
20982         * reflection.c: Fix a few places where non-MonoObjects were inserted
20983         into the tokens hashtable.
20984
20985 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20986
20987         * object.c: some support to handle out of memory exceptions.
20988
20989 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
20990
20991         * marshal.c (mono_marshal_get_native_wrapper): support reference
20992         return types
20993
20994 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20995
20996         * object.h, object.c: more portability stuff from Bernie Solomon.
20997         Unexport mono_object_allocate(). Added mono_object_unbox ().
20998         Set exitcode when an unhandled exception is thrown.
20999
21000 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
21001
21002         * marshal.c (mono_marshal_get_native_wrapper): use custom
21003         marshaler for return types.
21004
21005 2003-06-10  Dick Porter  <dick@ximian.com>
21006
21007         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
21008         ip_mreq is available
21009
21010 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21011
21012         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
21013         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
21014         by Bernie Solomon <bernard@ugsolutions.com>.
21015
21016 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
21017
21018         * gc.c (mono_gc_init): Avoid error message on shutdown when
21019         GC_DONT_GC=1 is used.
21020
21021         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
21022         New icall to return the GUID of a module.
21023
21024 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21025
21026         * class.c: ensure instance size always includes the parent's size
21027         even whem class size is set explicitly (fixes bug#44294).
21028
21029 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21030
21031         * profiler.h, profiler.c: made the simple profiler thread-safe,
21032         get more accurate timing info. Allow the loading of an
21033         externally-developed profiler module.
21034
21035 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
21036
21037         * marshal.c (mono_marshal_get_native_wrapper): improved
21038         class/byref arguments.
21039         (mono_marshal_get_native_wrapper): better string marshaling support.
21040
21041 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21042
21043         * class.c: ensure .pack and .size are handled correctly and
21044         simplified layout of static fields.
21045
21046 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21047
21048         * appdomain.c
21049         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
21050
21051         * loader.c (mono_lookup_pinvoke_call): look for modules in the
21052         current directory (fix bug 44008)
21053
21054 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
21055
21056         * marshal.c (mono_marshal_get_native_wrapper): started support for
21057         custom marshalers.
21058         (mono_delegate_to_ftnptr): consider marshalling specifications
21059
21060 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21061
21062         * reflection.c, reflection.h: emit custom marshal info.
21063
21064 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21065
21066         * object.c: free the GError.
21067         * icall.c: added CloseEvent_internal.
21068         * threads.[ch]:
21069         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
21070         call.
21071
21072 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
21073
21074         * loader.c (mono_method_get_signature): Add support for dynamic
21075         assemblies.
21076
21077 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21078
21079         * reflection.c: fixed bug #43905.
21080
21081 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21082
21083         * class.c, domain.c, icall.c, metadata.h, object.h: support for
21084         handling TypedReference and ArgIterator.
21085         * loader.c, loader.h: added function to get signature at call site.
21086
21087 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21088
21089         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
21090         data readonly. Buglets and warning fixes. Some MethodSpec support.
21091
21092 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21093
21094         * class.h, class.c, object.c: remove relative numbering support.
21095
21096 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
21097
21098         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
21099         free the string, until we get a chance to fix Gtk#
21100
21101 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21102
21103         * marshal.c: revert last patch.
21104
21105 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21106
21107         * icall.c: updates for new mono_class_vtable() not calling
21108         the type constructor anymore.
21109
21110 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21111
21112         * object.h, object.c: separate vtable creation from type
21113         initialization. Make running the .cctor thread safe.
21114
21115 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21116
21117         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
21118
21119 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21120
21121         * loader.c (mono_get_method): consider calling convention
21122
21123 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
21126         to return the invisible global type for a module.
21127
21128         * reflection.c (mono_image_build_metadata): Emit global fields too.
21129
21130 2003-05-20  Peter Williams  <peterw@ximian.com>
21131
21132         * loader.c (mono_lookup_internal_call): Add a few newlines.
21133
21134 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
21135
21136         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
21137         literal strings.
21138
21139         * appdomain.c (set_domain_search_path): Recalculate search path when
21140         AppDomainSetup.PrivateBinPath changes.
21141
21142         * object.c (mono_class_compute_gc_descriptor): It turns out some
21143         parts of the class libs (like System.Thread) holds pointers to
21144         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
21145         to treat native int a pointer type here.
21146         
21147 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
21148
21149         * appdomain.h, domain.c: add hashtable for jump target resolution.
21150
21151 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * reflection.h reflection.c icall.c: Added new icalls 
21154         GetManifestResourceInfoInternal, GetModulesInternal and support
21155         infrastructure.
21156
21157 2003-05-16  Dick Porter  <dick@ximian.com>
21158
21159         * icall.c:
21160         * file-io.h:
21161         * file-io.c: Implement System.IO.MonoIO::GetTempPath
21162
21163 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
21164
21165         * object.c: mono_store_remote_field: little fix to previous patch.
21166
21167 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21168
21169         * class.c: add constructors to array classes.
21170         * icall.c: special case array construction for InternalInvoke (),
21171
21172 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
21173
21174         * class.h class.c reflection.c object.c: Added support for field
21175         defaults in dynamically generated classes.
21176
21177 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21178
21179         * reflection.c: properly encode charset for ddlimport.
21180
21181 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21182
21183         * threads.c: allow compiling without GC.
21184
21185 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21186
21187         * appdomain.h, object.c, object.h, threads.c, threads.h: added
21188         handling of thread static data.
21189
21190 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21191
21192         * reflection.h, reflection.c: added mono_custom_attrs_free ().
21193
21194 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21195
21196         * class.c (mono_array_class_get): always set the serializable flags
21197         (mono_array_class_get): always set the SEALED attribute for array types
21198
21199 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
21200
21201         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
21202         attributes (fix for bug 42021).
21203
21204 2003-05-12  Dick Porter  <dick@ximian.com>
21205
21206         * gc.c: Don't run finalizers when the finalizer thread is
21207         finishing up, because the default domain has already been
21208         destroyed.
21209
21210 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
21211
21212         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
21213         value is null, we should throw an exception.   This is slightly
21214         different than the other conventions used for the constructor.
21215
21216 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21217
21218         * socket-io.c: fixed windows build.
21219
21220 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21221
21222         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
21223
21224 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
21225
21226         * object.c (mono_string_new_wrapper): Compatibility fix for MS
21227         compilers.
21228
21229 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
21230
21231         * class.c (mono_class_layout_fields): Add experimental GC aware
21232         auto layout facility. Requires class library changes to work correctly.
21233
21234         (mono_class_setup_vtable): Avoid overriding explicit interface
21235         method implementations. Fixes iface3.exe test.
21236
21237         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
21238         object reference.
21239         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
21240         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
21241
21242         * metadata.h: Add new type classification macro which determines
21243         whenever the type holds an object reference.
21244
21245 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21246
21247         * marshal.c (mono_marshal_get_native_wrapper): cleanups
21248
21249 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
21250
21251         * gc.c (finalizer_thread): Work around a GC bug.
21252
21253 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
21254
21255         * marshal.c (emit_struct_conv): allow unions
21256
21257         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
21258
21259 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
21260
21261         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
21262
21263 2003-05-06  Martin Baulig  <martin@ximian.com>
21264
21265         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
21266
21267 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21268
21269         * socket-io.c:
21270         (Select_internal): allow NULLs, don't create arrays if not needed.
21271         Coupled with Socket.cs changes.
21272
21273         * threadpool.c:
21274         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
21275         register a finalizer for it that will close the semaphore handle. This
21276         fixes the leak and make Lupus' test run with > 4080 loops.
21277
21278 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21279
21280         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
21281         Jerome Laban (bug #42287)
21282
21283 2003-05-02  Martin Baulig  <martin@ximian.com>
21284
21285         * debug-mono-symfile.h
21286         (MonoSymbolFile): Moved declaration into mono-debug.h.
21287         (MonoDebugMethodJitInfo): Likewise.
21288         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
21289         argument.
21290         (_mono_debug_address_from_il_offset): Take a
21291         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
21292
21293         * mono-debug.h
21294         (MonoDebugDomainData): New struct.
21295         (mono_debug_get_domain_data): New function.
21296         (mono_debug_add_method): Take an additional `MonoDomain *'
21297         argument.
21298         (mono_debug_source_location_from_address): Likewise.
21299         (mono_debug_il_offset_from_address): Likewise.
21300         (mono_debug_address_from_il_offset): Likewise.
21301
21302 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
21303
21304         * reflection.c: one more check for null type in custom attrs.
21305
21306 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21307
21308         * reflection.c: avoid warning (comparison is always false due to limited
21309         range of data type).
21310
21311 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21312
21313         * icall.c: throw an exception in Type.GetField if the argument 'name'
21314         is NULL.
21315
21316 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
21317
21318         * reflection.c: fixed handling of enums in named arguments to custom
21319         attributes (bug #42123).
21320
21321 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21322
21323         * reflection.c: use the right array element type and handle
21324         a null for a Type argument, too.
21325
21326 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
21327
21328         * reflection.c: handle arrays as arguments to custom attributes.
21329
21330 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21331
21332         * reflection.c: handle a string value in a custom attr
21333         ctor that takes an object.
21334
21335 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21336
21337         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
21338         (fix bug #42063)
21339
21340 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
21343
21344 2003-04-27  Martin Baulig  <martin@ximian.com>
21345
21346         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
21347         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
21348         MONO_DEBUGGER_EVENT_BREAKPOINT.
21349         (mono_breakpoint_trampoline_code): Removed.
21350         (mono_debugger_event_handler): The last argument is now a
21351         `guint32'.
21352         (mono_debugger_insert_breakpoint_full): Removed the
21353         `use_trampoline' argument.
21354         (mono_debugger_method_has_breakpoint): Likewise.
21355         (mono_debugger_trampoline_breakpoint_callback): Renamed to
21356         mono_debugger_breakpoint_callback(); take the method and
21357         breakpoint number as arguments.
21358
21359 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21360
21361         * metadata.c: fix off by one when loading parameters attributes.
21362
21363 2003-04-24  Martin Baulig  <martin@ximian.com>
21364
21365         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
21366
21367 2003-04-24  Martin Baulig  <martin@ximian.com>
21368
21369         * mono-debug-debugger.c: Moved all code which interacts with the
21370         Mono Debugger here.
21371
21372         * debug-mono-symfile.c: This code now just deals with the symbol
21373         file itself, the debugger code is now in mono-debug-debugger.c.
21374
21375 2003-04-23  Martin Baulig  <martin@ximian.com>
21376
21377         * mono-debug.c (mono_debug_source_location_from_il_offset):
21378         New method; like mono_debug_source_location_from_address(), but
21379         takes an IL offset instead of a machine address.
21380
21381 2003-04-23  Martin Baulig  <martin@ximian.com>
21382
21383         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
21384         `line' field; this is now computed by the debugger.
21385
21386 2003-04-23  Martin Baulig  <martin@ximian.com>
21387
21388         * mono-debug.[ch]: New files.  This is the new debugging interface.
21389
21390         * mono-debug-debugger.[ch]: New files.  Moved all code which
21391         interacts with the Mono Debugger here.
21392
21393 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21394
21395         * domain.c (mono_init): initialize mono_defaults.monitor_class
21396
21397 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
21398
21399         * reflection.c (method_encode_code): Add a spicy exception to help
21400         future compiler authors.
21401
21402 2003-04-21  Martin Baulig  <martin@ximian.com>
21403
21404         * icall.c
21405         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21406         Make this work with relative pathnames; g_filename_to_uri() needs
21407         an absolute filename.
21408
21409 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
21410
21411         * icall.c: Track name changes in Object and ValueType.
21412
21413 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
21414
21415         * metadata.c (mono_type_stack_size): size should be a multiple of
21416         sizeof (gpointer)
21417
21418 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21419
21420         * gc.c:
21421         (internal_domain_finalize): moved into mono_domain_finalize. No need
21422         to create another thread because the finalizers will be run in the
21423         finalizer thread.
21424         
21425         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
21426         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
21427         to be run (MS does this too).
21428
21429 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21430
21431         * object.c (mono_class_compute_gc_descriptor): Update comment.
21432
21433         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
21434
21435         * image.h: Add synchronized wrapper cache.
21436
21437         * image.c (do_mono_image_open): Initialize cache.
21438
21439         * reflection.c (create_dynamic_mono_image): Initialize cache.
21440
21441 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21442
21443         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
21444         ves_icall_System_Buffer_ByteLengthInternal.
21445
21446 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21447
21448         * reflection.c: setup klass->nested_in earlier. Allow
21449         a dash in the assembly name.
21450
21451 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
21452
21453         * metadata.c (mono_type_to_unmanaged): dont access
21454         type->data.klass for MONO_TYPE_OBJECT
21455         (mono_type_to_unmanaged): consider System.Delegate class
21456
21457 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
21458
21459         * class.c: just setup supertypes in the proper place instead of
21460         initializing the full element class for arrays.
21461
21462 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21463
21464         * class.c: ensure the element class of arrays is initialized.
21465         Setup the supertype info for array classes, too.
21466
21467 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
21468
21469         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
21470
21471 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21472
21473         * Makefile.am: re-added -m option when running cygpath. This way,
21474         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
21475         separator.
21476         * mono-config.c: same codepath for locating mono config file for WIN32
21477         and the rest.
21478         * assembly.c: if mono_assembly_setrootdir is called, don't override
21479         the value set.
21480
21481 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21482
21483         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
21484         MONO_ASSEMBLIES variable.
21485
21486 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21487
21488         * icall.c: added Assembly::GetNamespaces() icall.
21489
21490 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21491
21492         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
21493
21494 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
21495
21496         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
21497         * object.c: fixed bug in the construction of vtable for proxies
21498
21499 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21500
21501         * object.c (mono_array_new): Mark mono_array_new as an icall.
21502
21503 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21504
21505         * class.c: fixed test for public method when overriding interfaces.
21506         Closes bug #40970.
21507
21508 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21509
21510         * appdomain.h, domain.c: added mono_domain_foreach() to
21511         be able to access the currently loaded appdomains.
21512         * object.c: make string interning work across sppdomains.
21513         Mark some functions for use as icalls.
21514
21515 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21516
21517         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
21518
21519         * reflection.h reflection.c: Allocate long living data using 
21520         GC_MALLOC_ATOMIC so the collector does not need to scan it.
21521
21522         * reflection.c: Double the allocation size in streams instead of
21523         increasing it, to prevent unneccesary copying on large assemblies.
21524         
21525         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
21526         creation if the assembly does not have the Run flag set.
21527
21528 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21529
21530         * class.h: avoid the C++ keywords in header files (Jerome Laban
21531         spotted and fixed this).
21532
21533 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21534
21535         * object.c:
21536         (mono_unhandled_exception): fill in the arguments for the
21537         UnhandledException event. Only trigger that event for the default
21538         domain (as MS does).
21539
21540 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
21541
21542         * object.c: Improve typed allocation stuff based on suggestions from
21543         Paolo. Also turn it on if the GC library supports it.
21544
21545 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21546
21547         * object.c object.h class.h: Added experimental typed allocation
21548         facility using the interfaces in gc_gcj.h.
21549
21550         * os/gc_wrapper.h: Added new include files.
21551         
21552 2003-04-03  Martin Baulig  <martin@ximian.com>
21553
21554         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
21555         which is not yet enabled by default.
21556
21557         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
21558         functions.
21559         (mono_gc_lock, mono_gc_unlock): New static functions.
21560
21561         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
21562         functions; stop/start the world for the garbage collector.  This
21563         is using the windows API; we need to complete the SuspendThread()/
21564         ResumeThread() implementation in the io-layer to make this work on Unix.
21565         (mono_gc_push_all_stacks): New public function; tells the garbage
21566         collector about the stack pointers from all managed threads.
21567
21568 2003-04-03  Martin Baulig  <martin@ximian.com>
21569
21570         * object.h (MonoThread): Added `gpointer stack_ptr'.
21571
21572         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
21573
21574 2003-04-03  Martin Baulig  <martin@ximian.com>
21575
21576         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
21577
21578 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
21579
21580         * reflection.c (typebuilder_setup_fields): Initialize field.first and
21581         field.last.
21582
21583 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
21584
21585         * loader.c (mono_lookup_internal_call): Report the corlib that is
21586         out of sync.
21587
21588 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
21589
21590         * icall.c (ves_icall_type_GetTypeCode): fixed check for
21591         System.DBNull (it's class not valuetype).
21592
21593 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21594
21595         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
21596         if the array method was already assigned a token (fixes bug#40646).
21597
21598 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
21599
21600         * reflection.c (mono_reflection_get_type): Attempt type resolve even
21601         if no assembly is given.
21602
21603 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
21604
21605         * metadata.h: Added the new tables.
21606
21607         * row-indexes.h: Added definitions for new tables.
21608
21609         * metadata.c: Add schemas for new tables, and add support for
21610         computing the sizes of them.
21611
21612         * class.c: Update for handling the new type cases.
21613
21614 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
21615
21616         * metadata.h (MONO_TYPE_IS_VOID): new macro
21617
21618 2003-03-31  Martin Baulig  <martin@ximian.com>
21619
21620         * threads.h (MonoThreadCallbacks): Added `thread_created'.
21621
21622         * threads.c (mono_thread_new_init): Call `thread_created' in the
21623         mono_thread_callbacks.
21624
21625 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
21626
21627         * loader.h: added marshalbyrefobject_class to mono_defaults
21628         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
21629         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
21630           generation of output parameters.
21631           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
21632         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
21633           contextbound and the target object belongs to the context of the caller.
21634         * object.h: added context and unwrapped_server variables in MonoRealProxy.
21635         * object.c: Implemented support for interfaces and abstract classes
21636           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
21637           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
21638
21639 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
21640
21641         * class.h class.c (mono_class_is_subclass_of): New function.
21642         
21643         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
21644         routines for most common case (calls from ArrayList::ToArray).
21645
21646         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
21647         routine so programs which call Environment::Exit() can be profiled.
21648
21649         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
21650         Added MONO_ARCH_SAVE_REGS.
21651
21652         * icall.c (ves_icall_type_is_subtype_of): Use new function.
21653
21654 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
21655
21656         * blob.h: Add a couple of new MonoType types definitions.
21657
21658         * tabledefs.h: Add a couple of new call convs.
21659
21660 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
21661
21662         * reflection.h (MonoReflectionDynamicAssembly): track changes in
21663         the layout of the class.
21664
21665         * reflection.c (alloc_table): double the size on overflow to avoid
21666         unnecessary copying.
21667
21668         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
21669         avoid filling out metadata tables and blobs. Also set mb->ilgen to
21670         null so it can be garbage collected.
21671         
21672 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
21673
21674         * reflection.c (mono_reflection_get_type): Return the resolved type
21675         only if it is in the assembly we searched.
21676
21677         * reflection.c (ensure_runtime_vtable): Initialize method slots.
21678
21679         * class.c (mono_class_setup_vtable): Set the slot of the overriding
21680         method.
21681
21682 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21683
21684         * appdomain.c:
21685         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
21686         the right one is 'file:///blah', but MS allows it.
21687         * assembly.c:
21688         (mono_assembly_open): allow 'file://blah'
21689
21690         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
21691
21692 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
21693
21694         * socket-io.c: fixes bug #40310.
21695
21696 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
21697
21698         * reflection.c (mono_reflection_parse_type): handle deeply nested
21699         types correctly.
21700
21701         * reflection.c (mono_image_create_token): Use unique token values
21702         since they will be put into a hash table.
21703
21704         * class.c (mono_class_setup_vtable): If a method occurs in more than
21705         one place in the vtable, and it gets overriden, then change the
21706         other occurances too.
21707
21708         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
21709         object as return type.
21710
21711 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21712
21713         * icall.c: Deleted "ToString" implementation for double and float
21714         because they are full implemented in managed code.
21715
21716 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21717
21718         * reflection.c, reflection.h: implemented and exported functions
21719         to retrieve info about custom attributes.
21720
21721 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21722
21723         * appdomain.c: moved Uri handling to assembly.c
21724         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
21725         work when using a file Uri in *nix and windows.
21726
21727         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
21728         GetReferencedAssemblies.
21729
21730 2003-03-18  Dick Porter  <dick@ximian.com>
21731
21732         * icall.c: Rename a couple of internal calls
21733
21734         * threads.c: Set the thread state to Stopped when a thread exits.
21735         Fixes bug 39377.
21736
21737 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
21740         New icall.
21741
21742         * object.c (mono_class_vtable): fix warning.
21743
21744 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
21745
21746         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
21747
21748         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
21749         memory.
21750         (method_encode_clauses): Create exception info structures in the right
21751         order.
21752         (mono_reflection_setup_internal_class): Initialize supertypes field.
21753
21754         * class.c object.c: Handle interfaces which implement other interfaces 
21755         correctly.
21756
21757         * class.h class.c: Move the supertypes array initialization code into 
21758         a separate function so it can be used for dynamic types too. Also call
21759         it earlier, in mono_class_init(), since it can be used before the
21760         type is initialized.
21761
21762 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21763
21764         * Makefile.am:
21765         * assembly.c:
21766         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
21767
21768         * appdomain.c:
21769         * appdomain.h:
21770         * marshal.c:
21771         * object.c: remove warnings.
21772
21773 2003-03-13  Martin Baulig  <martin@ximian.com>
21774
21775         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
21776         (MonoDebugLexicalBlockEntry): New types.
21777
21778         * debug-mono-symfile.c
21779         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
21780
21781 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21782
21783         * process.c: ret can be any non-zero value accroding to MS doc.
21784
21785 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
21786
21787         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
21788         fixing a warning for a miss-used prototype, would have cause
21789         random memory corruption.
21790
21791 2003-03-07  Martin Baulig  <martin@ximian.com>
21792
21793         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
21794         getting really annoying ....
21795
21796 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * reflection.c (fixup_method): added support for array methods.
21799
21800 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21801
21802         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
21803         (pointed out by Michael Adams).
21804
21805 2003-03-04  Dick Porter  <dick@ximian.com>
21806
21807         * icall.c: Temporarily reverted the Double and Single ToString()
21808         change, because it broke nunit.
21809
21810 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
21811
21812         * object.h, threads.h: make include files compatible with C++
21813         (patch by Jerome Laban <jlaban@wanadoo.fr>).
21814
21815 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21816
21817         * icall.c: Erased ToString helper functions for Double and Single.
21818         Now, that implementations ar all in managed code (Double and Single
21819         Formatters).
21820
21821 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
21822
21823         * appdomain.c: Added method for initializing the default context of
21824         a domain. Added internal call for getting the default context.
21825         * appdomain.h: Added context variable in MonoDomain struct.
21826         * domain.c: mono_domain_set also sets the default context of the domain
21827         * icall.c: Mapped internal method InternalGetDefaultContext.
21828         * object.c: mono_object_get_virtual_method returns always a remoting
21829         wrapper if the object is a transparent proxy.
21830         mono_runtime_invoke_array: when creating an object by calling the
21831         constructor, if the created object is a proxy, then the constructor should
21832         be called using the a remoting wrapper.
21833
21834 2003-03-03  Dick Porter  <dick@ximian.com>
21835
21836         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
21837         variable so it compiles on solaris.  Problem spotted by
21838         Christopher Taylor <ct@cs.clemson.edu>
21839
21840 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21841
21842         * appdomain.c:
21843         (get_info_from_assembly_name): don't leak value.
21844
21845         * icall.c:
21846         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
21847         result.
21848
21849 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21850
21851         * assembly.c: export mono_image_load_references ().
21852         * class.c: handle function pointers. mono_class_from_name() now
21853         supports nested type names directly.
21854
21855 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
21856
21857         * reflection.h reflection.c: Encode already created dynamic methods 
21858         and fields correctly as a DEF instead of a REF.
21859
21860         * reflection.c: Get rid of the force_ref argument to 
21861         mono_image_typedef_or_ref since it was wrong in the first place.
21862
21863         * string-icalls.c: add error checking to string constructors according
21864         to the MSDN docs.
21865
21866         * reflection.c: Emit types in the order their TypeBuilders were 
21867         created. Previously, a new table index was assigned to each type before
21868         the tables were emitted. This was wrong because the signature blob
21869         might already refer to a type by its original table index.
21870
21871 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
21874         change.
21875         
21876 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21877
21878         * Makefile.am: make assemblies dir have \ instead of / on windows.
21879
21880 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
21881
21882         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
21883         iterate over the NESTEDCLASS table using a linear search since the
21884         table is not guaranteed to be sorted by the secondary key.
21885
21886         * class.c (mono_class_create_from_typedef): fixed up call to
21887         mono_metadata_nesting_typedef.
21888         
21889 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
21890
21891         * marshal.c (mono_string_to_byvalstr): clear the memory as
21892         suggested by Jerome Laban <jlaban@wanadoo.fr>
21893
21894 2003-02-26  Dick Porter  <dick@ximian.com>
21895
21896         * process.c: Cope with padding in .rsrc blocks
21897
21898 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
21899
21900         * metadata.h: reverted the filter_len change, it breaks reflection
21901         
21902 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
21903
21904         * metadata.h: added a new field to store the filter_len
21905         
21906
21907 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21908
21909         * reflection.c: handle custom attributes for types and members
21910         created with Reflection.Emit (bug#38422).
21911
21912 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
21913
21914         * reflection.c: define RTSpecialName automatically for constructors for
21915         compatibility with MS.NET.
21916
21917         * reflection.c (mono_reflection_create_runtime_class): initialize
21918         nested_in field of dynamically created classes.
21919
21920 2003-02-22  Martin Baulig  <martin@ximian.com>
21921
21922         * debug-mono-symfile.h: Incremented version number.
21923
21924 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
21925
21926         * object.h icall.c process.c: fix warnings.
21927
21928 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
21929
21930         * appdomain.h appdomain.c:
21931         (mono_domain_try_type_resolve): split the 
21932         name_or_tb argument into a name and a tb argument.
21933         (mono_domain_has_type_resolve): new function to check whenever the
21934         application has registered a TypeResolve event handler.
21935         
21936         * icall.c reflection.h reflection.c: move the type resolve logic into
21937         mono_reflection_get_type () so it will be invoked when 
21938         Assembly::GetType () is called.
21939
21940         * reflection.c:
21941         (mono_reflection_get_type): renamed to get_type_internal.
21942         (mono_reflection_get_type): fixed type name generation so it works 
21943         for nested types too.
21944         (mono_reflection_get_type): call has_type_resolve () to avoid the 
21945         costly type name generation if there is no resolve event handler.
21946
21947 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21948
21949         * class.c, image.c: load exported types from file references.
21950
21951 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
21952
21953         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
21954           used to cache the managed methods used to create proxies and make 
21955           remote invocation of methods.
21956         * class.h: Added in MonoVTable a flag to indicate that a class needs 
21957           to be remotely created.
21958         * object.c: Modified the method mono_class_vtable(). It now initializes 
21959           the remote flag of the vtable. Modified mono_object_new_specific(), 
21960           so now it checks the remote flag.
21961         * icall.c: Added a couple of internal methods, one for enabling instance 
21962           creation interception for a type, and one for creating objects bypassing
21963           the remote check.
21964
21965 2003-02-18  Martin Baulig  <martin@ximian.com>
21966
21967         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
21968         New interncall to get a method's metadata token.
21969
21970         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
21971         New interncall for the debugger.
21972
21973 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
21974
21975         * class.c (mono_class_setup_vtable): allocate supertype array
21976
21977 2003-02-18  Martin Baulig  <martin@ximian.com>
21978
21979         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
21980
21981 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21982
21983         * reflection.c:
21984         (assembly_name_to_aname): jump over unknown properties (i've found
21985         something like: 'type, assembly, version=xxx, custom=null, public...',
21986         so now will ignore custom=null and still get the rest of the values).
21987
21988 2003-02-17  Dick Porter  <dick@ximian.com>
21989
21990         * threads.c: Have Thread.Start() wait for a semaphore to signal
21991         that the thread has set up all its local data.  This fixes bug
21992         34323, where Abort() raced the new thread's TLS data.
21993
21994         Also removes the handle_store() call from start_wrapper, because
21995         threads are now always created suspended and there is no longer a
21996         race between the parent and child threads to store the info.
21997
21998 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
21999
22000         * image.c: explain the #- heap issue in a message, hopefully
22001         avoiding FAQs on mono-list.
22002
22003 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22004
22005         * icall.c:
22006         (GetEntryAssembly): if the domain has not invoked
22007         AppDomain.ExecuteAssembly yet, return the assembly of the default
22008         AppDomain.
22009
22010 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * class.c (mono_ldtoken): make it work in dynamic assemblies.
22013
22014 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22015
22016         * metadata.c, reflection.c: simple speedup to type hash
22017         and equals code.
22018
22019 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
22020
22021         * image.c, image.h, class.c, assembly.c: move module loading
22022         to MonoImage. When loading metadata, consider alignemnet from
22023         the start of metadata, not from the metadata address in memory.
22024
22025 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
22028         AssemblyBuilder objects. Factored out custom attribute creation into
22029         a separate function.
22030         (create_custom_attr): new function to create custom attributes.
22031
22032 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
22033
22034         * Makefile.am: Got tired of typing the full pathname to pedump.
22035         Until there is another option, am installing this.
22036
22037 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
22038
22039         * class.c (class_compute_field_layout): always set field->parent 
22040         (mono_ldtoken): use mono_defaults.fieldhandle_class;
22041
22042 2003-02-11  Dick Porter  <dick@ximian.com>
22043
22044         * threads-types.h:
22045         * monitor.c: Rewrote Monitor, making lock much faster and
22046         Pulse/Wait work as specified.  Also uses much fewer handles, and only
22047         creates them as needed.
22048
22049         * exception.c: Added SynchronizationLockException
22050
22051         * threads.c: Deleted old Monitor implementation.  The new one is
22052         in a new file.
22053
22054 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22055
22056         * class.c: handled TypedReference type code. Set the correct size for
22057         class data. Setup interface_offsets for interface classes, too.
22058
22059 2003-02-09  Martin Baulig  <martin@ximian.com>
22060
22061         * debug-mono-symfile.h: Reflect latest symbol writer changes.
22062
22063 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
22064
22065         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
22066         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
22067         * object.c: fixed mono_object_get_virtual_method () for interfaces.
22068         * verify.c: check for code that runs after the end of the method.
22069
22070 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22071
22072         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
22073         "System.Math::Round2".
22074         * sysmath.h: Added Floor, Round and Round2 definitions.
22075         * sysmath.c: Modified certain functions that were not 100% compliant
22076         with MS.NET (math precision) and added the implementation of Floor,
22077         Round and Round2.
22078
22079 2003-02-07  Martin Baulig  <martin@ximian.com>
22080
22081         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
22082
22083 2003-02-07  Martin Baulig  <martin@ximian.com>
22084
22085         * debug-mono-symfile.c: Reflected latest symwriter changes.
22086         (mono_debug_create_mono_symbol_file): Removed.
22087         (mono_debug_open_mono_symbol_file): Take an argument which
22088         specifies whether to create a dynamic symbol file.
22089
22090 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
22091
22092         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
22093
22094 2003-02-05  Martin Baulig  <martin@ximian.com>
22095
22096         * reflection.c (mono_image_build_metadata): Make this public,
22097         protect it against being called multiple times, don't create
22098         resources and don't build the compressed metadata here.
22099         (mono_image_create_pefile): Do this here.
22100
22101         * icall.c
22102         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
22103
22104 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22105
22106         * socket-io.c: fixed bug #36322.
22107
22108 2003-02-06  Piers Haken <piersh@friskit.com>
22109
22110         * appdomain.[ch]:
22111         * class.h:
22112         * debug-mono-symfile.c:
22113         * icall.c:
22114         * loader.c:
22115         * mono-config.c:
22116         * monosn.c:
22117         * reflection.c:
22118         * socket-io.c: warning cleanups
22119
22120 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
22121
22122         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
22123         function. works like remoting invoke, but does a check for the Proxy first.
22124
22125 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
22126
22127         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
22128
22129 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
22130
22131         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
22132         array of pointers.
22133         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
22134         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
22135
22136         * object.c (mono_store_remote_field_new): used by the new jit
22137         instead of mono_store_remote_field
22138         (mono_load_remote_field_new): used by the new jit
22139         instead of mono_load_remote_field
22140
22141 2003-02-05  Patrik Torstensson
22142
22143         * appdomain.c: changed unload to take the domain id instead
22144         of domain
22145         
22146         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
22147
22148
22149 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22150
22151         * appdomain.c: don't look for assemblies in ApplicationBase if
22152         PrivateBinPathProbe is set.
22153
22154 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22155
22156         * object.c: make the first argument in main_args contain the absolute
22157         path to the assembly. Fixes bug #37511.
22158
22159 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22160
22161         * icall.c: get correct UTC offset for countries not using daylight
22162         time saving. Fixes bug #30030.
22163
22164 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22165
22166         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
22167         and 1 are the family).
22168
22169 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
22170
22171         * icall.c (ves_icall_InternalExecute): removed wrong assertion
22172
22173         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
22174
22175 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
22176
22177         * reflection.c: added support for SignatureHelper tokens, which is
22178         needed by the Calli opcode.
22179
22180         * reflection.h: track changes to SignatureHelper class.
22181
22182         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
22183
22184 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22185
22186         * appdomain.c: fixed loading assemblies from PrivateBinPath.
22187
22188 2003-02-03  Patrik Torstensson
22189         * appdomain.[c|h], domain.c : 
22190          - Added support for getting a domain via domain id
22191          - Support for setting and getting domain from System.AppDomain 
22192            (used in cross appdomain channel)
22193          - Added support for get/set for a MonoAppContext on a thread 
22194            (Context class in System.Runtime.Remoting.Contexts),
22195          - Removed hack in Get/SetData and ExecuteAssembly.
22196         
22197         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
22198         the managed world to get control when a proxy is created.
22199
22200         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
22201         
22202 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
22203
22204         * icall.c
22205         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22206         Populate the codebase field as well.
22207
22208 2003-02-02  Martin Baulig  <martin@ximian.com>
22209
22210         * debug-mono-symfile.c
22211         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
22212         (mono_debug_symfile_add_method): Allow interncalls.
22213
22214 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22215
22216         * icall.c: throw parse exception if strtod fails or the string is empty.
22217
22218 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
22219
22220         * marshal.c: handle object type separately from defined
22221         class types.
22222
22223 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
22224
22225         * marshal.c: handle NATIVE_LPSTR for strings when it's
22226         explicitly specified.
22227
22228 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
22229
22230         * reflection.c, reflection.h, icall.c: setup the reflection
22231         handle cache for ModuleBuilders and AssemblyBuilders.
22232
22233 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
22234
22235         * reflection.c (reflection_methodbuilder_to_mono_method): set
22236         pinvoke flag
22237
22238 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22239
22240         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
22241
22242 2003-01-29  Dick Porter  <dick@ximian.com>
22243
22244         * threads.c: No need for the fake_thread kludge now that Thread
22245         doesn't run a class constructor
22246         
22247 2003-01-29  Dick Porter  <dick@ximian.com>
22248
22249         * threads.c: Use g_direct_hash instead of the rather bogus
22250         g_int_hash
22251
22252 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
22253
22254         * marshal.c (mono_marshal_get_native_wrapper): add check for null
22255         (fix pinvoke12.exe)
22256         (mono_marshal_get_struct_to_ptr): generate valid IL code
22257         (mono_marshal_get_ptr_to_struct): generate valid IL code
22258         (*): correctly set sig->pinvoke, we need to memdup the signature
22259         to do that
22260
22261 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22262
22263         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
22264         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
22265
22266 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22267
22268         * profiler.c: provide more callers information.
22269
22270 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
22271
22272         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
22273
22274         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
22275
22276         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
22277
22278 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
22281         exception instead of going into an infinite loop on dates which it 
22282         can't yet handle.
22283
22284         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
22285         out-of-range exception if needed.
22286
22287         * class.c (mono_class_setup_vtable): allow a virtual method to provide
22288         an implementation for an interface method and to override an inherited
22289         method at the same time. 
22290         Imagine a scenario when a virtual method is used to override a
22291         virtual abstract method in a parent class, and this same method 
22292         provides an implementation for an method inherited from an interface. 
22293         In this case, the interface resolution code will set im->slot, which 
22294         means that the virtual method override pass will skip this method 
22295         which means a pointer to the abstract method inherited from the parent
22296         will remain in the vtable of this non-abstract class.
22297
22298         * class.c: (mono_class_setup_vtable): continue search for a real 
22299         method if only an abstract method is found.     
22300
22301 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
22302
22303         * reflection.c: add size to encoding for ByValStr and ByValArray
22304         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
22305
22306 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22307
22308         * class.c (mono_class_setup_vtable): pass the override info as an
22309         argument.
22310
22311         * class.c (mono_class_setup_vtable): set the slot of overriding methods
22312         correctly.
22313         
22314         * reflection.c (ensure_runtime_vtable); add support for method 
22315         overrides.
22316         
22317 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * reflection.c (resolution_scope_from_image): Hack to work to work with
22320         dynamic assemblies.
22321
22322         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
22323         added a 'force_ref' argument to force this function to allways return 
22324         a TypeRef. This is needed by mono_image_get_memberref_token ().
22325         
22326 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22327
22328         * reflection.c (mono_image_get_type_info): interfaces really don't have
22329         a parent.
22330
22331         * reflection.c (mono_image_basic_init): fill out missing fields of
22332         image structure.
22333
22334         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
22335         dynamic assemblies. This is required so dynamic assemblies show up in
22336         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
22337         Type::GetType() etc. This is consistent with MS behaviour.
22338
22339         * image.c image.h reflection.c: add newly created classes to the name 
22340         cache so mono_class_get () will find them.      
22341
22342 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         First part of changes to get IKVM.NET running under mono.
22345         
22346         * appdomain.h, appdomain.c: added new function 
22347         mono_domain_try_type_resolve() which will emit TypeResolve events. 
22348         This function will call AppDomain::DoTypeResolve to do the actual work.
22349
22350         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
22351         moved existing code dealing with dynamic tokens to a new function 
22352         called mono_reflection_lookup_dynamic_token (). This function will 
22353         raise TypeResolve events when appropriate. Since reflection.c is not 
22354         part of libmetadata, a new hook function called 
22355         mono_lookup_dynamic_token() is added to class.c which will call this.
22356
22357         * assembly.h assembly.c: make the invoke_load_hook function public,
22358         so it can be called for dynamic assemblies.
22359
22360         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
22361
22362         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
22363         type isn't found.
22364
22365         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
22366         MonoGHashTable, since it contains pointers to objects which the GC 
22367         needs to track.
22368
22369         * assembly.c (search_loaded): remove unused variable.
22370         
22371 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
22372
22373         * object.c: fixed issue exposed by gcc-generated IL programs
22374         that use RVA data for pointers.
22375
22376 2003-01-25  Martin Baulig  <martin@ximian.com>
22377
22378         * threads.c (start_wrapper): Moved the initialization of
22379         `start_func' above the mono_new_thread_init() call to which we
22380         pass it as argument.
22381
22382 2003-01-24  Martin Baulig  <martin@ximian.com>
22383
22384         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
22385         the MonoThread pointer.
22386
22387 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
22388
22389         * icall.c: Rename `PowImpl' to Pow.
22390
22391 2003-01-23  Dick Porter  <dick@ximian.com>
22392
22393         * threads.c (start_wrapper): Create a Thread object if needed, so
22394         the Main() thread can do the class initialisation in a subthread
22395         that has been set up to allow managed code execution.
22396
22397         Pass the thread ID instead of the MonoThread pointer to the thread
22398         start and attach callbacks.  This change is required, because the
22399         jit thread start callback must be called _before_ the Thread
22400         object can be created.
22401         
22402         (mono_thread_init): Removed much object creation code that is no
22403         longer needed.  No managed code is called from here now.
22404
22405         * object.c (mono_runtime_exec_managed_code): Create a subthread
22406         for Main, and call back to the runtime to use it.
22407         Set the exit code when Main exits.
22408
22409         * gc.c: Make sure domain finalisation happens in a subthread.
22410         Re-enable threaded GC, fixing bug 31333 (again).
22411
22412         * environment.c: System.Environment internall calls (so far just
22413         ExitCode is here, the others are still in icall.c)
22414
22415         * appdomain.c (mono_runtime_cleanup): All threads running managed
22416         code should have finished before mono_runtime_cleanup() is
22417         reached, so no need to clean up threads.
22418
22419 2003-01-22  Martin Baulig  <martin@ximian.com>
22420
22421         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
22422         `gpointer func' arguments.      
22423         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
22424         but added `MonoThread *thread' argument.
22425         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
22426
22427         * threads.c (mono_new_thread_init): Added `gpointer func' argument
22428         and pass it to the mono_thread_start_cb callback.
22429         (mono_install_thread_callbacks): New public function to install a
22430         set of callbacks which are set by the debugger.
22431         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
22432
22433 2003-01-22  Martin Baulig  <martin@ximian.com>
22434
22435         * Makefile.am: Install debug-mono-symfile.h.
22436
22437 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
22438
22439         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
22440
22441 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
22442
22443         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
22444         * class.c (mono_ptr_class_get): correctly set access levels of pointers
22445         (mono_array_class_get): correctly set access levels of arrays
22446
22447 2003-01-20      Patrik Torstensson
22448         * image.h (MonoAssemblyName): changed major, minor, build, revision
22449         from signed to unsigned.
22450
22451 2003-01-20  sean kasun <skasun@azstarnet.com>
22452
22453         * reflection.c (load_cattr_value): Now this handles
22454         MONO_TYPE_SZARRAY.  Fixes bug #35629
22455
22456 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
22457
22458         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
22459         integer value
22460
22461 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22462
22463         * decimal.c: fixed bug #26056.
22464
22465 2003-01-17  Martin Baulig  <martin@ximian.com>
22466
22467         * gc.c: Raise an ExecutionEngineException instead of using g_error().
22468
22469 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22470
22471         * exception.[ch]:
22472         (mono_get_exception_type_initialization): new function.
22473
22474         * object.c: throw a TypeInitializationException when an exception is
22475         thrown invoking the class constructor.
22476
22477 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22478
22479         * reflection.c: fixed attribute reading.
22480
22481 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22482
22483         * icall.c:
22484         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
22485         provided, look for the type in the calling assembly and then in
22486         mscorlib; if the assembly name is provided, only try that one.
22487
22488 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22489
22490         * object.c: register the vtable before there is a chance it's
22491         queried again recursively.
22492
22493 2003-01-13  Duncan Mak  <duncan@ximian.com>
22494
22495         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
22496         gc-internal.h. 
22497         
22498 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
22499
22500         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
22501
22502 2003-01-11  Martin Baulig  <martin@ximian.com>
22503
22504         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
22505         this to 20 for the release.
22506
22507 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
22508
22509         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
22510
22511         * loader.c (mono_method_get_marshal_info): bug fix
22512
22513         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
22514         structures with explicit layout
22515
22516 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22517
22518         * profiler.c: made the output more readable (and sorted). 
22519         Added caller information for the allocation profiler.
22520
22521 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
22522
22523         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
22524
22525 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
22528         to get value types.
22529         
22530 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
22531
22532         * object.c, profiler.h, profiler.c, profiler-private.h:
22533         Added object allocation profiler.
22534
22535 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
22536
22537         * reflection.h, reflection.c: handle global methods.
22538         Compress blob entries.
22539
22540 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
22541
22542         * marshal.c: fix compilation.
22543
22544 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
22545
22546         * loader.c (mono_method_get_marshal_info): impl.
22547
22548         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
22549
22550 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22551
22552         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
22553         for reference types.
22554
22555 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
22556
22557         * loader.c: fixed off by one error in loaded parameter names.
22558
22559 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
22560
22561         * marshal.c (mono_marshal_get_icall_wrapper): like
22562         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
22563         instead of a MonoMethod.
22564
22565 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22566
22567         * decimal.c: fixed bug #36537.
22568
22569 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
22570
22571         * marshal.c: throw a missing method exception if a
22572         P/Invoke method is not found.
22573
22574 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22575
22576         * icall.c: allow a null this for constructors.
22577
22578 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22579
22580         * icall.c: raise the proper exceptions if the arguments to the
22581         internal Invoke are incorrect.
22582
22583 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
22584
22585         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
22586
22587 2003-01-03  Martin Baulig  <martin@ximian.com>
22588
22589         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22590
22591 2002-12-31  Martin Baulig  <martin@ximian.com>
22592
22593         * debug-mono-symfile.c: Completely rewrote the type section.
22594         Instead of using individual malloc()ed fields, we use one big
22595         continuous memory area and offsets into this area.
22596         See the comments in the source code for details.
22597
22598 2002-12-30  Martin Baulig  <martin@ximian.com>
22599
22600         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
22601
22602 2002-12-30  Martin Baulig  <martin@ximian.com>
22603
22604         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
22605         line number table in this data blob instead of using an external
22606         pointer.
22607
22608 2002-12-28  Martin Baulig  <martin@ximian.com>
22609
22610         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
22611
22612 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
22613
22614         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
22615         as a boxed return type.
22616
22617 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
22618
22619         * appdomain.c
22620         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
22621         g_build_filename to properly get separators on the filename created.
22622
22623         * object.h: Small change, introduce MonoMarshalByRefObject to
22624         track the layout of that structure in the C# universe as we make
22625         changes there.
22626
22627 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
22628
22629         * object.c: removed assert to allow static fields on interfaces.
22630         * loader.c: a TypeSpec may be used for any type, not just arrays.
22631
22632 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
22633
22634         * class.c, class.h: added mono_class_array_element_size ().
22635         Ignore static methods in interfaces.
22636
22637 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22638
22639         * threads.c: fixed the build under cygwin.
22640
22641 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
22642
22643         * reflection.c: handle nullref constants. Allocate keys for
22644         reflection handles with the GC.
22645
22646 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22647
22648         * threads.c, threads.h: added mono_thread_get_abort_signal()
22649         to get a suitable signal for thread abort.
22650
22651 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
22652
22653         * metadata.c: fix handling of ExportedType table.
22654
22655 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22656
22657         * icall.c: added WriteWindowsDebugString internal call.
22658
22659 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22660
22661         * reflection.h: added fields to match C# implementation.
22662
22663 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22664
22665         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
22666
22667 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
22668
22669         * gc.h, gc-internal.h: Rename header for GC internal calls to
22670         gc-internal.h from gc.h as to not clash with Boehm GC having its
22671         header installed as <gc.h> in outside include paths.
22672         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
22673         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
22674
22675 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22676
22677         * icall.c: assign minor, build and revision in FillName.
22678
22679 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
22680
22681         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
22682         Added support for running code generated by Reflection.Emit.
22683
22684 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22685
22686         * appdomain.c: check for NULL argument in LoadFrom.
22687
22688 2002-12-10  Dick Porter  <dick@ximian.com>
22689
22690         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
22691
22692 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22693
22694         * appdomain.c: fix buglet when building exe file name.  Handle full
22695         assembly name (needed after latest changes to AssemblyName).
22696         * image.c:
22697         (mono_image_close): free some hashtables.
22698
22699 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
22700
22701         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
22702         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
22703         on some systems (redhat 7.3) 
22704
22705 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
22706
22707         * threads.c: delete the critical section of a sync block,
22708         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
22709
22710 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
22711
22712         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
22713
22714 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22715
22716         * appdomain.[ch]: handle the assembly preload event to try loading the
22717         assemblies using the paths we have in the current domain.
22718
22719         * assembly.[ch]: created an assembly preload hook that is called to try
22720         loading the assembly by other means that the ones provided here.
22721
22722         * domain.c: initialize the domain search path.
22723
22724         From now on, assemblies (TODO: except corlib and System) are loaded
22725         according to these rules when using mono_assembly_load ():
22726
22727                 1. It tries to load the assembly from the ApplicationBase
22728                 of the current domain appending .dll and .exe (TODO: have to
22729                 try loading from name/name.dll and name/name.exe).
22730
22731                 2. It tries the search path specified in PrivateBinPath for the
22732                 current domain (if any).
22733
22734                 3. Previous behavior.
22735
22736 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
22737
22738         * icall.c: implemented GetInterfaceMap() related icall.
22739         * domain.c, loader.h: load MethodInfo in mono_defaults.
22740
22741 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
22742
22743         * gc.c: disable the finalizer thread for now, untill all the issues
22744         with it are resolved.
22745
22746 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
22747
22748         * string-icalls.c: handle embedded nulls in string ctor when the
22749         length is specified.
22750
22751 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
22752
22753         * class.c: look for explicit interface implementation in parent
22754         classes, too.
22755
22756 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
22757
22758         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
22759
22760 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
22761
22762         * gc.c: protect handles with a critical section.
22763
22764 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22765
22766         * icall.c:
22767         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
22768         parameters. If no assembly specified, try getting the type from all
22769         the assemblies in the current domain, else, load the assembly and get
22770         the type from it.
22771
22772 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22773
22774         * marshal.c: applied patch from Aleksey Demakov that fixes
22775         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
22776
22777 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22778
22779         * icall.c: fixed get_location.
22780
22781 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
22782
22783         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
22784         declarations to make it work with older gcc. 
22785
22786         * loader.c (mono_get_method): set signature->pinvoke for native calls
22787
22788 2002-11-20  Dick Porter  <dick@ximian.com>
22789
22790         * threads.c (mono_thread_init): Set the main thread's handle
22791
22792 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
22793
22794         * gc.c: allow compilation without GC support. Changed to match the
22795         mono coding style.
22796
22797 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
22798
22799         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
22800
22801 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
22802
22803         * reflection.c: set a public key token on the core assemblies.
22804
22805 2002-11-18  Dick Porter  <dick@ximian.com>
22806
22807         * threads.c: Split out some thread initialisation so that other
22808         files can set the start callback function.
22809
22810         * gc.c: Run finalisers in a separate thread, to avoid stack
22811         overflow.  Fixes bug 31333.
22812
22813         * appdomain.c: Set up GC finalisation thread.
22814
22815         * reflection.c: 
22816         * object.c: 
22817         * domain.c: Use gc.h macros for GC_malloc
22818         
22819 2002-11-15  Dick Porter  <dick@ximian.com>
22820
22821         * threadpool.c: 
22822         * threads.c:
22823         * appdomain.c: Removed mono_runtime_init_with_attach(),
22824         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
22825         merging the extra parameter with the existing function.  Removed
22826         unneeded code in mono_thread_attach().
22827
22828 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
22829
22830         * image.c (mono_image_loaded_by_guid): a method to get loaded
22831         images by guid. 
22832         (load_metadata_ptrs): we store the guid as string.
22833
22834 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
22835
22836         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
22837
22838         * metadata.c (mono_guid_to_string): imported method form Zoltan
22839         Varga (slightly modified)
22840
22841         * assembly.c (mono_assembly_open): load precompiled code
22842
22843         * loader.h (MonoMethod): we store the method token for use in the
22844         aot compiler. 
22845
22846 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22847
22848         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
22849         the hook function called when an assembly is loaded.
22850         
22851         * domain.c: Modified file.
22852         (mono_domain_assembly_load): removed hash table insertion of assemblies.
22853
22854         Fixes bug #33196.
22855
22856 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
22857
22858         * reflection.c: Map PEFileKind to the value expected by the WinNT
22859         image loader. 
22860
22861 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22862
22863         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
22864         Read until the buffer is filled completely.
22865
22866 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22867
22868         * icall.c: implemented MonoType.InternalGetEvent ().
22869
22870 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22871
22872         * appdomain.c: implemented InitAppDomainSetup. Delayed
22873         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
22874         the entry_assembly.
22875
22876         * assembly.c: base_dir is now an absolute path ending with
22877         G_DIR_SEPARATOR.
22878
22879         * icall.c: modified get_location according to the above changes.
22880
22881         * object.c: init AppDomain.SetupInformation for the default domain after
22882         we have the entry assembly.
22883
22884         * domain.c: when unloading a domain, setup = NULL.
22885
22886 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
22887
22888         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
22889
22890 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
22891
22892         * object.h, object.c: introduced mono_object_get_virtual_method ()
22893         to lookup the method invoked on an object when a callvirt is done on
22894         a method.
22895         * icall.c: make MethodInfo::Invoke() always do a virtual call.
22896
22897 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22898
22899         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
22900         current domain when loaded an assembly and failed to load it.
22901
22902         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
22903
22904 2002-10-31  Dick Porter  <dick@ximian.com>
22905
22906         * icall.c: 
22907         * file-io.h: 
22908         * file-io.c: Return the error status in a parameter, as the
22909         GetLastError() value has long since been blown away if we try and
22910         look it up in a subsequent internal call invocation.  Delete the
22911         GetLastError() internal call, because it's useless.
22912
22913 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
22914
22915         * class.[ch]: added cast_class to fix bug 29517
22916
22917 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
22918
22919         * marshal.c: create valid IL code in the filter clause:
22920         the new JIT is less forgiving:-)
22921
22922 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22923
22924         * icall.c: removed get_property internal call.
22925
22926 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
22927
22928         * appdomain.h domain.c: Added an ID to appdomains.
22929         
22930         * threads.c threads.h icall.c: Implement icall
22931         Thread:GetDomainID(), and remove unused icall 
22932         CurrentThreadDomain_internal.
22933
22934 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22935
22936         * icall.c: Don't recurse through the base types in GetConstructor.
22937         Fixes bug #32063. 
22938
22939 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
22940
22941         * mempool.h, mempool.c: added mono_mempool_empty() and
22942         mono_mempool_stats().
22943
22944 2002-10-23  Dick Porter  <dick@ximian.com>
22945
22946         * file-io.c: 
22947         * file-io.h: 
22948         * icall.c: Added MonoIO.GetFileType internal call
22949
22950 2002-10-17  Dick Porter  <dick@ximian.com>
22951
22952         * appdomain.c (mono_runtime_cleanup): Don't signal the async
22953         delegate semaphore before waiting for all threads to finish,
22954         because new threads can also call async delegates.  Fixes bug
22955         32004.
22956
22957         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
22958         of 3 seconds, in case another async job is queued.  (This part is
22959         needed because the bug fix reintroduced the 3s exit lag.)  This
22960         makes the mono_runtime_shutdown flag superfluous.
22961
22962 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
22963
22964         * reflection.c: include ehader size in method section headers.
22965         Really check for suplicated modules entries.
22966
22967 2002-10-17  Martin Baulig  <martin@gnome.org>
22968
22969         * debug-mono-symfile.c: Added back support for locals.
22970
22971 2002-10-14  Martin Baulig  <martin@gnome.org>
22972
22973         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
22974         MONO_TYPE_VOID.
22975
22976 2002-10-14  Martin Baulig  <martin@gnome.org>
22977
22978         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
22979         mono_class_get() instead of looking in the class cache. 
22980
22981 2002-10-13  Martin Baulig  <martin@gnome.org>
22982
22983         * debug-mono-symfile.c: Set version number to 28, include the
22984         signature in method names.
22985
22986 2002-10-13  Martin Baulig  <martin@gnome.org>
22987
22988         * debug-mono-symfile.h: Set version number to 27.
22989
22990 2002-10-11  Martin Baulig  <martin@gnome.org>
22991
22992         * gc.c: Don't register/unregister NULL pointers as disappearing links.
22993
22994 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
22995
22996         * metadata.c, metadata.h: added helper function to allocate signatures.
22997
22998 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22999
23000         * icall.c: added internal call to get the location of machine.config.
23001
23002 2002-10-08  Martin Baulig  <martin@gnome.org>
23003
23004         * debug-mono-symfile.c: Ignore classes with a pending init for the
23005         moment.
23006
23007 2002-10-03  Dick Porter  <dick@ximian.com>
23008
23009         * threads.c: Freebsd pthread_t is a pointer
23010
23011 2002-10-03  Dick Porter  <dick@ximian.com>
23012
23013         * socket-io.c: Implemented GetHostName_internal
23014
23015 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23016
23017         * mono-config.c:
23018         (mono_config_parse_file): don't leak the text.
23019
23020 2002-10-02  Martin Baulig  <martin@gnome.org>
23021
23022         * debug-mono-symfile.c: Added support for methods.
23023
23024 2002-10-01  Martin Baulig  <martin@gnome.org>
23025
23026         * debug-mono-symfile.c: Don't emit methods and line numbers for
23027         the dynamic symbol file, just write the type table.  We can easily
23028         have an external helper program which creates a symbol file for an
23029         IL file.        
23030
23031 2002-10-01  Dick Porter  <dick@ximian.com>
23032
23033         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
23034         Only add the handle to the cleanup array when we're about to
23035         launch the thread.  Bug 31425 deadlocked when the test was run on
23036         mono under w32.
23037
23038 2002-10-01  Martin Baulig  <martin@gnome.org>
23039
23040         * debug-mono-symfile.c: Added support for properties.
23041
23042 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23043
23044         * reflection.c: unaligned store fix from Mark Crichton
23045         <crichton@gimp.org>.
23046
23047 2002-09-27  Martin Baulig  <martin@gnome.org>
23048
23049         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
23050         New interncall.
23051
23052 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23053
23054         * assembly.h, assembly.c: use a sane API to hook into the assembly
23055         loading process instead of a useless special-purpouse hack
23056         (ngen needs a hook, too, for example).
23057
23058 2002-09-27  Dick Porter  <dick@ximian.com>
23059
23060         * threads.c (mono_thread_init): Call GetCurrentProcess() so
23061         io-layer can set up some process handle info.  Not needed on w32,
23062         but doesn't hurt either.
23063
23064         * process.c: Pass the program name in the second parameter to
23065         CreateProcess, so the path is searched.  Include the working
23066         directory. Implemented process name, process enumeration, and some
23067         process detail internal calls.
23068         
23069         * icall.c: Added internal calls for process lookup, and some
23070         process details
23071
23072 2002-09-26  Martin Baulig  <martin@gnome.org>
23073
23074         * assembly.c (mono_install_open_assembly_hook): New global
23075         function to install a function to be invoked each time a new
23076         assembly is loaded.
23077         (mono_assembly_open): Run this callback function if set.
23078
23079         * debug-mono-symfile.c: Put back line numbers for the dynamic
23080         symbol file and also record the .il file as source file.  This
23081         allows us to install the temporary symbol file as `file.dbg' just
23082         like a compiler-generated one.
23083
23084 2002-09-26  Nick Zigarovich <nick@chemlab.org>
23085
23086         * Corrected typo in gc.c (BOHEM vs BOEHM).
23087
23088 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23089
23090         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
23091         GetProperties. Also avoid calling g_slist_length in GetProperties and
23092         GetMethods.
23093
23094 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23095
23096         * reflection.c: avoid unaligned stores (bug spotted by
23097         Mark Crichton  <crichton@gimp.org>).
23098
23099 2002-09-25  Martin Baulig  <martin@gnome.org>
23100
23101         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
23102         instead of guint64 for addresses and added prologue/epilogue info.
23103
23104 2002-09-25  Martin Baulig  <martin@gnome.org>
23105
23106         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
23107         store line number info.  For the dynamic symbol file, we only need
23108         to provide the JIT generated dynamic line number info for the dynamic
23109         symbol file.
23110
23111 2002-09-25  Martin Baulig  <martin@gnome.org>
23112
23113         * debug-mono-symfile.h: Incremented version number.
23114
23115 2002-09-24  Martin Baulig  <martin@gnome.org>
23116
23117         * class.c (mono_debugger_class_init_func): New global function
23118         pointer variable.
23119         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
23120         call it.
23121
23122         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
23123         function.  This is called via the mono_debugger_class_init_func
23124         hook to add all types to the dynamic type table.
23125         (ves_icall_MonoDebugger_GetType): New interncall to get a class
23126         from its metadata token.
23127
23128         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
23129         New interncall for the debugger.
23130
23131 2002-09-24  Nick Drochak <ndrochak@gol.com>
23132
23133         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
23134         before using it in case it is null.
23135         
23136 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23137
23138         * metadata.c: allow custom modifiers in local var signatures
23139         (bug spotted by Zoltan Varga).
23140
23141 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23142
23143         * class.c: deal with the <Module> class that may have a NULL vtable.
23144         Eliminate warnings.
23145
23146 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23147
23148         * image.c, image.h: more strong name helpers.
23149         * monosn.c: more work: convert pem keys to cryptoapi format.
23150
23151 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23152
23153         * string-icalls.c: speedup IndexOf.
23154
23155 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23156
23157         * icall.c: updates from Zoltan.2.Varga@nokia.com.
23158
23159 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23160
23161         * icall.c: cleanup: use mono_object_domain ().
23162
23163 2002-09-23  Martin Baulig  <martin@gnome.org>
23164
23165         * debug-mono-symfile.c: Improved type support.
23166
23167 2002-09-22  Martin Baulig  <martin@gnome.org>
23168
23169         * debug-mono-symfile.c: Added support for reference types and strings.
23170
23171 2002-09-22  Martin Baulig  <martin@gnome.org>
23172
23173         * debug-mono-symfile.c: Started to work on the type table.
23174
23175 2002-09-21  Martin Baulig  <martin@gnome.org>
23176
23177         * debug-mono-symfile.c: Largely reworked the symbol table format.
23178         The symbol table is now incrementally updated each time a new
23179         method is added.  We're now also using our own magic and version
23180         so that you don't need to recompile all your classes if the
23181         dynamic table changes.
23182         (mono_debug_update_mono_symbol_file): Removed.
23183         (mono_debug_symfile_add_method): New function to add a method.
23184
23185 2002-09-21  Martin Baulig  <martin@gnome.org>
23186
23187         * icall.c
23188         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
23189         New interncall.
23190
23191         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
23192         New interncall to get a method from its metadata token.
23193
23194 2002-09-21  Martin Baulig  <martin@gnome.org>
23195
23196         * debug-mono-symfile.c: Create type table.
23197
23198 2002-09-20  Martin Baulig  <martin@gnome.org>
23199
23200         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
23201
23202 2002-09-20  Martin Baulig  <martin@gnome.org>
23203
23204         * debug-mono-symfile.c: Provide information about params and locals.
23205
23206 2002-09-20  Martin Baulig  <martin@gnome.org>
23207
23208         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
23209         New interncall.
23210
23211         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
23212         interncall to get a method from its metadata token.
23213
23214 2002-09-20  Martin Baulig  <martin@gnome.org>
23215
23216         * debug-mono-symfile.c: Added a few checks for method->header
23217         being non-NULL.  This should never happen, but for the moment
23218         let's use a g_warning() rather than a g_assert().
23219
23220 2002-09-19  Mark Crichton  <crichton@gimp.org>
23221
23222         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
23223         even if support for it isn't present.  Added an #ifdef to fix this.
23224
23225         * socket-io.c: Added checks back for Solaris support.
23226
23227 2002-09-19  Martin Baulig  <martin@gnome.org>
23228
23229         * debug-mono-symfile.c (read_string, write_string): Reflect latest
23230         changes in the symbol file format.
23231
23232 2002-09-18  Martin Baulig  <martin@gnome.org>
23233
23234         * debug-mono-symfile.c: Set version number to 21.
23235
23236 2002-09-18  Dick Porter  <dick@ximian.com>
23237
23238         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
23239         on netbsd.  Fixes bug 30051.
23240
23241 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23242
23243         * reflection.c:
23244         (set_version_from_string): little fix.
23245
23246 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23247
23248         * monosn.c, Makefile.am: added strong name utility.
23249         * reflection.h, reflection.c: implemented delayed signing,
23250         locale, version and hash id assembly attributes.
23251
23252 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23253
23254         * loader.c, metadata.c: load param attributes in signatures.
23255
23256 2002-09-16  Martin Baulig  <martin@gnome.org>
23257
23258         * debug-mono-symfile.c: Added string table with all method names.
23259
23260 2002-09-14  Martin Baulig  <martin@gnome.org>
23261
23262         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
23263         fast method lookup.
23264
23265 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23266
23267         * reflection.c: record the public key token of referenced assemblies.
23268
23269 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23270
23271         * image.c, image.h: added functions to get the strong name and the
23272         public key of an assembly.
23273         * pedump.c: use them.
23274
23275 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
23276
23277         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
23278
23279 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
23280
23281         * marshal.c (mono_marshal_get_managed_wrapper): Added
23282         MONO_TYPE_BOOLEAN 
23283
23284 2002-09-11  Martin Baulig  <martin@gnome.org>
23285
23286         * gc.c: Call GC_unregister_disappearing_link() on all links when
23287         finalizing them, this is necessary to aviod a crash in boehm's
23288         finalize handler.
23289
23290 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23291
23292         * gc.c: handle GetTarget for finalized objects spotted and fixed by
23293         nick@chemlab.org.
23294
23295 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
23296
23297         * icall.c: implemented MonoType::Module.
23298         * reflection.c, reflection.h: mono_module_get_object () from
23299         Tomi Pakarinen <tomi.pakarinen@welho.com>.
23300
23301 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23302
23303         * icall.c: ignore overridden methods in GetMethods ().
23304         Fix for FieldInfo::SetValue().
23305         * object.c: handle float/double in runtime invoke.
23306
23307 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23308
23309         * object.c: allow a constructor to be called again on an object.
23310
23311 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23312
23313         * class.h, class.c: move field layout code to it's own function and
23314         export it. Get an interface id earlier. Move fields in MonoClass
23315         so they are more cache friendly and align the bitfields.
23316         * loader.c: temporary handle get_param_names() for a runtime method.
23317         * reflection.c, reflection.h: more code to handle runtime creation of
23318         types.
23319
23320 2002-09-09  Martin Baulig  <martin@gnome.org>
23321
23322         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
23323         signature with the pinvoke field being set for the actual call.
23324
23325 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23326
23327         * icall.c: removed some unused icalls. Start of map of glib charsets
23328         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
23329
23330 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23331
23332         * debug-helpers.c: break infinite loop (found and fixed by
23333         Holger Arnold <harnold@gmx.de>).
23334
23335 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23336
23337         * icall.c: target may be null in create_delegate.
23338
23339 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23340
23341         * marshal.c: handle a boolean return type.
23342
23343 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23344
23345         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
23346
23347 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23348
23349         * gc.c: fix weakreferences.
23350
23351 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23352
23353         * icall.c: added icall to get default codepage.
23354
23355 2002-09-03  Dick Porter  <dick@ximian.com>
23356
23357         * threads.h: 
23358         * threads.c: Use MonoThread instead of MonoObject where
23359         apropriate.
23360
23361         Store running thread objects in a hash table, so that we have all
23362         the info to hand when waiting for them to finish
23363         (means we don't need OpenThread() any more, so mingw builds should
23364         be fully functional again.)
23365
23366         * verify.c:
23367         * object.h: Added thread ID to MonoThread
23368
23369 2002-09-03  Martin Baulig  <martin@gnome.org>
23370
23371         * icall.c (System.Reflection.Assembly::get_location): New interncall.
23372
23373 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23374
23375         * icall.c: fixed leak in get_temp_path. Thanks lupus.
23376
23377 2002-09-03  Martin Baulig  <martin@gnome.org>
23378
23379         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
23380         argument to store the end address of the disassembled instruction.
23381
23382         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
23383         here from debug-symfile.h.
23384         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
23385         JIT into this struct.
23386         (MonoSymbolFile): Added `char *image_file' field.
23387         (MonoDebugGetMethodFunc): Removed.
23388         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
23389         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
23390         (mono_debug_find_method): New method.
23391
23392         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
23393         create a full symbol file.
23394         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
23395         and static symbol files.
23396         (mono_debug_find_method): The symbol file keeps an internal method hash,
23397         call this to get a MonoDebugMethodInfo from a MonoMethod.
23398
23399         * debug-symfile.[ch]: Removed.
23400
23401 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
23402
23403         * image.c (do_mono_image_open): Remove linker version check.
23404
23405 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
23406
23407         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
23408         wrappers for instance methods.
23409         
23410 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23411
23412         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
23413
23414 2002-08-28  Dick Porter  <dick@ximian.com>
23415
23416         * Makefile.am: Export HOST_CC for w32 builds
23417
23418 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23419
23420         * file-io.c process.c: MonoString are null terminated, no
23421         need for mono_string_to_utf16() anymore.
23422
23423 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23424
23425         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
23426
23427 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
23428
23429         * icall.c, reflection.h: speedup System.MonoType.
23430
23431 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23432
23433         * reflection.c: allow null as the value of a string argument in
23434         custom attributes constructors.
23435
23436 2002-08-27  Martin Baulig  <martin@gnome.org>
23437
23438         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
23439         `trampoline_address' field.
23440
23441 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
23442
23443         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
23444         check (fixes bug #29486) 
23445
23446 2002-08-27  Martin Baulig  <martin@gnome.org>
23447
23448         * debug-mono-symfile.c: Changed the file format in a way that allows us
23449         open it read-only and to use a specially malloced area for all the
23450         dynamic data.  We can now also generate a symbol file on-the-fly if we're
23451         debugging IL code and there is no MCS generated symbol file for it.
23452
23453 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23454
23455         * object.c: added a define for a good string and array
23456         creation speedup (not enabled by default because we need to deal with
23457         the synch stuff).
23458
23459 2002-08-26  Martin Baulig  <martin@gnome.org>
23460
23461         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
23462         function to create a dynamic symbol file.  This is used by the
23463         debugger to create a symbol file for IL code on-the-fly.
23464
23465 2002-08-26  Martin Baulig  <martin@gnome.org>
23466
23467         * loader.c (mono_lookup_pinvoke_call): Include the error message
23468         from g_module_error() in the error message.
23469
23470 2002-08-24  Martin Baulig  <martin@gnome.org>
23471
23472         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
23473         function to update the symbol file.  The symbol file is mmap()ed
23474         writable, but private.  This allows us to install the symbol file
23475         together with the assembly.
23476
23477 2002-08-24  Martin Baulig  <martin@gnome.org>
23478
23479         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
23480         but they can read the new symbol file format which mcs is now creating.
23481
23482         * debug-symfile.c (mono_debug_find_source_location): Moved to
23483         debug-mono-symfile.c; this is now operating on the new symbol file.
23484
23485 2002-08-23  Martin Baulig  <martin@gnome.org>
23486
23487         * debug-helpers.c (mono_method_desc_from_method): New function to get
23488         a MonoMethodDesc from a MonoMethod.
23489
23490 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23491
23492         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
23493         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
23494
23495 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
23496
23497         * string-icalls.[ch]: make helper methods static.
23498
23499 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23500
23501         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
23502         types to it and to SetValueInternal.
23503
23504         * object.c: Moved handle_enum label to its proper place. This was the
23505         f... bug! ;-)
23506
23507         This time i compiled mcs and gtk-sharp and they both work.
23508
23509 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23510
23511         * icall.c: reverted partially my previous patch until 
23512         object.c:set_value handles enums correcly.
23513
23514 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23515
23516         * icall.c:
23517         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
23518         (ves_icall_System_Environment_get_MachineName): removed warning when
23519         compiling under cygwin.
23520
23521 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23522
23523         * object.c: fixed field_get_value() for reference types.
23524
23525 2002-08-22  Dick Porter  <dick@ximian.com>
23526
23527         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
23528         Don't free a buffer while it's still needed.  Patch from Jonathan
23529         Liger <Jonathan.liger@wanadoo.fr>
23530
23531 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
23532
23533         * icall.c (ves_icall_System_Environment_get_Platform): Add new
23534         internal call.
23535
23536 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
23537
23538         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
23539         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
23540
23541         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
23542         we call unmanaged code which throws exceptions.
23543
23544 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23545
23546         * appdomain.h: added per-domain entry_assembly.
23547         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
23548         arguments.
23549         * icall.c: Assembly::GetEntryAssembly icall.
23550         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
23551         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
23552
23553 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23554
23555         * appdomain.h, gc.c: added mono_domain_finalize ().
23556
23557 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23558
23559         * object.c:
23560         (mono_print_unhandled_exception): changed g_warning by g_printerr
23561         because g_log has a 1024 characters limit (yeah, i got a big stack
23562         trace). Don't print exception name, that should be in ToString 
23563         returned string.
23564
23565 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23566
23567         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
23568         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
23569
23570 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23571
23572         * object.c:
23573         (mono_print_unhandled_exception): after previous commit, i realized
23574         that MS calls ToString on the exception. I changed this function to
23575         do that. This way we get stack_trace for free.
23576
23577 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23578
23579         * object.c:
23580         (mono_print_unhandled_exception): invoke Message property instead of
23581         getting 'message' field from Exception. Don't allocate memory for
23582         'trace' and 'message' if not needed.
23583
23584 2002-08-18  Dick Porter  <dick@ximian.com>
23585
23586         * unicode.c: Fix asserts to match Encoder.cs checks
23587
23588 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23589
23590         * marshal.c: fix unaligned store issue and a few wrong
23591         opcode argument types.
23592
23593 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23594
23595         * icall.c: added GetUninitializedObjectInternal internal call.
23596
23597 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
23598
23599         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
23600         to the right domain.
23601
23602 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
23603
23604         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
23605
23606         * class.c (class_compute_field_layout): set blittable to false for Strings
23607
23608         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
23609
23610 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23611
23612         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
23613         first chunk of code to create types at runtime. Code to
23614         handle ReflectedType/DeclaringType. Make reflection handles
23615         domain specific.
23616
23617 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
23618
23619         * class.c: set correct name in arrays.
23620
23621 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
23622
23623         * appdomain.c (mono_domain_transfer_object): make it work with
23624         valuetypes. bug fixes.
23625
23626 2002-08-12  Dick Porter  <dick@ximian.com>
23627
23628         * object.h: Rename some parameters to avoid c++ keywords (Patch
23629         from Joseph Wenninger <kde@jowenn.at>)
23630
23631 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
23632
23633         * icall.c: added icall to implement Assembly.GetFile*.
23634
23635 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23636
23637         * reflection.h, reflection.c: code to embed managed resources.
23638
23639 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23640
23641         * class.c: move all the type size stuff into
23642         class_compute_field_layout().
23643
23644 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23645
23646         * class.c: ensure enums have always the correct instance size.
23647         * unicode.c: remove wrong assert.
23648
23649 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23650
23651         * assembly.c: fix mem corruption issue.
23652         * image.h, image.c: added mono_image_get_resource () to access
23653         managed resources.
23654         * icall.c: implemented Assembly.EntryPoint property and some
23655         Managed Resources related internalcalls.
23656
23657
23658 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23659
23660         * image.c, image.h: impemented mono_image_get_entry_point ().
23661         * appdomain.c: use mono_image_get_entry_point.
23662
23663 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23664
23665         * reflection.c: support the object type argument when loading
23666         custom attributes.
23667
23668 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
23669
23670         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
23671         String as return type.
23672
23673 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
23674
23675         * reflection.c: fix encoding of named args for custom attrs to match
23676         the ms implementation. Read them back when instantiating custom
23677         attributes.
23678
23679 2002-08-02  Radek Doulik  <rodo@ximian.com>
23680
23681         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
23682         by Dietmar as quick fix
23683         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
23684         16 as stack size, used on more places as quick fix before Dietmar
23685         will fix it properly
23686
23687 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
23688
23689         * object.h, object.c: added accessors for fields and properties.
23690
23691 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
23692
23693         * class.c, class.h: made mono_class_get_field_from_name ()
23694         loop on parent types.
23695         Added mono_class_get_property_from_name ().
23696
23697 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23698
23699         * class.c, class.h: move the code to setup the type vtable in its own
23700         function so that it can be reused also for types created at runtime.
23701         Eliminate the "class" identifier from the header file.
23702         * reflection.c: setup the vtable for enums so that we can create
23703         objects for use in SetConstant ().
23704
23705 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
23706
23707         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
23708         instead of the delegate itself as this pointer (bug #28383)
23709
23710 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
23711
23712         * marshal.c (mono_marshal_get_managed_wrapper): added return type
23713         conversions.
23714
23715 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23716
23717         * loader.c: don't set the pinvoke bit on icalls.
23718
23719 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
23720
23721         * debug-helpers.c (mono_method_full_name): only print a number to
23722         indicate wrapper type (so that the output is more readable in traces).
23723
23724 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
23725
23726         * class.c (mono_class_init): include method override patch from Paolo
23727
23728 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
23729
23730         * icall.c: fixed GetTypeCode().
23731
23732 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
23733
23734         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
23735         use real delegate invoke function to make it work with multicast
23736         delegates (fix bug# 28291).
23737
23738 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23739
23740         * object.c: load constant strings.
23741
23742 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23743
23744         * reflection.c: no magic numbers.
23745         * tabledefs.h: security action enum.
23746
23747 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23748
23749         * assembly.c: fix possible memory corruption.
23750
23751 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23752
23753         * reflection.h, reflection.c: added support for linking resources.
23754         * verify.c: check we have an updated corlib.
23755
23756 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
23757
23758         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
23759         string arrays.
23760         (mono_marshal_string_array): null terminate unmanaged string arrays.
23761         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
23762
23763 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23764
23765         * icall.c: Type.GetType () can now return also types from the
23766         calling assembly.
23767
23768 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23769
23770         * loader.h, loader.c: stack walking support.
23771         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
23772         GetCallingAssembly.
23773
23774 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
23775
23776         * marshal.c: added optimisations for blittable types 
23777
23778         * class.c (mono_array_class_get): do not set blittable attribute on arrays
23779         (mono_class_setup_mono_type): set blittable attribute for single
23780         and double.
23781
23782         * marshal.c (mono_string_utf8_to_builder): impl.
23783         (mono_string_builder_to_utf8): impl.
23784         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
23785
23786 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
23787
23788         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
23789         (mono_marshal_get_managed_wrapper): impl. byref types
23790
23791 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23792
23793         * icall.c:
23794         (search_method): don't display debug message. 
23795
23796 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23797
23798         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
23799
23800 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
23801
23802         * appdomain.c: set the missing filename when throwing exception.
23803
23804 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
23805
23806         * metadata.c (mono_type_size): code cleanup
23807         (mono_type_stack_size): removed some test code
23808
23809 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
23810
23811         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
23812         mono_get_exception_file_not_found now.
23813
23814         * exception.c (mono_exception_from_name_two_strings): New version
23815         that will call a constructor with two string arguments. 
23816         (mono_get_exception_file_not_found): New helper routine, used to
23817         report file-not-found errors.
23818
23819 2002-07-20  Dick Porter  <dick@ximian.com>
23820
23821         * process.h:
23822         * process.c: Pass file handles to CreateProcess
23823         
23824         * icall.c:
23825         * file-io.h:
23826         * file-io.c: Implemented CreatePipe
23827
23828 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23829
23830         * metadata.c (mono_get_param_info): set alignment for value types
23831
23832 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23833
23834         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
23835         Constify mono_domain_assembly_open().
23836         * loader.c: handle null namespace in icalls.
23837
23838 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
23839
23840         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
23841         (emit_str_to_ptr_conv): marshal object as structs
23842
23843         * metadata.c (mono_type_to_unmanaged): marshal object as structs
23844
23845         * marshal.c (mono_marshal_get_runtime_invoke): support value types
23846
23847 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
23848
23849         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
23850         (mono_marshal_get_native_wrapper): we an now return value types
23851
23852 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23853
23854         * verify.c: more checks implemented.
23855
23856 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
23857
23858         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
23859         (fix bug #27695)
23860         (mono_marshal_get_native_wrapper): allow byref arguments
23861         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
23862         impl. PtrToStringXXX methods
23863         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
23864         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
23865         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
23866         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
23867         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
23868
23869 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23870
23871         * reflection.c: fix buglet in parsing an assembly name.
23872
23873 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
23874
23875         * marshal.c (emit_ptr_to_str_conv): first impl.
23876
23877 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23878
23879         * object.c, class.h: cache the vtable in the class as suggested by
23880         vargaz@freemail.hu (Zoltan Varga).
23881
23882 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23883
23884         * class.h, loader.c: added mono_field_from_token().
23885         * verify.c: first cut of type checking code.
23886
23887 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
23888
23889         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
23890
23891 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
23892
23893         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
23894         (fix bug #27782)
23895         (mono_marshal_get_remoting_invoke): impl.
23896         (mono_delegate_begin_invoke): impl.
23897         (mono_mb_emit_save_args): impl.
23898         (mono_delegate_end_invoke): impl.
23899         (mono_marshal_get_delegate_begin_invoke):
23900         (mono_marshal_get_delegate_end_invoke):
23901         (mono_marshal_get_delegate_invoke): generate a special name for
23902         those methods (including the signature) and associate them whith
23903         the delegate class. 
23904
23905 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
23906
23907         * reflection.[ch]: 
23908         (mono_reflection_type_from_name): now it has a MonoImage parameter
23909         which is used as the default image to search the type in. If the image
23910         is NULL or getting the type from it fails, it defaults to corlib.
23911
23912         * icall.c: changed 1 call to mono_reflection_type_from_name to match
23913         new parameter.
23914
23915 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23916
23917         * reflection.c: update the parameter table index.
23918
23919 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23920
23921         * domain.c: don't include the mark byte in the string hash.
23922
23923 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23924
23925         * icall.cs: icall for Type.GetTypeCode ().
23926         * verify: a couple of fixes and disabled local initialization checks.
23927
23928 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
23929
23930         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
23931
23932         * debug-helpers.c (mono_method_full_name): print the type of the
23933         runtime wrapper
23934
23935         * metadata.c (mono_signature_hash): a hash function for signatures
23936         (mono_signature_hash): better hash algorithm
23937
23938         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
23939
23940         * debug-helpers.c (mono_method_full_name): this can now generate
23941         method names with signatures
23942
23943         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
23944         method dont have this pointers.
23945
23946 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23947
23948         * reflection.c: fixup typebuilder tokens.
23949         * image.c: fix buglet.
23950         * marshal.h: remove whitespace.
23951         * metadata.h, metadata.c: reinstate code that was removed.
23952         * verify.c: handle catch directives and fix another couple of bugs.
23953
23954 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
23955
23956         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
23957         (mono_marshal_get_native_wrapper): make it comp. with the old code
23958         (mono_marshal_get_native_wrapper): support boolean
23959         (mono_marshal_get_managed_wrapper): support more types
23960
23961 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
23962
23963         * class.c (class_compute_field_layout): compute class->blittable attribute.
23964
23965 2002-07-09  Dick Porter  <dick@ximian.com>
23966
23967         * threads.c: Make the thread cleaning up cope with threads that
23968         call ExitThread()
23969
23970 2002-07-08  Radek Doulik  <rodo@ximian.com>
23971
23972         * reflection.c (method_encode_code): use non-translated values to
23973         compute finally_start, this fixes exception handling on ppc, yay!
23974
23975         * decimal.h (struct signscale): fix endianess
23976
23977 2002-07-07  Radek Doulik  <rodo@ximian.com>
23978
23979         * reflection.c: swap box_val and not val
23980
23981 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
23982
23983         * reflection.c, reflection.h: handle full assembly info in type name.
23984         Handle Type arguments when loading custom attributes.
23985         * icall.c: updated to use new mono_reflection_type_from_name () method.
23986
23987 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23988
23989         * loader.c:
23990         (method_from_memberref): also print assembly name when method not found.
23991
23992 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23993
23994         * icall.c:
23995         (ves_icall_TypeGetProperties): fixed bug #27473. 
23996
23997 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23998
23999         * reflection.c: display image name and token when cannot find the
24000         .ctor for an attribute.
24001
24002 2002-07-05  Martin Baulig  <martin@gnome.org>
24003
24004         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24005
24006 2002-07-04  Dick Porter  <dick@ximian.com>
24007
24008         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
24009         compile on mingw.  This will cause mingw builds to not wait for
24010         subthreads to terminate after the main thread does.  I've lodged a
24011         bug with the mingw developers for them to wrap OpenThread().
24012
24013 2002-07-03  Dick Porter  <dick@ximian.com>
24014
24015         * threads.c: Store thread IDs instead of handles, because
24016         GetCurrentThread() returns a pseudohandle and therefore stores
24017         useless values.  mono_thread_cleanup() continues checking the
24018         array of threads until it is empty, to cope with subthreads
24019         spawning new threads after the main thread has finished.
24020
24021         * profiler.h:
24022         * profiler.c:
24023         * profiler-private.h: Pass the thread ID to thread profiler
24024         functions, instead of a handle
24025
24026 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24027
24028         * verify.c: fixes to make it more usable.
24029         * pedump.c: added --verify code to verify IL code in an assembly.
24030
24031 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24032
24033         * reflection.c: turn errors into warnings to allow compiling corlib.
24034
24035 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24036
24037         * reflection.c: add special cases to compile corlib.
24038
24039 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24040
24041         * reflection.c: handle properties with only a set method.
24042
24043 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24044
24045         * opcodes.h: add enum with opcodes in opval order.
24046
24047 2002-07-01  Dick Porter  <dick@ximian.com>
24048         
24049         * object.h:
24050         * object.c (mono_runtime_run_main): Removed unneeded argument
24051
24052 2002-06-28  Martin Baulig  <martin@gnome.org>
24053
24054         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
24055
24056 2002-06-27  Dick Porter  <dick@ximian.com>
24057
24058         * threads.c: Store the handle in both the parent thread and in the
24059         subthread, to minimise the time between starting a new thread and
24060         storing its ID.
24061
24062 2002-06-26  Dick Porter  <dick@ximian.com>
24063
24064         * appdomain.c (mono_runtime_cleanup): Close the socket library
24065         after all the threads have finished, not before
24066
24067 2002-06-26  Martin Baulig  <martin@gnome.org>
24068
24069         * debug-symfile.c (mono_debug_find_source_location): Added
24070         `guint32 *line_number' argument.  If it's not NULL, store the line number
24071         there and return the file name without the line number.
24072
24073 2002-06-25  Dick Porter  <dick@ximian.com>
24074
24075         * icall.c:
24076         * process.h:
24077         * process.c: Process forking and other support functions
24078
24079 2002-06-25  Dick Porter  <dick@ximian.com>
24080
24081         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
24082         things dont happen when the image is closed.
24083         (mono_image_lookup_resource): Walk the resource section looking
24084         for a particular entry
24085
24086         * cil-coff.h: PE resource section decoding
24087
24088 2002-06-25  Dick Porter  <dick@ximian.com>
24089         
24090         * assembly.h:
24091         * assembly.c: 
24092         (mono_assembly_foreach): Accessor functions to walk the list of
24093         loaded assemblies
24094         (mono_assembly_set_main):
24095         (mono_assembly_get_main): Process methods need to know which
24096         assembly is the "main" one
24097
24098         * object.c (mono_runtime_run_main): Record the main assembly
24099
24100         * debug-helpers.c: Fix typo
24101
24102 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
24103
24104         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
24105         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
24106
24107 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24108
24109         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
24110
24111 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
24112
24113         * image.c (do_mono_image_open): Initialize reference count,
24114         otherwise we leak the MonoImage.
24115
24116 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24117
24118         * reflection.c: small tweak to handle self-hosting.
24119
24120 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24121
24122         * reflection.c: fix type name parse code.
24123
24124 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24125
24126         * reflection.c: break out of the loop.
24127         * image.c: special case corlib.
24128
24129 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24130
24131         * reflection.c: add all the custom attrs at the end to ensure the
24132         ctors have been properly initialized when the attributes are defined
24133         in the current assembly.
24134
24135 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24136
24137         * reflection.c: handle correctly multiple-nested types.
24138
24139 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24140
24141         * row-indexes.h: fix typos.
24142         * reflection.c: adjust for typos and fix method_def_or_ref
24143         encoding in MethodImpl table.
24144
24145 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24146
24147         * reflection.c: fix entry point patching (thanks Serge!).
24148
24149 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
24150
24151         * verify.c: add check for System.Exception
24152
24153 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24154
24155         * image.c, class.c: minifix for code just c&p'ed.
24156         * reflection.c: warning fix.
24157         * object.h, loader.h, domain.c: load also StringBuilder.
24158
24159 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24160
24161         * marshal.h, marshal.c: some support code to handle complex marshaling.
24162
24163 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24164
24165         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
24166         Better signatures with vtable error dump.
24167
24168 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
24169
24170         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
24171
24172 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
24173
24174         * icall.c (ves_icall_Type_GetField): impl.
24175
24176 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24177
24178         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
24179         to retrieve a marshal description blob for a field or param.
24180
24181 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24182
24183         * reflection.h, reflection.c: change order of nested type emission
24184         to avoid table corruption. The NestedTypes table is sorted.
24185         * icall.c: change order of GetConstructor results to workaround mcs bug.
24186
24187 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24188
24189         * reflection.h, reflection.c: handle field and param marshal
24190         information.
24191
24192 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24193
24194         * icall.c, marshal.c marshal.h: more Marshal class implementation.
24195
24196 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24197
24198         * reflection.c: fix call convention.
24199
24200 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24201
24202         * reflection.h, reflection.c: mono_image_get_memberref_token()
24203         takes a type instead of a class, now. Added
24204         mono_image_get_array_token() to create tokens for the special
24205         multi-dim array methods.
24206
24207 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24208
24209         * assembly.c: handle modules (no assembly table). Split
24210         loading references in its own function.
24211         * class.c: handle moduleref resolution scope.
24212         * image.c, image.h: cache module name in image.
24213
24214 2002-06-07  Martin Baulig  <martin@gnome.org>
24215
24216         * reflection.c (mono_image_get_type_info): Only add a class layout entry
24217         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
24218
24219 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24220
24221         * icall.c: more signature fixes that used uint instead of int.
24222
24223 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24224
24225         * reflection.c: fixed signature of field refs.
24226
24227 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24228
24229         * class.c, reflection.c: handle typerefs of nested types
24230         (both on read and when writing files).
24231
24232 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24233
24234         * icall.c: fix method signatures that tried to workaround the previous
24235         typo, d'oh!
24236
24237 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24238
24239         * debug-helpers.c: fix typo.
24240
24241 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24242
24243         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
24244         rewrote the PE/COFF writing code (our programs are understood by the
24245         ms runtime, now).
24246
24247 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24248
24249         * gc.c, gc.h, icall.c: weakreference support.
24250
24251 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24252
24253         * Makefile.am, mono-config.c: use $(sysconfdir).
24254
24255 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24256
24257         * icall.c: changed default precision of Double.ToString() to 15.
24258         Fixed memory leak. Unified with Single.ToString.
24259
24260 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24261
24262         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
24263
24264 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24265
24266         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
24267         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
24268         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
24269         and myself.
24270
24271 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24272
24273         * debug-symfile.c, sysmath.c: yet more compilation fixes.
24274
24275 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24276
24277         * reflection.c, socket-io.c: more compilation fixes.
24278
24279 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24280
24281         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
24282         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
24283         unicode.c: warning and compiler compatibility fixes.
24284
24285 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24286
24287         * class.h, metadata.c: fixed warnings/compilation errors.
24288
24289 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
24290
24291         * Makefile.am, mono-config.c, mono-config.h: configuration file
24292         support routines.
24293         * loader.c, loader.h: make Dll mapping configurable at runtime in the
24294         config file. Export methods to insert and lookup mappings.
24295
24296 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24297
24298         * reflection.c: handle types and boxed objects in custom attr
24299         constructors.
24300
24301 2002-05-30  Martin Baulig  <martin@gnome.org>
24302
24303         * debug-symfile.c
24304         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
24305
24306 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
24307
24308         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
24309         to lookup the implmap row for a P/Invoke method.
24310         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
24311         P/Invoke method from the runtime on an as needed basis.
24312
24313 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
24314
24315         * metadata.c (mono_metadata_parse_signature): impl.
24316
24317 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24318
24319         * class.c: handle .pack directive.
24320
24321 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24322
24323         * object.c: initialize static fields with RVA data.
24324
24325 2002-05-25  Martin Baulig  <martin@gnome.org>
24326
24327         * debug-symfile.c
24328         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
24329
24330 2002-05-24  Martin Baulig  <martin@gnome.org>
24331
24332         * debug-symfile.c
24333         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
24334         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
24335         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
24336
24337 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24338
24339         * object.c: special case string ctros in invoke.
24340         * gc.c: silly whitespace changes.
24341
24342 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
24343
24344         * threadpool.[ch]: impl. a threadpool that can
24345         be used by mint and mono.
24346
24347 2002-05-22  Martin Baulig  <martin@gnome.org>
24348
24349         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
24350         The first argument is now a `MonoReflectionModuleBuilder *', the return
24351         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
24352         `methods' field to get the method builder.  The `token' argument is the
24353         unfixed token.
24354
24355         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
24356         invalid characters instead of g_assert_not_reached()ing.  This seems
24357         to be the behaviour of mscorlib.
24358
24359 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
24360
24361         * object.c (mono_runtime_invoke_array): applied patch from Rachel
24362         Hestilow to fix bug #25104
24363
24364 2002-05-21  Martin Baulig  <martin@gnome.org>
24365
24366         * debug-symfile.c (mono_debug_find_source_location): New function.
24367         Looks up an IL offset in the line number table and returns the source
24368         location as a string.
24369
24370 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24371
24372         * icall.c:
24373         (mono_double_ToStringImpl): changed %f by %g until we have something
24374         better.
24375
24376 2002-05-21  Nick Drochak  <ndrochak@gol.com>
24377
24378         * icall.c : Use different name for Math.Pow's icall.  Needed to check
24379         parameters first in C#.
24380
24381 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24382
24383         * icall.c, reflection.h: added icall to get info about an event.
24384
24385 2002-05-20  Radek Doulik  <rodo@ximian.com>
24386
24387         * object.c (mono_value_box): don't use memcpy for boxing on BIG
24388         endian
24389         (mono_value_box): don't use memcpy for small sizes on
24390         architectures with unaligned access
24391
24392 2002-05-20  Martin Baulig  <martin@gnome.org>
24393
24394         * reflection.c (mono_reflection_setup_internal_class): Don't crash
24395         if `tb->parent == NULL'.
24396         (mono_reflection_create_internal_class): New function.  This is
24397         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
24398         for enum types.
24399
24400         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
24401         New interncall.
24402
24403 2002-05-19  Martin Baulig  <martin@gnome.org>
24404
24405         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
24406         argument to get the length, don't default to the array length.
24407
24408 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
24409
24410         * assembly.c (mono_assembly_setrootdir): New function used to
24411         override the MONO_ASSEMBLIES directory.
24412
24413 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24414
24415         * icall.c: ValueType_GetHashCode() initialize local var.
24416
24417 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24418
24419         * reflection.c: sort custom attributes table.
24420
24421 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24422
24423         * reflection.c: support named args in custom attributes (write support).
24424
24425 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
24426
24427         * reflection.c: fix finally position calculation.
24428
24429 2002-05-15  Radek Doulik  <rodo@ximian.com>
24430
24431         * reflection.c: fixed endianess at many places
24432
24433         * icall.c (ves_icall_InitializeArray): comment out debug msg
24434
24435 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
24436
24437         * object.c (mono_unhandled_exception): new function to handle
24438         unhandled exceptions.
24439         (mono_unhandled_exception): call the UnhandledException event.
24440         (mono_runtime_delegate_invoke): impl.
24441
24442 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
24443
24444         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
24445         returns the RVA, not the direct pointer to the data. Handle the case
24446         when the class size is fixed.
24447
24448 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24449
24450         * reflection.c: fix some endianess issues.
24451
24452 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
24453
24454         * object.c (mono_runtime_invoke): is now able to catch exceptions.
24455
24456         * threads.c (mono_thread_init): added a callback which is invoked
24457         at thread start.
24458
24459 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24460         
24461         * icall.c: make GetHashCode return non-negative values.
24462
24463 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
24464
24465         * object.c, icall.c, gc.c: revert to address-based hashcode.
24466
24467 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
24468
24469         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
24470
24471 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24472
24473         * icall.c, class.c: special case <Module>.
24474
24475 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
24476
24477         * icall.c: fix bug in GetNow().
24478
24479 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
24480
24481         * object.c (mono_runtime_class_init): make sure that we call all
24482         static class constructors.
24483
24484 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24485
24486         * reflection.c: sort methodsemantics table.
24487
24488 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24489
24490         * reflection.h, reflection.c: honour init locals setting.
24491
24492 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
24493
24494         * icall.c: copied Double ToStringImpl for Single ToStringImpl
24495
24496 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24497
24498         * reflection.c: support ContructorBuilders in attribute blob creation.
24499
24500 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24501
24502         * reflection.c: some changes to build a binary that can be run
24503         directly in windows.
24504
24505 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24506
24507         * loader.c: print a big message when an icall can't be found.
24508
24509 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24510
24511         * string-icalls.c: fix bug 24248.
24512
24513 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24514
24515         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
24516         icall.c, reflection.h: separate assembly loading by pathname and by
24517         assembly name. Use the MONO_PATH env var to search for assemblies.
24518
24519 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24520
24521         * assembly.c, image.h: add some support for assemblies
24522         with multiple modules.
24523         * class.c, class.h: export mono_class_from_typeref().
24524         * loader.c: remove duplicated code and use mono_class_from_typeref(),
24525         instead.
24526
24527 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24528
24529         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
24530         documentation says (the ECMA one is correct).
24531
24532 2002-05-02  Dick Porter  <dick@ximian.com>
24533
24534         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
24535         Don't name the synchronisation mutex.
24536
24537 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
24538
24539         * rand.c
24540         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
24541         Make the prototypes match.
24542         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
24543         Same.
24544
24545         * icall.c
24546         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
24547         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
24548         all systems have tm.tm_zone, so use strftime() with %Z to print
24549         the timezone abreviation into a temp string.
24550
24551         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
24552         rather than mono_array_addr() on a MonoString on Big Endian
24553         machines.
24554
24555 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
24556
24557         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
24558         fix bug 24041
24559
24560 2002-04-30  Dick Porter  <dick@ximian.com>
24561
24562         * socket-io.c: Cope with SOCKET being an integer rather than a
24563         pointer now.
24564
24565         * threads.c: Added Thread_free_internal, to deal with thread
24566         handle cleanup.  Moved calls to handle_store() and handle_remove()
24567         to start_wrapper(), so each can only be called once.  Allocate
24568         synchronisation blocks with GC_malloc(), and use GC finalisation
24569         to close the handles.
24570
24571         * icall.c: added System.Threading.Thread::Thread_free_internal
24572
24573 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24574
24575         * icall.c: support Environment.Exit, CommandLineArgs().
24576
24577 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24578
24579         * object.c, object.h: added mono_runtime_run_main () and
24580         mono_runtime_get_main_args () for use in System.Environment.
24581
24582 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24583
24584         * gc.c: fix thinko, enable actual finalization since the jit is now
24585         fixed.
24586
24587 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24588
24589         * gc.c, object.c: take into account that an object may be offset wrt the address
24590         returned by GC_malloc().
24591
24592 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
24593
24594         * image.c: handle files without entries in the assembly table (modules).
24595
24596 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
24597
24598         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
24599         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
24600         allowed to be null when it's System.Object class setup.
24601
24602 2002-04-27  Martin Baulig  <martin@gnome.org>
24603
24604         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
24605         if `tb->parent == NULL' rather than crashing.
24606
24607 2002-04-28  Nick Drochak  <ndrochak@gol.com>
24608
24609         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
24610         calling acos() where asin() should have been called.
24611
24612 2002-04-26  Martin Baulig  <martin@gnome.org>
24613
24614         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
24615         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
24616         there's a subdirectory called `System', but we don't want to read that
24617         subdirectory as an assembly.
24618
24619 2002-04-25  Martin Baulig  <martin@gnome.org>
24620
24621         * debug-symfile.c: Reflect latest MonoString changes.
24622
24623 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24624
24625         * rand.c, rand.h: instance method icalls need to have an explicit
24626         this pointer as first argument in the C implementation.
24627
24628 2002-04-25  Nick Drochak <ndrochak@gol.com>
24629
24630         * icall.c: Fix typo in map for GetNonZeroBytes
24631
24632 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24633
24634         * string-icalls.c : String does now passes unit tests without any 
24635         errors, the following changes has been made:
24636         
24637         Implemented replace methods.
24638         Renaming of methods to (try) follow the standard.
24639         Fixed compare ordinal
24640         Made all memory allocated directly to function instead of via icall function.
24641         Small performance fix in is_in_array function
24642                         
24643  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
24644
24645         c (mono_string_Internal_ctor_charp_int_int):
24646         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
24647         sindex < 0, throw ArgumentOutOfRangeException instead of
24648         ArgumentNullException.
24649
24650         Added new check for length == 0, however
24651         I need to make it return String.Empty from the C code.
24652         
24653         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
24654         that calculate the length for us here.
24655         
24656         (mono_string_Internal_ctor_sbytep_int_int): Replaced
24657         mono_string_new_utf16 with mono_string_new, since value is utf8.
24658
24659 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24660
24661         * object.c: register the object for finalization if needed.
24662         Allocate one more char in the string for the terminating 0 char.
24663
24664 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24665
24666         * class.c, class.h, image.c: check if a type implemenst a destructor.
24667         Use the proper key for array class lookups.
24668         * icall.c: register the icalls in the System.GC class.
24669         * gc.c, gc.h: GC-related functions and icalls.
24670
24671 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24672
24673         * icall.c:
24674         * socket-io.c:
24675         * unicode.c: free some strings gotten from mono_string_to_utf8 and
24676         changed a couple of free () by g_free ().
24677
24678         * decimal.c: one-liner in the comments for decimal2string ().
24679
24680 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24681
24682         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
24683
24684 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
24685
24686         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
24687         * object.c (mono_runtime_invoke_array) : handle null in params
24688
24689 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24690
24691         * string-icalls.c: fixed bug in split (one off bug)
24692
24693 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24694
24695         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
24696         * icalls.c: added String::Equals as internal method
24697
24698 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
24699
24700         * threads.c: fixed bug in the double interlocked functions
24701
24702 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
24703
24704         * threads.c: implemented all of the new interlocked icalls.
24705         * string-icalls.c: fix a bug in insert.
24706         * icalls.c: added the icalls for interlocked, removed old string functions.
24707         
24708 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24709
24710         * loader.c: fix off-by-one error when reading argument names.
24711
24712 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24713
24714         * profiler.c: win32 counter implementation (untested).
24715         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
24716         (the latter needs testing and more complete impl. from win32 folks).
24717
24718 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
24719
24720         * object.c: mono_array_new_full workaround mono_array_class_get
24721         problem.
24722
24723 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24724
24725         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
24726         * object.h (mono_string_chars): Changed casting type.
24727
24728 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24729
24730         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
24731                            method signatures to use gunichar2 instead of gint16.
24732
24733 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
24734
24735         * object.h, object.c: domain-specific versions of mono_object_new and
24736         mono_array_new.
24737
24738 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
24739
24740         * object.c: changed String layout
24741
24742         * string-icalls.c (mono_string_Internal_ctor_chara): added
24743         internal string constructors.
24744
24745 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
24746
24747         * threads.c: pass 'this' to the thread start routine.
24748
24749 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24750
24751         * string-icalls.c: fix IndexOf and LastIndexOf. Now
24752         InternalCompareStr don't call twice mono_string_cmp_char for the last
24753         character. Improved performance in mono_string_cmp_char.
24754
24755 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24756
24757         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
24758         code into its own library: libmonoruntime.
24759
24760 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
24761
24762         * object.h, object.c: changed array format so that szarrays do not
24763         require a bounds structure.
24764         * icall.c, appdomain.c: support for new szarray format.
24765
24766 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
24767
24768         * metadata.c: compare also the retuns type when comparing signatures:
24769         we didn't do this as an optimization since really overloaded methods
24770         must differ also in the arguments, but this doesn't work with
24771         low-level IL code (or when using explicit conversion operators: see
24772         bug#23498 for an example).
24773
24774 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24775
24776         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
24777
24778 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24779
24780         * icall.c: make MonoType::GetElementType its own icall.
24781
24782 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
24783
24784         * icall.c: remove MonoMethod_get_Name().
24785         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
24786         object.
24787
24788 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24789
24790         * string-icalls.c: optimized a few methods.
24791
24792 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
24793
24794         * icall.c: added all new string internal calls
24795         * string-icalls.c: added, new string internal call implementation.
24796         * object.c: added mono_string_new_size for allocating a string a size
24797
24798 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
24799
24800         * object.c (mono_object_isinst): use the same code as in the
24801         optimized x86 version.
24802
24803 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24804
24805         * profiler.c: TSC-based timer code (faster and more accurate).
24806         Not hooked up in configure, yet (set USE_X86TSC to 1).
24807
24808 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
24809
24810         * profiler.c, profiler.h: track time spent compiling methods.
24811         * threads.c: track thread creation/destruction.
24812
24813 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
24814
24815         * profiler.c, profiler.h, profiler-private.h: profiling interface
24816         and sample implementation. Moved here so that it can be used also by
24817         the jit.
24818
24819 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
24820
24821         * reflection.c, reflection.h: keep types and other handles separate in
24822         the hash tables for referred tokens. Add guid for modules.
24823
24824 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24825
24826         * assembly.c: fix bugs found with valgrind.
24827         * metadata.h, metadata.c: added mono_metadata_guid_heap().
24828
24829 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
24830
24831         * threads: added icall support for getting current domain for
24832                    the thread.
24833  
24834 2002-04-13  Martin Baulig  <martin@gnome.org>
24835
24836         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
24837         (MonoDebugVarInfo): Added `index' field for register based addresses.
24838         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
24839         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
24840         `MonoDebugVarInfo *params' and `guint32 this_offset' with
24841         `MonoDebugVarInfo *this_var'.
24842
24843         * debug-symfile.c (relocate_variable): New static function to write
24844         a location description for a local variable or method parameter.
24845
24846 2002-04-12  Martin Baulig  <martin@gnome.org>
24847
24848         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
24849         stack offset and begin/end scope address of a local variable.
24850         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
24851         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
24852         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
24853
24854         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
24855         Added new relocation types for start/end scope of a local variable.
24856
24857 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24858
24859         * object.h: add mono_object_domain() macro.
24860         * reflection.c: handle typespecs.
24861         * icall.c: MonoMethod::get_Name() implementation.
24862
24863 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24864
24865         * icall.c: String::GetHashCode() icall implementation.
24866
24867 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24868
24869         * icall.c: String::IndexOfAny icall.
24870         * object.c, object.h: make array->max_length more useful.
24871         Intrduced mono_object_class() and mono_string_length() macros.
24872
24873 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24874
24875         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
24876         instead of g_unichar_isdigit.
24877
24878 2002-04-11  Nick Drochak  <ndrochak@gol.com>
24879
24880         * icall.c: Implement a simple Double.ToString().
24881
24882 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24883
24884         * appdomain.h: only io-layer.h is supposed to be included.
24885         * icall.c: explicitly import environ. Fix warning.
24886
24887 2002-04-10  Nick Drochak  <ndrochak@gol.com>
24888
24889         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
24890                 return true even if it's not Daylight Savings time.
24891                 Only return false for the case where the function isn't
24892                 implemented for a plaform (read Windows).
24893
24894 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24895
24896         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
24897         data with a mutex.
24898
24899 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
24900
24901         * mempool.c (mono_mempool_alloc): only use g_malloc when
24902         absolutely necessary.
24903
24904 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
24905
24906         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
24907
24908         * class.c (mono_class_vtable): use domain mempool to allocate vtable
24909         (mono_class_proxy_vtable): use domain mempool
24910
24911 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24912
24913         * appdomain.h, appdomain.c: split initialization that requires the
24914         execution engine support into mono_runtime_init().
24915
24916 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
24917
24918         * class.c (mono_class_init): don't include vtable inside MonoClass
24919         to save some memory, gather some statistics.
24920         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
24921
24922 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24923
24924         * icall.c: internalcall implementation for ValueType.Equals().
24925
24926 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
24927
24928         * object.c (mono_message_init): moved 
24929         (mono_runtime_exec_main): new arch. independent impl.
24930         (mono_runtime_invoke_array): new method - like
24931         mono_runtime_invoke, but you can pass an array of objects.
24932         (mono_remoting_invoke): new arch. independent impl.
24933         (mono_message_invoke): new arch. independent impl.
24934         (mono_runtime_class_init): new arch. independent impl.
24935         (mono_runtime_object_init): new arch. independent impl.
24936
24937 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24938
24939         * metadata.c, object.c, reflection.c: documented the exported
24940         functions.
24941
24942 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
24943
24944         * icall.c: simpler code to pass the assembly builder data to corlib.
24945         Implement GetNestedTypes() internalcall.
24946
24947 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24948
24949         * class.c: warn if a type can't be loaded.
24950
24951 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
24952
24953         * image.h: typedef MonoImageOpenStatus
24954         * types.h: removed unused file
24955         
24956 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
24957
24958         * icall.c: Enum_ToObject accepts enum value arguments.
24959
24960 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24961
24962         * class.c: move initialization of properties, events and nested
24963         classes, so that they happen for interfaces, too.
24964
24965 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24966
24967         * icall.c: cleanup some ugly casts in Array_SetValue*.
24968
24969 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24970
24971         * icall.c: the values array fro enums is of the correct type, now.
24972         Implement (correctly) getFullName instead of assQualifiedName for
24973         MonoType.
24974         * reflection.h, reflection.c: added mono_type_get_name ().
24975
24976 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24977
24978         * assembly.c, image.h: for each MonoImage, record from wich assembly
24979         it was loaded.
24980         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
24981         Make Type.Assembly work.
24982
24983 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
24984
24985         * debug-symfile.h: use char* instead of gpointer to avoid
24986         unnecessary casts.
24987
24988         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
24989
24990         * icall.c (ves_icall_InternalExecute): impl. FielSetter
24991         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
24992
24993 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
24994
24995         * icall.c (mono_message_init): impl. (code cleanup)
24996         (ves_icall_InternalExecute): impl. FieldGetter
24997
24998         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
24999         defined we call all (non-static)methods through the vtable. 
25000
25001 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
25002
25003         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
25004         finalizer even though the memory is still referenced (and the chunk of
25005         memory is not freed).
25006
25007 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25008
25009         * assembly.c: fix brokeness.
25010
25011 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
25012
25013         * class.c: kill some warnings. Check explicit interface method
25014         implementation also without considering the namespace.
25015         Load also literal strings in static class data.
25016
25017 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
25018
25019         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
25020         (default_assembly_name_resolver): Make the resolver take the
25021         "base" directory where the assembly was originally defined, so we
25022         can load DLLs that are in the same directory as the assembly that
25023         is being referenced.
25024
25025 2002-03-28  Dick Porter  <dick@ximian.com>
25026
25027         * file-io.h: 
25028         * file-io.c:
25029         * socket-io.c: 
25030         * unicode.h: 
25031         * unicode.c: Warning cleanups
25032
25033 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
25034
25035         * object.h, reflection.h: use the correct type instead of MonoObject.
25036
25037 2002-03-28  Martin Baulig  <martin@gnome.org>
25038
25039         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
25040         (mono_debug_update_symbol_file): Initialize classes if necessary.
25041
25042 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25043
25044         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
25045         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
25046
25047 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
25048
25049         * assembly.h: fix function prototype.
25050         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
25051         * mono-endian.h: use const cast.
25052
25053 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25054
25055         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
25056
25057 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25058
25059         * loader.c: don't assert when a typeref can't be loaded, give
25060         a chance to the runtime to trow an exception instead.
25061         * loader.h: fix warning.
25062
25063 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
25064
25065         * class.c (mono_class_proxy_vtable): added proxy support
25066
25067 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
25068
25069         * icall.c: removed last of PAL calls, added System.Environment
25070         * file-io.h, file-io.c: MonoIO implementation
25071         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
25072
25073 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25074
25075         * appdomain.c: do not use the byte marker in ldstr table lookup.
25076         * debug-helpers.c: allow two ':' to separate class and method name.
25077         * object.c: allocate arrays bounds with the GC, too.
25078         * verify: add a few more checks.
25079
25080 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
25081
25082         * reflection.c: output also literal strings. Allocate parameter data
25083         with GC_malloc() (thanks, Martin, for catching this!).
25084
25085 2002-03-26  Martin Baulig  <martin@gnome.org>
25086
25087         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
25088         include the `this' offset in the `param_offsets'.
25089
25090 2002-03-25  Martin Baulig  <martin@gnome.org>
25091
25092         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
25093         mono_debug_get_class() function to get the classes. Added new
25094         relocation types for arrays and strings.
25095         (mono_debug_get_class): New static function to search in all
25096         referenced assemblies for a metadata token.
25097
25098         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
25099
25100 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25101
25102         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
25103         hold gc-allocated objects. Make the string heap a stream like the
25104         others. Removed duplicated code when writing stream info.
25105         Added asserts to catch possible buffer overflows. Set the sorted map
25106         for tables that need sorting. Added some documentation.
25107
25108 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
25109
25110         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
25111         for interned strings and vtables.
25112
25113 2002-03-24  Martin Baulig  <martin@gnome.org>
25114
25115         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
25116         it in the array since it was created with g_slist_prepend().
25117
25118 2002-03-24  Martin Baulig  <martin@gnome.org>
25119
25120         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
25121         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
25122         (mono_debug_method_from_token): Renamed to
25123         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
25124         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
25125
25126         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
25127         relocation types.
25128
25129         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
25130
25131 2002-03-24  Martin Baulig  <martin@gnome.org>
25132
25133         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
25134         (mono_debug_method_from_token): New func.
25135
25136         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
25137         New interncall, calls mono_debug_local_type_from_signature().
25138         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
25139         calls mono_debug_method_from_token().
25140
25141 2002-03-23  Martin Baulig  <martin@gnome.org>
25142
25143         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
25144         specifies the number of bytes to be converted, not the array size.
25145         Return the number of chars, not the number of bytes.
25146         (ves_icall_iconv_get_chars): The `byteCount' argument
25147         specifies the number of bytes to be converted, not the array size.
25148
25149 2002-03-23  Martin Baulig  <martin@gnome.org>
25150
25151         * reflection.h (MonoReflectionSigHelper): New type.
25152
25153         * reflection.c (mono_reflection_sighelper_get_signature_local),
25154         (mono_reflection_sighelper_get_signature_local): New functions.
25155
25156         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
25157         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
25158         interncalls.
25159
25160 2002-03-23  Martin Baulig  <martin@gnome.org>
25161
25162         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
25163         is_writeable is set.
25164         (mono_raw_buffer_update): New function to write the modified map
25165         back to disk.
25166
25167         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
25168
25169         * debug-symfile.c (mono_debug_update_symbol_file): Call
25170         mono_raw_buffer_update() when done writing.
25171
25172 2002-03-23  Martin Baulig  <martin@gnome.org>
25173
25174         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
25175
25176         * debug-symfile.c: Added support for arguments and local variables.
25177
25178 2002-03-23  Dick Porter  <dick@ximian.com>
25179
25180         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
25181         protected by ifdefs, hence breaking the w32 build.
25182
25183 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25184
25185         * object.c: implement is_interned() the right way.
25186
25187 2002-03-21  Martin Baulig  <martin@gnome.org>
25188
25189         * debug-symfile.[ch]: New files to handle debugging information
25190         files. There's also support to dynamically update these symbol
25191         files to include machine dependent information.
25192
25193 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
25194
25195         * threads.c (mono_thread_create): new function to create thread
25196         from C
25197
25198 2002-03-20  Martin Baulig  <martin@gnome.org>
25199
25200         * icall.c (ves_icall_InternalInvoke): Create a new object if the
25201         method is a constructor.
25202         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
25203         points to ves_icall_InternalInvoke().
25204
25205 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
25206
25207         * file-io.c: Flush shouldn't throw exceptions.
25208
25209 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
25210
25211         * file-io.c: FileStream flush support; FileSetLength now
25212         restores file pointer.
25213
25214 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25215
25216         * class.c: set image for pointer classes.
25217
25218 2002/03/19  Nick Drochak <ndrochak@gol.com>
25219
25220         * sysmath.c: Forgot one.
25221
25222 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
25223
25224         * sysmath.c: Avoid redefining existing names.
25225
25226 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
25227
25228         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
25229         handled by runtime as icall rather than dllimport from libm.so
25230         * file-io.c, file-io.h: fixed handle argument type.
25231
25232 2002-03-18  Dick Porter  <dick@ximian.com>
25233
25234         * reflection.c (mono_image_get_type_info): rename interface to
25235         iface, because of "#define interface struct" on windows.
25236
25237 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
25238
25239         * class.c, class.h: rename and export mono_ptr_class_get().
25240         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
25241         * reflection.c, reflection.h, icall.c: better/saner type name
25242         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
25243         method signatures.
25244
25245 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
25246
25247         * class.c (mono_class_init): removed hardcoded GHC_SLOT
25248
25249         * icall.c (ves_icall_InternalInvoke): impl.
25250
25251 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25252
25253         * reflection.c: output the interface map table, too.
25254
25255 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25256
25257         * class.c (class_compute_field_layout): separate computation of 
25258         static field layout
25259
25260 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
25261
25262         * icall.c: added System.Buffer support.
25263         * file-io.c: moved file icalls from PAL to FileStream.
25264
25265 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
25266
25267         * icall.c (ves_icall_System_Object_GetHashCode): impl.
25268
25269 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
25270
25271         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
25272
25273 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25274
25275         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
25276
25277 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25278
25279         * debug-helpers.{c,h}: moved here from monograph some useful functions
25280         to locate a method by name/signature in a class or image. Included
25281         also a small and flexible IL disassembler.
25282
25283 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25284
25285         * reflection.c: fixup tokens in methods with small header size, too.
25286
25287 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
25288
25289         * object.c (mono_string_to_utf8): remove assert(!error), instead
25290         print a warning. 
25291
25292 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
25293
25294         * icall.c: update to the new mono_Array_class_get interface.
25295
25296 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25297
25298         * appdomain.c, object.c: Boehm-GC enable.
25299         * icall.c: make get_data_chunk() support split data requests.
25300         Ensure a class is initialized in more cases. Return only the first
25301         property found in GetProperties() or the compiler gets confused. 
25302         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
25303         * reflection.h, reflection.c: add fixup mechanism for field and method
25304         tokens. Initialize assembly->typeref in a single place. Output
25305         properties after events. Support custom attributes for events, too.
25306         Typo fix for paramter custom attrs.
25307
25308 2002-03-07  Martin Baulig  <martin@gnome.org>
25309
25310         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
25311
25312 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
25313
25314         * class.c (mono_array_class_get): fix. for multi. dim. arrays
25315
25316 2002-03-06  Martin Baulig  <martin@gnome.org>
25317
25318         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
25319         non-zero lower bounds. See testcases #F10-#F13.
25320
25321 2002-03-05  Martin Baulig  <martin@gnome.org>
25322
25323         * exception.c (mono_get_exception_argument_out_of_range): New exception.
25324
25325         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
25326         ves_icall_System_Array_GetValue(), only calculate the absolute array position
25327         here.
25328         (ves_icall_System_Array_SetValue): Likewise.
25329         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
25330         as argument and does the actual work. This function is used when copying a
25331         multi-dimensional array.
25332         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
25333         now do all the widening conversions of value types.
25334         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
25335
25336 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25337
25338         * class.c: remove some magic numbers and use the smbolic names,
25339         instead. Added init_events() to load event info at class init time.
25340         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
25341         and mono_metadata_methods_from_event().
25342         * reflection.h, reflection.c: added support for writing out the evnets
25343         related information.
25344
25345 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
25346
25347         * reflection.h, icall.c: use a different method (GetInterfaces)
25348         to gather interface info and add isbyref, isprimitive and
25349         ispointer to the ves_icall_get_type_info() return value.
25350
25351 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
25352
25353         * class.h: stared adding support for events.
25354         * icall.c: split find_members implementation. Added debug icall to get
25355         the address of an object.
25356         * reflection.c: handle TypeBuilders in mono_type_get_object().
25357
25358 2002-03-01  Martin Baulig  <martin@gnome.org>
25359
25360         * icall.c (ves_icall_System_Array_GetLength): This must throw an
25361         ArgumentOutOfRangeException(), not an ArgumentException().
25362         (ves_icall_System_Array_GetLowerBound): Likewise.
25363         (ves_icall_System_Array_GetValue): Improved argument checking.
25364         (ves_icall_System_Array_SetValue): Improved argument checking.
25365
25366 2002-03-01  Martin Baulig  <martin@gnome.org>
25367
25368         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
25369         called with invalid arguments rather than just dying with g_assert().
25370         (ves_icall_System_Array_SetValue): Likewise.
25371         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
25372         raise a NotImplementedException instead.
25373         (ves_icall_System_Array_GetLength): Added argument checking.
25374         (ves_icall_System_Array_GetLowerBound): Added argument checking.
25375
25376 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
25377
25378         * object.h (mono_assert): new macros mono_assert and
25379         mono_assert_not_reached
25380
25381 2002-02-28  Martin Baulig  <martin@gnome.org>
25382
25383         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
25384         and "System::String::IsInterned" to "System::String::_IsInterned".
25385
25386 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
25387
25388         * icall.c: remove hacks for typebuilder. Added icall to create a
25389         modified type from a tybebuilder.
25390         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
25391         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
25392         to create a backing MonoClass for a TypeBuilder.
25393
25394 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25395
25396         * class.c, class.h: more refactoring of class init.
25397         Export mono_class_setup_mono_type() and mono_class_setup_parent().
25398
25399 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
25400
25401         * marshal.c, marshal.h: start of marshaling interface.
25402
25403 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25404
25405         * icall.c: fix order in assembly qualified name icall.
25406
25407 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25408
25409         * class.c: do not free str, since we store it in the hash table.
25410         * reflection.h: add label field to MonoILExceptionInfo.
25411         * reflection.c: handle references to more than one assembly. Handle
25412         case when there isn't a module created in the assembly.
25413
25414 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
25415
25416         * class.c: Fix typo. Start refactoring of class init code.
25417
25418 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
25419
25420         * appdomain.c: exit with 1 on error.
25421         * class.c: we already have the name in MonoClassField.
25422         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
25423         MonoStreamHeader instead of an offset of image->raw_metadata.
25424
25425 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
25426
25427         * appdomain.c (mono_init): Be even more descriptive about the error.
25428
25429 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
25430
25431         * appdomain.c: give the user an informative message when corlib can't
25432         be loaded.
25433
25434 2002-02-26  Martin Baulig  <martin@gnome.org>
25435
25436         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25437         New icall to get the time zone data.
25438
25439 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25440
25441         * reflection.c: set virtual and raw size of section correctly.
25442         * threads.c: transfer domain information to newly created threads.
25443
25444 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25445
25446         * class.c: when instancing a class in a domain, load the default
25447         vaules for static fields from the constant table. Fix System.Enum to
25448         not be an enum.
25449         * icall.c: implement Object::GetType() internalcall. Implemented
25450         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
25451         Fixed checking of binding flags in find_members().
25452         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
25453         * reflection.c: handle enumerations when writing to the constant
25454         table. Use a different object cache for types.
25455
25456
25457 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
25458
25459         * object.c (mono_object_isinst): fix for arrays
25460
25461         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
25462
25463 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25464
25465         * object.c: don't use mprotect ()  and fix intern pool hash table
25466         lookup for big endian systems.
25467
25468 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25469
25470         * icall.c: change type_is_subtype_of () signature.
25471
25472 2002-02-21  Mark Crichton  <crichton@gimp.org>
25473
25474         * rand.c, rand.h: Added random number generator for
25475         System.Security.Cryptography classes.
25476
25477         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
25478
25479         * icall.c: Added System.Security.Cryptography calls.
25480
25481 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
25482
25483         * class.c, icall.c, metadata.c: better support for pointer types.
25484         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
25485         * reflection.c: Add support for getting custom attrs for properties
25486         and simplify some code.
25487
25488 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
25489
25490         * icall.c: change getToken () and add custom attribute GetBlob()helper
25491         method.
25492         * reflection.h: add custom attrs array to the reflection builder structures.
25493         * reflection.c: encode and emit custom attributes for all the relevant
25494         reflection objects. Cache fieldref and methodref tokens. Change
25495         mono_image_create_token() interface to take a MonoDynamicAssembly.
25496         More complete custom attributes decoder. Load custom attributes for
25497         Assembly, Field, Method and Constructor objects, too. Make the
25498         returned array an Attribute[] one, not object[]. Added
25499         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
25500         custom attribute constructor.
25501
25502 2002-02-20  Dick Porter  <dick@ximian.com>
25503
25504         * icall.c:
25505         * rawbuffer.c:
25506         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
25507         problem code out for now).
25508
25509 2002-02-19  Radek Doulik  <rodo@ximian.com>
25510
25511         * object.c (mono_ldstr): use hash table to avoid multiple swapping
25512
25513 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
25514
25515         * icall.c: register the GetCustomAttributes method.
25516         * object.c, object.h: add mono_string_new_len ().
25517         * reflection.h, reflection.c: added mono_runtime_invoke(),
25518         mono_install_runtime_invoke(). Added
25519         mono_reflection_get_custom_attrs () to load custom attributes and
25520         create the attribute objects.
25521
25522 2002-02-19  Dick Porter  <dick@ximian.com>
25523         * threads-dummy-types.c:
25524         * threads-dummy-types.h:
25525         * threads-dummy.c:
25526         * threads-dummy.h:
25527         * threads-pthread-types.c:
25528         * threads-pthread-types.h:
25529         * threads-pthread.c:
25530         * threads-pthread.h:  Deleted obsolete files
25531
25532 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
25533
25534         * class.c (mono_class_vtable): runtime init the class when we
25535         allocate static class data.
25536
25537         * icall.c (ves_icall_System_Array_SetValue): check for null values.
25538
25539         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
25540         and String - but we will need generic marshalling support in the
25541         future. 
25542         (mono_init): set the domain name in a ms compatible way
25543
25544         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
25545         String[].
25546
25547 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
25548
25549         * object.c (mono_array_clone): use alloca() instead of g_malloc  
25550         for sizes
25551
25552         * appdomain.c (mono_domain_unload): impl.
25553
25554 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25555
25556         * appdomain.c, object.c: fix intern pool implementation.
25557         * class.c: fix alignment code.
25558
25559 2002-02-16  Radek Doulik  <rodo@ximian.com>
25560
25561         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
25562         and s2 > s1, just copy lower bytes to be compatible with little
25563         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
25564         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
25565
25566         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
25567         force big_endian to be 1 for big endian machines 
25568         (ves_icall_iconv_new_decoder): ditto
25569
25570 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
25571
25572         * socket-io.c (convert_sockopt_level_and_name): If the system
25573         doesn't define SOL_IP or SOL_TCP, get them by hand using
25574         getprotobyname() and caching the values (because this could be a
25575         slow operation).
25576         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
25577         Use the appropriate struct when the system does support it. Ie,
25578         not all systems have struct ip_mreqn so use struct ip_mreq when
25579         appropriate.
25580
25581 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
25582
25583         * reflection.c: handle finally clauses.
25584
25585 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
25586
25587         * socket-io.c: use g_snprintf() instead of snprintf.
25588
25589 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25590
25591         * reflection.c (mono_param_get_objects): Cast second argument to
25592         mono_method_get_param_names to a const char** to silence the
25593         compiler warning.
25594
25595         * appdomain.c (mono_domain_assembly_open): Put parens around the
25596         truth statement in the for-loop.
25597
25598         * unicode.c (iconv_convert): Got rid of a compiler warning about
25599         int i being unused when the system has a new iconv.
25600         (iconv_get_length): Same.
25601
25602         * image.c (load_class_names): Cast the second argument to
25603         g_hash_table_insert() to char* to hush compiler warnings about the
25604         arg being a const.
25605         (mono_image_open): Same here.
25606
25607         * socket-io.c: Don't conditionally include sys/filio.h or
25608         sys/sockio.h here anymore since we now get them from
25609         io-layer/io-layer.h
25610         (inet_pton): If the system doesn't support inet_aton, implement
25611         using inet_addr and also #define INADDR_NONE if it isn't defined
25612         by the system.
25613
25614 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
25615
25616         * metadata.c, metadata.h: added function to get packing and size info
25617         of a typedef.
25618         * reflection.h, reflection.c: handle field RVA data. Save info about
25619         the table layout if needed. Assign typedef indexes to all the types
25620         before dumping the info about them to avoid forward reference problems.
25621
25622 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
25623
25624         * socket-io.c (convert_sockopt_level_and_name): ifdef
25625         SO_ACCEPTCONN because it is not defined on my system (old debian)
25626
25627 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25628
25629         * opcode.c: use stddef.h to get NULL.
25630
25631 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
25632
25633         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
25634         for FIONBIO, FIONREAD and SIOCATMARK.
25635         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
25636         define INADDR_NONE and besides, inet_addr() is deprecated and
25637         should not be used. Use inet_pton() instead - it also has the
25638         added bonus that it can easily handle IPv6 addresses as well.
25639         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
25640
25641 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
25642
25643         * decimal.c: remove _MSC_VER conditional.
25644
25645 2002-02-13  Dick Porter  <dick@ximian.com>
25646
25647         * socket-io.c: 
25648         * icall.c: Internal calls for Blocking, Select, Shutdown,
25649         GetSocketOption and SetSocketOption
25650
25651 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25652
25653         * assembly.cs: better resolver: use it instead of some kludgy
25654         code.
25655
25656 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
25657
25658         * reflection.c: the best way to speed-up the compiler is to avoid
25659         infinite loops.
25660
25661 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
25662
25663         * class.c (mono_class_vtable): changed the object layout
25664         (obj->vtable->class). 
25665         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
25666
25667 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25668
25669         * assembly.c: look for assemblies in the assembly dir, too.
25670
25671 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25672
25673         * class.c: fix thinko in mono_class_from_type().
25674
25675 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25676
25677         * exception.h, exception.c: added TypeLoadException.
25678         * object.h, object.c: added mono_array_clone ().
25679         * icall.c: handle throwOnError in AssemblyGetType().
25680         Added Array.Clone().
25681         * opcode.h, opcode.c: use a single value for the opcode val.
25682         Compile fix for non-gcc compilers.
25683
25684 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
25685
25686         * opcodes.c, opcodes.h: export interesting info about opcodes.
25687
25688 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
25689
25690         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
25691         icalls. 
25692
25693         * class.c (class_compute_field_layout): set element_class for enums
25694         (mono_class_create_from_typedef): set element_class for normal classes
25695
25696         * icall.c (ves_icall_System_Enum_get_value): impl.
25697
25698         * class.c (mono_class_create_from_typedef): do not set valuetype
25699         flag for System.ValueType and System.Enum
25700
25701 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
25702
25703         * unicode.c (iconv_convert): fix big endian problem.
25704
25705 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25706
25707         * class.c: add asserts if we are ever going to scribble over memory.
25708         * socket-io.c: not all systems have AF_IRDA defined.
25709
25710 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
25711
25712         * class.c (class_compute_field_layout): do not consider static
25713         fields to compute alignment
25714
25715 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
25716
25717         * appdomain.c (mono_appdomain_get): impl.
25718         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
25719
25720 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
25721
25722         * icall.c: ignore "file://" prefix when loading an assembly.
25723
25724 2002-01-23  Dick Porter  <dick@ximian.com>
25725
25726         * socket-io.c:
25727         * icall.c:
25728         * Makefile.am: Added socket support
25729
25730 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25731
25732         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
25733         code back.  This should return the assemblies that are loaded by
25734         the runtime on behalf of an application domain. 
25735
25736         The current implementation is still broken, it just returns every
25737         assembly loaded, but until we get real applications domain this
25738         will do.
25739
25740 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
25741
25742         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
25743         AppDomain object.
25744
25745 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
25746
25747         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
25748         the mono_class_from_name lookup.
25749         (ves_icall_get_parameter_info): ditto.
25750         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
25751         method.
25752         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
25753
25754 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
25755
25756         * class.c: load also nested classes on class init.
25757         System.ValueType instance methods gets passed boxed
25758         values, unless methods in derived classed that get a pointer to the
25759         data.
25760         * icall.c: use better name parsing code in GetType().
25761         * image.c, image.h: add mono_image_loaded ().
25762         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
25763         * reflection.c, reflection.h: added mono_reflection_parse_type().
25764
25765 2002-01-22  Veronica De Santis <veron78@interfree.it>
25766
25767         * icall.c : Added mapping of internal calls for Manual and Auto reset events
25768         * threads.c : Added the implementation of internal calls for events
25769         * threads.h : Added prototypes of internal calls for events
25770         
25771 2002-01-21  Radek Doulik  <rodo@ximian.com>
25772
25773         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
25774
25775 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
25776
25777         * class.c (mono_class_init): set min_align to 1 (instead of 0)
25778         (mono_class_value_size): use min_align
25779
25780 2002-01-20  Dick Porter  <dick@ximian.com>
25781
25782         * threads.h:
25783         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
25784         so it compiles on w32.
25785
25786 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
25787
25788         * metadata.c (mono_type_stack_size): impl.
25789
25790         * class.c (mono_class_get_field): impl. memberref token
25791
25792 2002-01-16 Veronica De Santis <veron78@@interfree.it>
25793
25794         * icall.h : Added the internal calls mapping for CreateMutex_internal
25795                     and ReleaseMutex_internal.
25796         * threads.h : Added the prototype of mutexes internal calls.
25797         * threads.c : Added the implementations of mutexes internal calls.
25798
25799 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
25800
25801         * metaparse.h: removed unused file.
25802         * reflection.c, reflection.h: added stream_data_align () function 
25803         to align data in streams and keep stream aligned. Add support for
25804         exception support in method headers.
25805
25806 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
25807
25808         * unicode.c: make iconv_convert () return the number of bytess written
25809         in the output buffer.
25810
25811 2002-01-15  Dick Porter  <dick@ximian.com>
25812         * threads.c: Make the runtime's idea of infinite timeouts coincide
25813         with the class library's
25814
25815         Fix a particularly egregious bug in mono_thread_cleanup(). That
25816         code was so utterly bogus it must have been written on a Monday.
25817
25818 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
25819
25820         * reflection.h: add subtypes field to TypeBuilder.
25821         * reflection.c: encode constants for literal fields.
25822         Handle subtypes. Fix user string token (and add a zero byte)
25823         at the end.
25824         
25825 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
25826
25827         * class.c (mono_class_init): bug fix: assign slot numbers for
25828         abstract methods.
25829
25830 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25831
25832         * reflection.c: don't try to output a code RVA for abstract methods.
25833         Small fixes for method header format. Output parameter info to the
25834         ParamDef table. Save method overriding info to MethodImpl table.
25835         Fix property support. Allow typedef.extends to be a type in the
25836         building assembly.
25837         * verify.c: fix off-by-one error.
25838
25839 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
25840
25841         * class.c: fix mono_class_from_mono_type () for szarray types.
25842         Remove unused cache check in mono_class_from_type_spec().
25843         * icall.c: *type_from_name () functions handle simple arrays and byref.
25844         * reflection.c: handle byref and szarray types. Handle methods without
25845         body (gets P/Invoke compilation working). Handle types and fields in
25846         get_token ().
25847         * reflection.h: add rank to MonoTypeInfo.
25848
25849 2002-01-10  Dick Porter  <dick@ximian.com>
25850
25851         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
25852         internal calls
25853
25854 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
25855
25856         * icall.c: initialize class in type_from_handle ().
25857         Loop also in parent classes for get_method ().
25858         * reflection.c: properly encode class and valuetype types.
25859         Start on encoding TypeBuilder types. Handle fieldrefs.
25860         Use correct length when registering a user string.
25861         Handle ConstructorBuilder and MonoMethod in get_token ().
25862         Make mono_type_get_object () aware of cached types.
25863         * object.c: back out change to mono_string_new ().
25864
25865 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
25866         * object.c: mono_string_new should return a NULL when the string 
25867         passed in is NULL -- not try to deference it.
25868         
25869 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
25870
25871         * icall.c: hack to make IsSubType work for TypeBuilders.
25872         * reflection.c: emit constructors before methods.
25873         Retrieve param names in mono_param_get_objects().
25874
25875 2002/01/05  Nick Drochak  <ndrochak@gol.com>
25876
25877         * Makefile.am: fix list of headers and sources so automake 1.5
25878         doesn't complain. Removed \# at end of list.
25879
25880 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
25881
25882         * reflection.c: get token for a method ref. Set return type of
25883         constructor to void.
25884         * loader.c: debug message.
25885         * class.c: typo fix.
25886
25887 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
25888
25889         * icall.c: fix array init with rank > 1. FindMembers
25890         loops in parent class as well.
25891         * image.c: do not insert nested types in name cache.
25892         * reflection.c: warning fix.
25893         * reflection.h: add override method (for interface impl).
25894
25895 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
25896
25897         * metadata.c: fix customattr decoding.
25898
25899 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
25900
25901         * rawbuffer.cs: Added native Win32 implementation, avoids using
25902         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
25903
25904 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
25905
25906         * class.c: make the low-level routines handle the cache.
25907
25908 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
25909
25910         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
25911
25912 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
25913
25914         * class.c: fix mono_array_element_size() for objects.
25915         * class.h, class.c: add properties to MonoClass and load them
25916         at init time.
25917         * icall.c: check with isinst() when assigning a value to an array
25918         instead of requiring the classes to match exactly.
25919         Implemented icall for System.Type::GetType().
25920         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
25921         enums. Handle bindingflags when looking for methods and fields.
25922         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
25923         and mono_metadata_methods_from_property().
25924         * reflection.h, reflection.c: added structures for propreties,
25925         parameters and enums. Implemented mono_property_get_object() and
25926         mono_param_get_objects().
25927
25928 2001-12-18  Dick Porter  <dick@ximian.com>
25929
25930         * file-io.c: Use mono_string_to_utf16() instead of
25931         mono_string_chars()
25932
25933         * object.c: Added mono_string_to_utf16(), which copies the non
25934         NULL-terminated MonoString into a new double-null-terminated
25935         buffer.
25936
25937 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
25938
25939         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
25940
25941 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
25942
25943         * file-io.c: raise exceptions if handle is invalid.
25944
25945 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
25946
25947         * assembly.c: yet another check for mscorlib.
25948         * class.c, class.h: load nesting info for classes.
25949         * icall.c: many new functions to support the Reflection classes.
25950         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
25951         * reflection.h, reflection.c: mono_image_create_token(),
25952         mono_assembly_get_object(), mono_type_get_object(),
25953         mono_method_get_object(), mono_field_get_object(): methods to return
25954         objects that parallel the C representation of assemblies, types,
25955         methods, fields.
25956
25957 2001-12-11  Dick Porter  <dick@ximian.com>
25958
25959         * icall.c:
25960         * file-io.c: Internal calls for file IO.
25961
25962 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
25963
25964         * tabledefs.h: missing FileAttributes.
25965         * verify.h, verify.c: use is_valid_string () to simplify and check for
25966         valid strings more correctly. Fix warnings and speeling.
25967         Check more tables: Filed, File, ModuleRef, StandAloneSig.
25968         Check code: branches, maxstack, method calls.
25969
25970 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
25971
25972         * object.c (mono_object_allocate): removed static, so that the jit
25973         can allocate value types.
25974
25975         * icall.c (ves_icall_System_DateTime_GetNow): impl.
25976
25977 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
25978
25979         * class.c: init enum types right away and register the
25980         token->MonoClass map in mono_class_create_from_typedef ().
25981         * verify.h, verify.c: first cut of the verifier.
25982         * pedump.c: add --verify switch to verify metadata tables.
25983         * tabledefs.h: add some missing enums.
25984
25985 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
25986
25987         * class.c (mono_install_runtime_class_init): impl.
25988         (mono_class_init): renamed mono_class_metadata_init to
25989         mono_class_init, also removed the metadata_inited flag
25990
25991         * object.c (mono_object_isinst): use faster algorithm
25992
25993 2001-11-30  Radek Doulik  <rodo@ximian.com>
25994
25995         * mono-endian.h: reverted last change
25996         added function prototypes
25997
25998         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
25999         add mono-endian.c back
26000
26001         * mono-endian.c: returned back, as Paolo pointed out, it's needed
26002         for unaligned access, I've mistaked it with endianess. I am
26003         sorry.
26004         (mono_read16): fix reverted endianess
26005         (mono_read64): ditto
26006         (mono_read32): ditto
26007
26008 2001-11-30  Dick Porter  <dick@ximian.com>
26009
26010         * exception.c: Implement mono_exception_from_name()
26011
26012 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26013
26014         * metadata.h, metadata.c: remove params_size and locals_size and their
26015         calculation from the metadata code: they are only usefult to the
26016         interp.
26017
26018 2001-11-29  Radek Doulik  <rodo@ximian.com>
26019
26020         * object.c (mono_ldstr): swap bytes here, it's probably not the
26021         best place, but works for me now, I'll redo it once I know mono
26022         better, also note that I add PROT_WRITE and don't reset back, also
26023         note that it's only affects big endians, so x86 should be OK
26024
26025         * mono-endian.h (read16): use just glib macros for both endians
26026
26027         * mono-endian.c: removed as glib macros are used in in
26028         mono-endian.h so we don't need to care about endianess for read
26029         macros as glib does that for us already
26030
26031 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
26032
26033         * class.h, class.h: take minimum alignment into consideration so
26034         that the fields of a class remain aligned also when in an array.
26035
26036 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26037
26038         * loader.h, loader.c: add mono_method_get_param_names().
26039         * class.c: 0-init class fields.
26040
26041 2001-11-26  Dick Porter  <dick@ximian.com>
26042
26043         * icall.c:
26044         * threads-types.h:
26045         * threads.c: New file that handles System.Threading on all platforms
26046
26047         * object.c: 
26048         * object.h: Remove the synchronisation struct from MonoObject,
26049         replace it with a pointer that gets initialised on demand
26050
26051         * Makefile.am: Replace all the system-specific threading code with
26052         a single file that uses the new wrapper library
26053
26054 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
26055
26056         * class.c, class.h: add mono_install_trampoline() so that the runtime
26057         can register a function to create a trampoline: removes the ugly
26058         requirement that a runtime needed to export arch_create_jit_trampoline.
26059         * object.h, object.c: added mono_install_handler() so that the runtime
26060         can install an handler for exceptions generated in C code (with
26061         mono_raise_exception()). Added C struct for System.Delegate.
26062         * pedump.c: removed arch_create_jit_trampoline.
26063         * reflection.c: some cleanups to allow registering user strings and
26064         later getting a token for methodrefs and fieldrefs before the assembly
26065         is built.
26066         * row-indexes.h: updates and fixes from the new ECMA specs.
26067
26068 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
26069
26070         * class.h, class.c: add enum_basetype field to MonoClass.
26071         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
26072         to get index in the constant table reated to a field, param or
26073         property.
26074         * reflection.h, reflection.c: handle constructors. Set public-key and
26075         version number of the built assembly to 0.
26076         * row-indexes.h: update from new ECMA spec.
26077
26078 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26079
26080         * class.h, class.c: add a max_interface_id to MonoClass.
26081         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
26082         since it's used to do that. Added mono_type_type_from_obj().
26083         Make GetType() return NULL instead of segfaulting if the type was not
26084         found. Handle simple arrays in assQualifiedName.
26085         * object.h: add a struct to represent an Exception.
26086         * reflection.c: output call convention in method signature.
26087         Add code to support P/Invoke methods and fixed offsets for fields.
26088
26089 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
26090
26091         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
26092         the value.
26093         * icall.c: use mono_array_addr instead of array->vector: fixes the
26094         reflection image writing.
26095         * reflection.c: init call convention byte to 0 in method signature.
26096         Encode the property signature. Don't output property-related methods
26097         twice. Really process the properties for a type (don't cast a field to
26098         a property, my mom always told me that).
26099         Fix 64 bit issues in pointer alignment in a different and more
26100         readable way.
26101
26102 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
26103
26104         * loader.h: Removed type class from MonoDefaults, added monotype
26105
26106         * loader.c: Loaded MonoType, removed loading of Type
26107
26108         * icall.c (my_mono_new_object): Now returns a System.MonoType,
26109         and fills in System.Type._impl with a RuntimeTypeHandle rather
26110         than the actual MonoClass *
26111
26112         (ves_icall_type_from_handle): change from type_class to
26113         monotype_class
26114
26115         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
26116         implemented
26117
26118         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
26119         implemented
26120
26121         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
26122
26123         (ves_icall_System_Reflection_Assembly_GetType): implemented
26124
26125         (ves_icall_System_MonoType_assQualifiedName): implemented
26126
26127         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
26128
26129 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
26130
26131         * assembly.c (mono_assembly_open): Implement a cache for the
26132         assemblies. 
26133
26134         (mono_assembly_close): only destroy the assembly when the last
26135         reference is gone.
26136         
26137 2001-11-09  Dick Porter  <dick@ximian.com>
26138
26139         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
26140
26141 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
26142
26143         * class.c (mono_class_metadata_init): bug fix: compute the right slot
26144
26145 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
26146
26147         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
26148         from Martin Weindel.
26149         * object.h: add mono_string_chars ().
26150
26151 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
26152
26153         * reflection.c (build_compressed_metadata): Eliminates warnings
26154         and uses 64-bit clean code.
26155
26156         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
26157         (mono_type_equal): Change signature to eliminate warnings.
26158
26159 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
26160
26161         * icall.c, loader.c: remove the internalcall array constructors.
26162         Changes to match the new MonoArray structure.
26163         * object.h, object.c: an array object doesn't allocate an extra
26164         vector. Add mono_array_new_full () to create jagged arrays easily.
26165
26166 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
26167
26168         * metadata.h, metadata.c: add mono_metadata_field_info () to
26169         retreive all the info about a field from vairous tables.
26170         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
26171         * class.h, class.c: augment MonoClassField with more info.
26172         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
26173         policy and load a field's RVA if needed.
26174
26175 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
26176
26177         * class.c (mono_class_metadata_init): create a trampoline for all
26178         virtual functions instead of actually compiling them.
26179
26180 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
26181
26182         * class.h, class.c: include name in MonoClassField.
26183         * class.c: fix fundamental type of System.Object and System.String.
26184         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
26185         tokens in ldtoken.
26186         * icall.c: remove internalcalls for the Reflection stuff that is now
26187         done in C# code.
26188         * loader.c: mono_field_from_memberref () implementation.
26189         * mono-endian.c: thinko (s/struct/union/g).
26190         * object.c, object.h: make the mono_string_* prototypes actually use
26191         MonoString instead of MonoObject.
26192         * reflection.c, reflection.h: updates for changes in the reflection
26193         code in corlib: we use C structures that map to the actual C# classes.
26194         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
26195         fat method header if needed and use the info from the ILGenerator for
26196         methods. Handle fields in types. Misc fixes.
26197
26198 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
26199
26200         * class.c (mono_class_metadata_init): bug fix: always allocate
26201         space for static class data
26202
26203 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
26204
26205         * class.c (mono_compute_relative_numbering): use relative
26206         numbering to support fast runtime type checks.
26207
26208 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
26209
26210         * class.c (mono_class_create_from_typeref): added debugging output
26211         to print class name when MonoDummy is returned instead of real class
26212
26213 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
26214
26215         * class.c (mono_class_metadata_init): interface offset table now
26216         contains pointers into the vtable - this is more efficient for the jit
26217
26218 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
26219
26220         * class.c (mono_class_metadata_init): use a temporary vtable (the
26221         old algorithm only worked for the interpreter, but not for the jit)
26222
26223 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
26224
26225         * loader.c (method_from_memberref): use mono_class_get to get the
26226         class of an array instead of using System.Array directly.
26227         (mono_get_method): also add MEMBERREF methods to the method cache
26228         which usefull for arrays.
26229
26230 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
26231
26232         * pedump.c (arch_compile_method): added to compute vtable entry
26233
26234         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
26235         number of interfaces.
26236         
26237         * class.h: merged MonoArrayClass into MonoClass
26238
26239         * class.c (mono_class_create_from_typedef): compute the vtable size and
26240         allocate space to include the vtable inside MonoClass
26241         (mono_class_metadata_init): initialize the vtable
26242
26243 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
26244
26245         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
26246         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
26247         * image.c: endian fixes by Laurent Rioux.
26248         * object.h, object.c: rename MonoStringObject to MonoString and
26249         MonoArrayObject to MonoArray. Change some function names to conform to
26250         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
26251         guint16* as first argument, so don't use char*.
26252         Provide macros to do the interesting things on arrays in a portable way.
26253         * threads-pthread.c: updates for the API changes and #include <sched.h>
26254         (required for sched_yield()).
26255         * icall.c: updates for the API changes above.
26256         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
26257         platforms that need them.
26258
26259 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26260
26261         * class.c: set the correct type for all the fundamental
26262         type when loading the class.
26263
26264 2001-10-05  Dick Porter  <dick@ximian.com>
26265
26266         * threads-pthread.c (pthread_mutex_timedlock): Simple
26267         compatibility version for C libraries that lack this call.
26268
26269 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26270
26271         * class.c: MonoTypes stored in MonoClass are stored as
26272         fundamental MonoTypes when the class represents a
26273         fundamental type (System.Int32, ...).
26274         The TypeHandle return by ldtoken is a MonoType*.
26275         * icall.c: ves_icall_get_data_chunk () write out all the
26276         PE/COFF stuff. Implement ves_icall_define_method (),
26277         ves_icall_set_method_body (), ves_icall_type_from_handle ().
26278         * image.c: properly skip unknown streams.
26279         * loader.h, loader.c: add type_class to mono_defaults.
26280         * metadata.c, metadata.h: export compute_size () as
26281         mono_metadata_compute_size () with a better interface.
26282         Typo and C&P fixes.
26283         * pedump.c: don't try to print the entry point RVA if there is no entry point.
26284         * reflection.c, reflection.h: many cleanups, fixes, output method
26285         signatures and headers, typedef and typeref info, compress the metadata
26286         tables, output all the heap streams, cli header etc.
26287         * row-indexes.h: typo fixes.
26288
26289 2001-10-04  Dick Porter  <dick@ximian.com>
26290
26291         * object.h: Add a synchronisation mutex struct to MonoObject
26292
26293         * object.c (mono_new_object): Initialise the object
26294         synchronisation mutexes
26295
26296         * icall.c: System.Threading.Monitor internal calls
26297         
26298         * threads-pthread.h:
26299         * threads-pthread.c: System.Threading.Monitor internal calls
26300
26301         * threads-types.h: New file, includes the system-specific thread
26302         structures
26303         
26304         * threads-pthread-types.h:
26305         * threads-pthread-types.c: New files, handle pthread-specific
26306         synchronisation types
26307
26308         * threads-dummy-types.h: 
26309         * threads-dummy-types.c: New files of dummy support for
26310         thread-specific types
26311
26312         * metadata.c:
26313         * image.c:
26314         * pedump.c: include mono-endian.h not endian.h
26315         
26316         * Makefile.am: More threads files.
26317         Name mono-endian.h not endian.h
26318
26319 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
26320
26321         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
26322         stuff and implement a few more bits.
26323         * icall.c: a field needs to be dereferenced twice. Do not use the same
26324         name for two variables in the same scope.
26325         * image.c, image.h: cleanups.
26326
26327 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
26328
26329         * class.c (mono_class_metadata_init): bug fix: compute the right size
26330
26331 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
26332
26333         * icall.c: implemented some of the Reflection internalcalls.
26334         * image.c, image.h: start writing out the PE/COFF image.
26335         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
26336         that does the reverse than decode_blob_size ().
26337         * object.c: use mono_metadata_encode_value (). Move here
26338         temporary implementation of mono_string_to_utf8 ().
26339         * rawbuffer.c: make malloc_map static.
26340
26341 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26342
26343         * metadata.c: fix type comparison for arrays.
26344         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
26345         Added a couple of new classes to monodefaults.
26346         * icall.c: added a couple of Reflection-related internalcalls.
26347         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
26348         Added a byval_arg MonoType to MonoClass.
26349
26350 2001-09-28  Dick Porter  <dick@ximian.com>
26351
26352         * icall.c:
26353         * threads-pthread.h: 
26354         * threads-pthread.c: Implemented internal calls for
26355         LocalDataStoreSlot operations.  Applied mutexes around all shared
26356         data.  Reworked the thread creation and Start() operations to
26357         avoid a race condition.
26358         
26359         * threads-dummy.h:
26360         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
26361
26362 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
26363
26364         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
26365
26366 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
26367
26368         * class.c, loader.c: warn and return NULL instead of erroring out.
26369         * icall.c: added System.AppDomain::getCurDomain().
26370         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
26371
26372 2001-09-25  Dick Porter  <dick@ximian.com>
26373
26374         * threads-pthread.h:
26375         * threads-pthread.c: Implemented timed thread joining and added
26376         System.Threading.Thread::Join_internal internal call
26377
26378         * icall.c: Added System.Threading.Thread::Join_internal internal call
26379
26380         * threads-dummy.h:
26381         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
26382
26383 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
26384
26385         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
26386         mono_string_intern () to implement the semantics of the ldstr opcode
26387         and the interning of System.Strings.
26388         * icall.c: provide hooks to make String::IsIntern and String::Intern
26389         internalcalls.
26390
26391 2001-09-23  Dick Porter  <dick@ximian.com>
26392
26393         * threads-dummy.c: 
26394         * threads-dummy.h: New files of dummy threading routines
26395
26396         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
26397         support code based on system specifics
26398
26399         Rename PTHREAD_LIBS to THREAD_LIBS
26400         
26401 2001-09-23  Dick Porter  <dick@ximian.com>
26402
26403         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
26404         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
26405         internal calls.
26406         (mono_thread_init): Set up a Thread object instance to return when
26407         the main thread calls Thread.CurrentThread
26408         (mono_thread_cleanup): Wait for all subthreads to exit
26409
26410         * icall.c: New internal calls for System.Threading.Thread::Sleep
26411         (including Schedule) and CurrentThread
26412
26413         * threads.h: New file, to insulate thread-specific stuff from the
26414         rest of the code
26415
26416 2001-09-21  Dick Porter  <dick@ximian.com>
26417
26418         * threads-pthread.h: 
26419         * threads-pthread.c: New file, for handling pthreads-style
26420         threading support.  Start() now starts a new thread and executes
26421         the ThreadStart delegate instance.
26422
26423         * icall.c: Added the internalcall for
26424         System.Threading.Thread::Start_internal
26425
26426         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
26427
26428 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
26429
26430         * loader.c: work around the different signatures for delegates
26431         constructors csc generates in compiled code vs the ones compiled in mscorlib.
26432
26433 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26434
26435         * class.h, class.c: add mono_class_get_field_from_name ().
26436         * *: Fix C comments and other ANSI C issues.
26437
26438 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
26439
26440         * endian.h, assembly.c: fix some endianness issues.
26441
26442 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
26443
26444         * loader.h, load.c: add delegate_class to mono_defaults.
26445         Handle runtime provided methods in mono_get_method ().
26446
26447 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
26448
26449         * loader.c (mono_get_method): use pinvoke for internal call
26450
26451         * icall.c: use pinvoke for internal call
26452
26453         * loader.c (method_from_memberref): set the method name
26454
26455 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
26456
26457         * metadata.c: help the compiler generate better code for
26458         mono_class_from_mono_type ().
26459
26460 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
26461
26462         * class.c (mono_class_metadata_init): delayed computing of the
26463         class size to mono_class_metadata_init ()
26464
26465 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
26466
26467         * class.c, class.h: add an interfaces member to MonoClass.
26468         * image.c, image.h: add assembly_name field to MonoImage
26469         from the assembly table.
26470         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
26471
26472 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26473
26474         * class.c: Handle Array in mono_class_from_mono_type ().
26475         * metadata.c, pedump.c: some endian fixes.
26476
26477 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
26478
26479         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
26480         * metadata.c: fix small problem introduced with the latest commit.
26481
26482 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
26483
26484         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
26485         We don't need a MonoMetadata pointer anymore to compare signatures in
26486         mono_metadata_signature_equal (), update callers.
26487         Reduced memory usage an number of allocations for MonoMethodHeader and
26488         MonoMethodSignature.
26489
26490 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
26491
26492         * metadata.c: added compare for szarray.
26493
26494 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
26495
26496         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
26497         and add a couple more types to it and mono_defaults. Give an hint on
26498         classes that need implementing in our corlib and are referenced
26499         in mscorlib.
26500
26501 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
26502
26503         * class.h, class.c: keep track if a class is also an Enum.
26504         * loader.c: Implement a couple more types for use in libffi
26505         marshalling. Gives better diagnostics when failing to dlopen
26506         a library. Set method->klass for P/Invoke methods, too.
26507
26508 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
26509
26510         * class.c, class.h: add a MonoType this_arg to MonoClass that
26511         represents a pointer to an object of the class' type that
26512         can be used by the interpreter and later the type cache.
26513         Add best guess alignment info for valuetype objects.
26514
26515 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
26516
26517         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
26518         into MonoType: one less level of indirection and allocation and
26519         simplifies quite a bit of code. Added cache for MonoTypes that are
26520         used frequently, so that we don't need to allocate them all the time.
26521
26522 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
26523
26524         * class.c (mono_class_create_from_typedef): System.Enum is also a
26525         value type, although it does not derive from System.ValueType
26526         (maybe a bug in the ms compiler?)
26527
26528         * metadata.c (mono_type_size): return the right size for value types
26529
26530         * loader.c (mono_get_method): only initialize method header if not abstract
26531
26532         * class.c (mono_class_from_mono_type): use mono_default values. 
26533
26534 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
26535
26536         * *: use MonoClass pointers instead of <type_tokens>
26537         
26538         * class.h: new flag: metadata_inited.
26539
26540         * class.c (mono_class_metadata_init): impl.
26541         (mono_class_instance_size): impl.
26542         (mono_class_data_size): impl.
26543
26544 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
26545
26546         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
26547         MonoClass now has the name and name_space fields. 
26548         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
26549         mono_get_method () takes and optional MonoClass as argument.
26550         Removed mono_typedef_from_name() and added mono_class_token_from_name()
26551         instead that takes advantage of a map from class names to typedef
26552         tokens in MonoImage.
26553
26554 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
26555
26556         * metadata.c: zero is not a valid alignment boundary.
26557         Merge MONO_TYPE_VOID in default decoding code.
26558
26559 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
26560
26561         * image.h: merged MonoMetadata into MonoImage
26562
26563         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
26564         identify the type of elements.
26565
26566 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
26567
26568         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
26569         * cil-coff.h: split MonoMSDOSHeader and add size info.
26570         * image.c: add some consistency checks.
26571         * metadata.c: fix row size computation: one programmer
26572         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
26573         add explanation for the locator routine.
26574         Fix decoding of size in method header.
26575         
26576 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
26577
26578         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
26579         (g_concat_dir_and_file): Bring g_concat_dir_and_file
26580         function from gnome-libs.  This uses the right path separator
26581         based on the OS, and also works around a bug in some systems where
26582         a double slash is not allowed. 
26583         (default_assembly_name_resolver): Use g_concat_dir_and_file
26584         (mono_assembly_open): ditto.
26585
26586 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
26587
26588         * metadata.c (mono_metadata_signature_equal): impl.
26589
26590         * *: void is now a realy MonoType (instead of using NULL)
26591         
26592         * metadata.c (do_mono_metadata_parse_type): use
26593         mono_metadata_parse_type to parse void value.
26594
26595 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
26596
26597         * metadata.c, metadata.h: in the signature and method header store
26598         only the space required for holding the loca vars and incoming arguments.
26599
26600 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
26601
26602         * metadata.c (do_mono_metadata_parse_type): treat void like any
26603         other type (instead of assigning NULL);
26604
26605 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
26606
26607         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
26608
26609 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
26610
26611         * image.c (do_mono_image_open): added a cache for arrays.
26612
26613 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26614
26615         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
26616         decode a single column from a row in a metadata table and changes
26617         to take advantage of it in the typedef locator (gives a nice speed up).
26618         Store offset info for function params.
26619
26620 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
26621
26622         * image.h (MONO_IMAGE_IS_CORLIB): removed 
26623
26624 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
26625
26626         * assembly.c: how could mono_assembly_close () had ever worked?
26627         * metadata.c, metadata.h: provide offset info for local vars.
26628         Implement mono_type_size () to take care of alignment as well
26629         as size (it was mono_field_type_size in cli/class.c before).
26630
26631 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
26632
26633         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
26634
26635         * assembly.h (CORLIB_NAME): set to corlib.dll
26636
26637         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
26638
26639 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
26640
26641         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
26642         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
26643         tokentype.h: massive namespace cleanup.
26644
26645 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
26646
26647         * metadata.h, metadata.c: decode exception clauses when parsing method header.
26648
26649 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
26650
26651         * metadata.c (mono_metadata_free_type): added check for type !=
26652         NULL (void) before calling mono_metadata_free_type()
26653
26654 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
26655
26656         * metadata.h, row_indexes.h: added header with enumerations to use
26657         to index in the columns from tables in metadata and to decode coded
26658         tokens: we should start using this instead of embedding magic numbers
26659         all over the code.
26660
26661 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
26662
26663         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
26664         Move metadata_t info from cli_image_info_t to MonoImage, where
26665         it's easily accessible. Changed all the uses accordingly.
26666         Added the method and class caches to MonoImage.
26667         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
26668         and mono_metadata_decode_value () signature to be more consistent
26669         with the other parse functions (and simplify code). Taken advantage
26670         of zero-length array allocation with GCC. Removed reduntant (and
26671         wrong) MonoFieldType struct and use MonoParam instead. Changed
26672         mono_metadata_parse_field_type () to use common code for parsing.
26673         Added mono_metadata_typedef_from_field () and
26674         mono_metadata_typedef_from_method () to lookup a typedef index from a
26675         field or method token.
26676         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
26677
26678 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
26679
26680         * metadata.c (mono_metadata_parse_field_type): Implement. 
26681         (do_mono_metadata_parse_type): Split engine from
26682         mono_metadata_parse_type, so that we can create smaller structures
26683         for things that just have one pointer to the MonoType (look at
26684         the MonoFieldType)
26685
26686 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
26687
26688         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
26689         as Jan Gray found out, it is incorrect. 
26690
26691 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
26692
26693         * assembly.c: Implement asssembly loading.  This loads an image
26694         and loads all the referenced assemblies.  Come to think of it, we
26695         could always do lazy loading of the assemblies. 
26696
26697         * image.c (mono_image_open): Keep loaded images in a hashtable.
26698
26699         * image.h (MonoImage): Add reference count.
26700
26701 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
26702
26703         * assembly.c (mono_assembly_open): Keep track of the file name in
26704         case the assembly has no ASSEMBLY table.
26705
26706         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
26707         from get.c here.
26708
26709 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
26710
26711         * metadata.c, metadata.h: decode local vars in method header
26712         parse function. Change callers accordingly.
26713
26714 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
26715
26716         * metadata.h, cil-coff.h: protect against multiple inclusion.
26717         Added some new structures to hold information decoded from metadata:
26718         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
26719         and relevant decoding/free functions.
26720         * metadata.c: implement decoding functions. Add warning for out of bounds
26721         index in mono_metadata_locate(). Implement mono_get_method () to retreive
26722         all the info about a method signature and invocation. Remove check on
26723         uninitialized local var in parse_mh() and fix memory leak.
26724
26725 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
26726
26727         * metadata.h: More macros.
26728
26729         * tokentype.h: New file.
26730
26731 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
26732
26733         * assembly.c: added a consistency check and initialize
26734         some structures with g_new0().
26735         * metadata.c: fixed a couple more bugs in table size computation
26736         and add other checks for out-of bound access to metadata.
26737
26738 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
26739
26740         * metatada.c: fix bugs computing table sizes. Spew a
26741         warning when index in string heap is out of bounds.
26742
26743 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
26744
26745         * metadata.h: Add a couple of macros to manipulate tokens. 
26746
26747 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
26748
26749         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
26750         cli_section_tables).
26751
26752 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
26753
26754         * metadata.c (mono_metadata_user_string): New function, provides
26755         access to the UserString heap. 
26756
26757 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
26758
26759         * metadata.c: Add inline documentation.
26760
26761 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
26762
26763         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
26764         files. 
26765
26766 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
26767
26768         * typeattr.h: New file, TypeAttribute flags. 
26769
26770 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
26771
26772         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
26773         mono_assembly_ensure_section): Section loading code.
26774         (load_section_tables): Load the sections.
26775
26776         * mono/metadata/metadata.c (mono_metadata_locate_token,
26777         mono_metadata_locate): Functions to locate the information
26778         definition given a token or a table and an index.
26779         (mono_metadata_compute_table_bases): New.
26780         (compute_size): New function to compute the sizes of the various
26781         tables.
26782
26783         * mono/metadata/metadata.h: Finish listing the different index
26784         types. 
26785
26786         * mono/metadata/pedump.c: Improve to dump new information.
26787
26788 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
26789
26790         * mono/metadata/metadata.c: Entered all the tables matching
26791         Beta2. 
26792
26793         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
26794
26795
26796